0

这是我第一次为 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 设备吗?

任何建议将不胜感激。

4

1 回答 1

0

2>可以在.controllerdata中提到总线编号和芯片选择是枚举SPI设备

3> 用于可以睡觉的任务

于 2013-02-08T13:43:26.907 回答