This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[FAQ] [参考译文] [常见问题解答] TMS570LS1224:N2HET 仿真 SCI 可能会在接收到6~7个字节的数据后得到一个损坏的字节

Guru**** 1999175 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1456686/faq-tms570ls1224-n2het-emulated-sci-might-get-a-corrupted-byte-after-receiving-6-7-bytes-of-data

器件型号:TMS570LS1224

工具与软件:

TMS57LS12x 和 TMS570LS07x 有一个 LIN/SCI。 如果需要额外的 SCI、我们可以使用 N2HET 模块来实施 SCI。 TI 提供 N2HET 仿真 SCI 的代码示例。  

我得到了几个反馈、即 N2HET 仿真 SCI 在接收到6~7个字节后可能会得到一个损坏的字节。 如何解决此问题?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    由于 UART 是异步的、因此发送器和接收器不共享公共时钟信号。 发送器需要发出数据位正在传输的信号。 这是通过使用 START 位来实现的。 起始位是 A 高电平状态转换到低电平状态的速度 、后面紧跟用户数据位。

    在 NHET 仿真 UART 代码中、每个位都有13个 HET 环路分辨率周期的持续时间。 UART 接收器假定一个有效的开始位恰好在停止位的13 LRP 之后。 UART 帧不会使用 STOP 位之后的下降沿与总线重新同步。

    如果发送器的波特率与接收器的波特率不匹配、在几个字节后、累积的误差可能达到50%波特时钟周期、可能会丢失第一个数据位、并会对第二个数据位作为第一个数据位进行采样

    在此图中、中间是 RX 总线上的数据、顶部是发送器内部 UART 时钟、底部是接收器内部 UART 时钟。 接收器的波特率比发送器慢一点(例如、19231 vs 19371)。 七个字节(70位)之后、将在中间而不是开头对起始位进行采样、并且缺少第1个数据位。

    为了避免出现这种移位问题、请勿连续将数据传输到 NHET 仿真 UART。