16. SPI接口 读写SPI FLASH模块¶
本次实验使用的flash为野火小智W25Q64模块:
W25Q64模块和扩展板接线对照表如下:
W25Q64模块 |
扩展板SPI接口丝印 |
---|---|
3V3 |
3V3 |
GND |
GND |
CS |
P13 |
DO |
DO |
DI |
DI |
CLK |
CLK |
其中CS使用扩展GPIO的P13。
以鲁班猫1为例,扩展板的SPI0对应鲁班猫的SPI3_M1,修改/boot/uEnv/uEnv.txt,开启相应插件:
1 | sudo vi /boot/uEnv/uEnv.txt
|
开启插件后,重启开发板。
16.1. python代码测试¶
python测试代码为:lubancat_rk_code_storage/expansion_board/spi/flash/main.py
测试前需要根据实际情况修改main.py中的按键输入事件,SPI接口及CS引脚:
1 2 3 4 5 6 7 8 9 10 11 12 | '''
filename : main.py
'''
...
spi_bus = 3 # spi总线编号
key_event = "/dev/input/event9" # 按键输入设备
cs_chip = "6" # cs脚, gpiochip
cs_pin = 11 # cs脚, gpionum
...
|
将main.py所在的整个文件夹传到板卡,执行以下命令运行程序:
1 2 | # 运行程序
sudo python main.py
|
程序运行初,会读取W25Q64地址零处的一字节数据。按下key1按键,会生成 一个随机数并写入到地址零。按下key2按键,立即读取数据。
16.2. c代码测试¶
C测试代码为:lubancat_rk_code_storage/expansion_board/spi/flash/main.c
测试前需要根据实际情况修改main.c中的按键输入事件,SPI接口及CS引脚:
1 2 3 4 5 6 7 8 9 10 11 12 13 | /*
filename : main.c
*/
...
#define KEY_EVENT "/dev/input/event9"
#define SPI_BUS "/dev/spidev3.0"
#define CS_GPIO_CHIP "/dev/gpiochip6"
#define CS_GPIO_NUM (11)
...
|
将main.c所在的整个文件夹传到板卡,执行以下命令编译和运行程序:
1 2 3 4 5 | # 编译程序
gcc -o main main.c w25qxx.c -lgpiod
# 运行程序
sudo ./main
|
程序运行初,会读取W25Q64地址零处的一字节数据。按下key1按键,会生成 一个随机数并写入到地址零。按下key2按键,立即读取数据。