大家好、我使用的是 RM44L920 Hercules 微控制器。
我使用 SCI/LIN 模块作为串行接口与外部 CPU 通信。 SCI/LIN 模块通过以下设置进行配置:
- 波特率:460800
- 8个数据位、无奇偶校验位和一个停止位
- 长度=0的多缓冲模式(响应字段有1个字节/字符)
- 为组帧/溢出/奇偶校验错误、接收和中断检测启用中断
遗憾的是、在上电后、外部 CPU 以1.8MHz 的波特率向 RM44L920微控制器发送了大约200字节的数据。 因此、RM44L920 微控制器受阻于 LIN ISR (linLowLevelInterrupt)。 当外部 CPU 以 1.8MHz 波特率将数据发送至 Hercules 微控制器后、接收标志(INTVECT1 = 11/接收)会一直有效。 然而、SCI 标志寄存器中的位 FE (帧错误)从未设置为1、而 INTVECT1从未设置为6 (帧错误)、这是预期行为。
我想知道为什么不会生成错误中断(spnu608a、2018年3月、表26-4 (SCI/LIN 中断))。 相反、接收标志一直有效。
当我按如下方式更改 SCI/LIN 模块的设置时:
- 波特率:460800
- 8个数据位、无奇偶校验位和一个停止位
- 长度=0的多缓冲模式(响应字段有1个字节/字符)
- 仅为接收启用中断
在外部 CPU 以1.8MHz 的波特率将数据发送到 Hercules 微控制器后、RM44L920微控制器仍停留在 LIN ISR (线性低级别中断)。 接收标志(INTVECT1 = 11/接收)始终有效。 然而、正如预期的那样、SCI 标志寄存器中的位 FE (帧错误)和 OE (溢出错误)被设定为1。
顺便说一下、当我将 SCI/LIN 模块设置为非多次缓冲模式时、一切都运行良好。 微控制器 不会卡在 ISR 上。 在使用 多缓冲模式时、是否遗漏了任何内容?




