2个版本
| 0.1.1 | 2023年3月6日 | 
|---|---|
| 0.1.0 | 2023年1月3日 | 
#1269 在 硬件支持
10KB
141 行
iceprogrs
针对Lattice iCE40系列FPGA的基于SPI的SRAM编程器。
描述
它的工作方式类似于 iceprog,但不需要在常用开发板上提供的FTDI芯片。它通过Linux内核驱动程序spidev和gpiochip使用GPIO线和SPI设备,使用spidev和gpiod-rs存储库。
用法
您需要以下内容
- 一个由spidev驱动的SPI端口,其中- SCK(时钟)线连接到iCE40的- SPI_SCK引脚
- MOSI(或数据输出)线连接到iCE40的- SPI_SI引脚
 
- 两个GPIO线- 一个连接到SS_B引脚
- 一个连接到CREST引脚
 
- 一个连接到
由于该信号在传输期间需要保持低电平,因此不使用SPI从机选择线。在正常的SPI使用中,从机选择线在数据包(字节)之间释放。
但是,在许多设备中,您可以配置您喜欢的引脚,因此您可以使用标有SS的引脚作为GPIO引脚。
使用Beaglebone Black和Lattice iCE40HX8K扩展板的示例
板上的修改
- 移除所有跳线
- 使用热风枪或加热镊子移除R1、R4、R5和R6
- 焊接+5V和地线。PCB的另一侧USB连接器下方有一个大的5V迹线,刮除焊膏以到达铜,找到一个方便的地点。
- 将线焊接到R1(以获得SCK)、R4(以获得SS_B)、R5(以获得CDONE)和R6(以获得CREST)的北端焊盘
- 将CDONE上拉到VCCIO(用于SPI的电压,通常是3.3V)
- 将SDO连接到J6的4号引脚(西北角)
引脚配置
按照以下方式配置您的引脚。我建议在Beaglebone附近放置100到150欧姆的串联电阻以提供保护和信号完整性。
config-pin P9.17 gpio
config-pin P9.18 spi
config-pin P9.21 spi
config-pin P9.22 spi_sclk
config-pin P9.23 gpio
按照以下方式连接
| BBone引脚 | 类型 | iCE40引脚 | 
|---|---|---|
| P9.17 | GPIO | SS_B | 
| P9.18 | SPI | SDO | 
| P9.22 | SPI | SCK | 
| P9.23 | GPIO | CREST | 
| P9.2 | 地 | GND | 
运行命令
./iceprogrs --bitstream blinky.bin --spi-speed 5000000
使用5 MHz频率,配合20至30厘米的自制线缆工作。
作者
伯克·杜拉克 bd@exhrd.fr
依赖项
约2MB
约39K SLoC