2024年4月28日发(作者:)

GPIO模拟SPI通讯接口的驱动

一,某些时候我们会不得不使用GPIO来模拟SPI,I2C等通讯接口,如本例中,需要使用SPI

接口发送9位的数据,如果使用linux内核提供的SPI子系统来做这个驱动是无法实现9位传输数据

的。

二,用GPIO模拟SPI总的来说是比较简单,把相应的管脚配置成GPIO功能,再按需要配置管

脚的输入输出方向,然后根据SPI总线的时序设定IO口的电平。

三,驱动代码如下,以备今后作参考:

(linux-2.6.28 + TCC8900, 这个驱动是用来控制LCD的初始化的(型号为LW350AC9001))

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define PDEBUG

#ifdef PDEBUG

#define PLOG() printk(fmt,##args)

#else

#define PLOG() /*do nothing*/

#endif

#define SPI_CMD 0

#define SPI_DATA 1

#define FUN_GPIO 0

#define PIN_SDO 15 //GPIOF[15]

#define PIN_SDI 14

#define PIN_SCLK 16