【发布时间】:2013-11-20 10:17:05
【问题描述】:
我对 linux 中可用的 SPI 设备感兴趣。 我有一个特定的控制器,它在主从模式下都支持 SPI。 我必须将 SPI 控制器配置为从机模式。
我的问题:Linux 框架是否支持 SPI 从设备? 我将在 SPI 总线上获取异步数据,我必须读取这些数据并对其进行处理,然后发回一个命令。
【问题讨论】:
标签: linux-kernel linux-device-driver spi
我对 linux 中可用的 SPI 设备感兴趣。 我有一个特定的控制器,它在主从模式下都支持 SPI。 我必须将 SPI 控制器配置为从机模式。
我的问题:Linux 框架是否支持 SPI 从设备? 我将在 SPI 总线上获取异步数据,我必须读取这些数据并对其进行处理,然后发回一个命令。
【问题讨论】:
标签: linux-kernel linux-device-driver spi
从 v4.13-rc1 版本开始,Linux 内核已支持 SPI 从模式。 来自 Linux Kernel 的SPI Documentation:
本文档(和 Linux)支持 SPI 交互的主从端。
[...]
“struct spi_device”封装了这两种驱动程序之间的控制器端接口。
[...]
/sys/devices/.../CTLR/slave ... 用于(取消)为 SPI 从控制器注册从设备的虚拟文件。
将 SPI 从机处理程序的驱动程序名称写入此文件,以注册从机设备;写“(null)”会注销从设备。
从此文件中读取显示从设备的名称(如果未注册,则为“(null)”)。
/sys/class/spi_slave/spiB ... 符号链接(或实际设备节点)到一个逻辑节点,该节点可以为总线“B”上的 SPI 从控制器保存类相关状态。注册后,此处存在单个 spiB.* 设备,可能与其他 SPI 从设备共享物理 SPI 总线段。
我没有任何示例 C++/C 代码来支持这个副手。
【讨论】:
不,Linux 不支持作为 SPI 从设备运行。
来自Overview of Linux kernel SPI support:
“struct spi_device”封装了主控端之间的接口 这两种类型的驱动程序。在撰写本文时,Linux 没有从属端 编程接口。
【讨论】:
在 Linux 上实现 SPI 从设备的两个最常见示例是 i.MX28 特定的补丁:
Ishaqe Ahamed 已在 https://e2e.ti.com/support/embedded/linux/f/354/t/162748 上发布了一些用于 OMAP2 的 SPI 从驱动程序的代码,但尚未发布完整的补丁。
您也许可以从发布在http://git.yoctoproject.org/cgit/cgit.cgi/meta-extras/plain/recipes-kernel/linux/linux-netbook-2.6.33.2/linux-2.6.34-moorestown-spi-slave-controller-driver-1.1.patch 的英特尔 Moorestown SPI 从控制器芯片驱动程序中获得一些信息。
请注意,所有这些示例都是几年前完成的,需要移植到您使用的任何较新的内核。这些示例都没有为 SPI 从驱动程序提供跨架构框架。
【讨论】: