这是我第一次为 ADS7846 编写 linux SPI 框架的驱动程序。找到这个优秀的教程来理解 linux SPI 的概念:--- http://www.jumpnowtek.com/index.php?option=com_content&view=article&id=57&Itemid=62
它也有一个示例代码。 https://github.com/scottellis/spike/blob/part3/spike.c
1> 有几点我无法理解为什么我们在访问之前使用信号量——spike_dev.user_buff。
我们真的需要信号量吗?因为有时我的应用程序只会读取()或写入()或打开()驱动程序?
2> 还要选择我们正在使用的芯片选择:-- /* 指定芯片选择线 */
SPI_BUS_CS1
为什么我们不指定 CS-line 连接到哪个端口?
3> 正如我所读到的,自旋锁应该与中断处理程序一起使用。还有这个自旋锁在驱动程序中的用途是什么。这里我们没有 spi 中断处理程序。但是在访问 - spi_async 和 spi_device 时 - 我们正在使用自旋锁?
spin_lock_irqsave spi_async spin_unlock_irqrestore
4> 我们也可以将多个“协议驱动程序”注册到同一个 SPI 设备吗?
任何建议将不胜感激。