一. 前言
上次通过GPIO模拟IIC的驱动一块0.98英寸的OLED后,想着下次用下GPIO模拟SPI接口试下。本文会介绍怎么用GPIO模拟SPI接口的方式为设备添加一块spi nor flash,flash模块如下图所示:
上图是一个spi nor模块,上面焊接了W25Q32FV(一块4M的spi nor flash),模块引出了flash的引脚,板子的GPIO接引脚来驱动flash。
板子采用的是一块MT7620A的开发板,内核的版本是Linux 3.18.45。
二. 步骤
1. CPU与模块的连线
模块 MT7620A板子
VCC 3.3V
GND GND
CS MDIO(GPIO#22)
DO SCL(GPIO#2)
CLK SDA(GPIO#1)
DI MDC(GPIO#23)
2. 内核修改
Device Drivers --->
[*] SPI support --->
<*> GPIO-based bitbanging SPI Master
内核SPI驱动选上"GPIO-based bitbanging SPI Master",表示内核支持GPIO模拟SPI接口。
3. 设备树修改
由于SPI用到了MDIO和I2C接口的GPIO,所以需要在p