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厘米的自制线缆工作。
作者
伯克·杜拉克 [email protected]
依赖项
约2MB
约39K SLoC