NXP MCU 技术论坛
直播中

发烧友推温针

8年用户 789经验值
擅长:光电显示
私信 关注
[问答]

如果设置了TXMSK,则LPSPI在主模式下根据CONT + CONTC命令不断传输是怎么回事?

当我尝试通过 i.MXRT 1062 MCU 上的 LPSPI 作为 SPI 主机进行通信时,在使用连续传输命令(TCR.CONT 和 TCR.CONTC 集)与 TCR.TXMSK 时,我遇到了一些奇怪的行为。
所需的通信顺序:
  • 发送/接收 8 位
  • 接收 32 位
  • 接收 16 位
这意味着实现(伪代码;当然,命令字已准备好,然后以原子方式写入 TCR):
  • TCR = { 继续 = 1; FRAMESZ = 7(在 CPOL、PCS 等之间)}
  • TDR = 要发送的字节
  • TCR = { 继续 = 1; CONTC = 1; TXMSK = 1; 框架 = 31 }
  • TCR = { CONTC = 1; TXMSK = 1; 框架 = 15 }
出乎意料的是,在第二次 TCR 访问(第 3 步)之后,传输立即开始,但在 32 个 SPI 时钟后并没有停止,而是不停地计时(通过设置 CR.DBGEN 可以清楚地重现,执行到第 3 步,并在之后停止TCR 写访问)。
随后,RX-FIFO 确实溢出,即使未设置CFGR1.NOSTALL (这意味着,当接收 FIFO 已满时,传输应该停止)。
问题似乎没有发生,如果
  • 下一个命令(见第 4 步)被推送到 TX FIFO,然后执行有责任的命令(我们对此 100% 确定)
  • 不使用 TCR.TXMSK,而是通过 TDR 提供虚拟数据(我当前的解决方法)
对我来说,这看起来像是一个 LPSPI 问题。但是我在 RM 或芯片勘误表中找不到任何提示。
有没有更好的解决方案而不是解决方法?

更多回帖

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