真让人恼火……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 个字节具有有效数据,并且整个传输的数据都是相同的 --> 未收到计数数据。
我需要在每个传输字节之间重新断言片选吗?
为什么调用中断处理程序这么慢?
如果在从机模式下运行,是否需要设置时钟分频器?