NXP MCU 技术william hill官网
直播中

小麦地

11年用户 1638经验值
私信 关注
[问答]

SLAVE模式下ECSPI-1的异常行为如何解决?

真让人恼火……ECSPI-1 没有按应有的方式在从属模式下工作。
我正在使用 BSP L2.6.35_11.09.01_ER_source_bundle 和包含的内核 linux-2.6.35.3.tar.bz2 和 linux-2.6.35.3-imx_11.09.01.bz2。

我为以下操作模式配置了 SPI 控制器。
# SPI 模式 0(POL = 0,PHA = 0)
# 从机模式
# BURST LENGTH = 7 --> 仅传输 8 位字节
# 根据 MX53 勘误表,SMC 位 = 0
# 没有 DMA

IOMUX 配置如下:
MX53_PAD_EIM_D16__ECSPI1_SCLK,
MX53_PAD_EIM_D17__ECSPI1_MISO,
MX53_PAD_EIM_D18__ECSPI1_MOSI,
MX53_PAD_EIM_EB2__ECSPI1_SS0,

我有一个通过 SPI 与 i.MX535 通信的小型协处理器。协处理器为主,配置为 SPI 模式 0。波特率非常低 (329kHz)。
我想一次传输 64 个字节(MX53 RXFIFO 的大小)。因此,只要所有 64 字节都已传输,芯片选择就会保持低电平。
如果我做对了,如果在 INTREG 中启用了 RREN 位,MX53 应该中断每个接收到的数据字节 (BURST LENGTH = 7)。
问题是,在所有字节都已传输并且芯片选择再次处于非活动状态后,中断只会发生一次。
而且,从片选上升沿到调用中断处理程序的时间约为70ms!!!!这真的很奇怪,因为应该立即处理中断。
此外,TXFIFO 中填充了计数器值 1、2、3...64。这些值未正确传输。似乎只有第 4 个字节具有有效数据,并且整个传输的数据都是相同的 --> 未收到计数数据。

我需要在每个传输字节之间重新断言片选吗?
为什么调用中断处理程序这么慢?
如果在从机模式下运行,是否需要设置时钟分频器?


回帖(1)

刘艳

2024-6-5 17:53:33
有几个可能的解决方案:

1. 检查从设备是否正确响应主设备的请求。可以使用Oscilloscope或逻辑分析仪进行检查。如果从设备无法响应请求,则可能需要检查从设备的硬件威廉希尔官方网站 或软件驱动程序是否出现问题。

2. 检查ECSPI的时钟源是否正确设置。如果时钟源设置有误,则可能会导致ECSPI工作异常。可以参考硬件手册进行正确配置。

3. 检查ECSPI的中断和DMA设置是否正确。如果发生中断或DMA错误,则可能会导致异常行为。可以参考硬件手册或驱动程序代码进行设置。

4. 尝试升级到更稳定的内核版本。软件问题可能会影响ECSPI的正常操作。升级到更稳定的内核版本可能会解决此类问题。

5. 与芯片厂家联系并获得技术支持。如果以上解决方案均失败,则可能需要联系芯片厂家获得技术支持。他们可能会提供更详细的故障排除方法或解决方案。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分