工具/软件:Linux
您好!
我们正在努力在 运行 Linux (版本4.4.-12)的定制 AM5728板和仅从属器件之间实现 SPI 通信。 AM5728配置为以9.6MHz 运行的主器件。 当从器件具有要发送的数据时 、它会将 GPIO 设置为高电平。 在 Linux 上运行的程序会监控 GPIO 信号、而在变为高电平时、将执行128字节传输。 在测试过程中、我们看到了128字节传输暂停中间传输。 暂停时间从微秒到毫秒不等、并随机发生。
所附图像显示了 SPI 上两个128字节的突发(显示了 CSn 和 SCLK)。 128字节的突发每~4.2ms 发生一次、每次只需~250us。 在第二次数据突发期间、在数据卸载中途有3ms 的暂停。 系统上没有其他用户程序在运行、这 种情况经常发生、尽管并非总是3ms。
什么会导致传输暂停?
具有较高优先级的进程是否可以中断 SPI 传输?
如果可能、另一个进程会中断 SPI、是否有方法可以通过提升用户程序的优先级或禁用后台进程来禁用所有其他后台中断?
我们已经尝试为 SPI 程序分配关联值、以测试在 CPU0或 CPU1上运行是否更改了行为、但在任何一个内核上、我们仍然会偶尔看到传输暂停。 使用 cat /proc/interrupts、我们检查了其他哪些进程可能会中断它、但我们不确定如何更改它、以便它们不再中断、或者我们是否应该中断。 下面是 cat /proc/interrupts 输出的屏幕截图。


