当前位置: 技术问答>linux和unix
高分: 如何做SPI设备驱动
来源: 互联网 发布时间:2017-02-14
本文导语: 先描述下问题: 板子上使用GPIO来模拟SPI总线, 通过这个SPI总线连接到一个液晶屏,现在需要读取液晶屏里的几个寄存器值(通过SPI总线) 目前,drivers/spi/spi_gpio.c中有了用GPIO模拟SPI的代码。现在就是想如何做一个S...
先描述下问题:
板子上使用GPIO来模拟SPI总线, 通过这个SPI总线连接到一个液晶屏,现在需要读取液晶屏里的几个寄存器值(通过SPI总线)
目前,drivers/spi/spi_gpio.c中有了用GPIO模拟SPI的代码。现在就是想如何做一个SPI的设备驱动,这个设备如何关联到SPI总线上,因为要调用总线的传输方法 去读写寄存器。
小弟刚开始做驱动,各位高手给指点下 啊!越详细越好。
板子上使用GPIO来模拟SPI总线, 通过这个SPI总线连接到一个液晶屏,现在需要读取液晶屏里的几个寄存器值(通过SPI总线)
目前,drivers/spi/spi_gpio.c中有了用GPIO模拟SPI的代码。现在就是想如何做一个SPI的设备驱动,这个设备如何关联到SPI总线上,因为要调用总线的传输方法 去读写寄存器。
小弟刚开始做驱动,各位高手给指点下 啊!越详细越好。
|
你可以仿着内核里面的SPI设备做法实现,用platform注册设备、驱动
|
你不用挂在总线上,用GPIO可以完全脱离SPI的寄存器,要不然你用GPIO来模拟它干啥?就像GPIO模拟I2C一样,直接操作即可,根本不用系统的I2C adapter。
|
看看LDD这本书,再研究1个spi驱动源程序,努力!没有捷径!
|
1. SPI总线驱动,只是提供了一种和你的设备通信的方式。
2. 现在你用GPIO模拟了SPI总线,就是说,提供了和你的SPI设备通信的接口,你可以读写
你的设备的寄存器和数据。
3. 你只需专注你的SPI设备驱动,这与真正的SPI总线还是模拟的SPI总线没有关系。
4. 找一个类似的SPI设备驱动的源代码,看懂了以后,学着抄吧。
2. 现在你用GPIO模拟了SPI总线,就是说,提供了和你的SPI设备通信的接口,你可以读写
你的设备的寄存器和数据。
3. 你只需专注你的SPI设备驱动,这与真正的SPI总线还是模拟的SPI总线没有关系。
4. 找一个类似的SPI设备驱动的源代码,看懂了以后,学着抄吧。
|
设备关联到模拟的总线上是硬件的事情。
看看SPI的硬件连接图。
既然已经提供读写接口了,那么访问液晶屏寄存器实际上就可以了。
还要知道分配的总线ID,器件ID,和reg地址。
看看SPI的硬件连接图。
既然已经提供读写接口了,那么访问液晶屏寄存器实际上就可以了。
还要知道分配的总线ID,器件ID,和reg地址。