您好、查姆斯、
说到 SCI 通信、处理器通过在位中间进行三个采样(第四个、第五个和第六个 SCICLK 周期)来确定位值。
如果有一个主机波特率不准确、那么最大误差率容差是多少、以便 C28x 仍能接收正确的数据帧?
此致、
Luke
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.
您好、查姆斯、
说到 SCI 通信、处理器通过在位中间进行三个采样(第四个、第五个和第六个 SCICLK 周期)来确定位值。
如果有一个主机波特率不准确、那么最大误差率容差是多少、以便 C28x 仍能接收正确的数据帧?
此致、
Luke
您好、Luke、
感谢您的提问。 由于系统噪声或噪声产生的时钟/波特抖动甚至可能导致"完美波特率"出现故障、因此这一点并不容易解决。 但是、如果您假设波特率没有任何抖动、则:
假设"start"和"sync-"位之间的最大位为12位、并且两个波特率在时序开始时完全对齐:
*对于保证故障,波特率之间的总误差容差>4.1%将保证最终误差
*请注意、此误差%包括所有时序误差、包括但不限于:振荡器精度误差、抖动、噪声、波特不精确度、波特粒度(能够设置波特率)、有效波特率的差异。
我还强烈建议在使用任何 SCI 中断时、确保 C28x 器件在字节之间使用2个停止位来接收数据。 这意味着发送到 C28x 的另一个器件应发送2个停止位。 这是因为停止位和 ISR 开始之间的处理时间是((7*BAUD_CLK_PERIOD)/8 + 3*SYSCLK_PERIOD。 因此、在 ISR 开始处理之前、波特周期大约为7/8。 1个停止位将允许低于1/8波特周期的波特率来处理 ISR。
此致、
Vince
Vince、
如果接收到更多位、则会累加错误率。 例如、如果误码率为1%、那么当接收到第10位时、误码率将为10%。
但是、根据 SCI 位采样方法(第四个、第五个和第六个 SCICLK 周期)、我认为 SCI 具有25%的错误率容差(第七个和第八个 SCICLK 周期)、这意味着如果累积的位错误率小于25%、那么 SCI 应该能够正常工作。
你怎么看?
此致、
Luke
您好、Luke、
[引用 userid="114524" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1160990/tms320f28384d-the-maximum-error-rate-of-sci-communication/4366252 #4366252"]但是、基于 SCI 位采样方法(第四个、第五个和第六个 SCICLK 周期)、我认为 SCI 具有25%的错误率容差(第七个和第八个 SCICLK 周期)、这意味着如果累积的位错误率小于25%、则 SCI 应该能够正常工作[引用/引用]。如果我正在正确读取、您在上面提供的理解是不正确的。 它不会是累积的25%误差率。
尽管累积误差起着一个因素、但总累积误差必须导致一个小于4.1%的字节(12位)内的移位。
这是一个图、说明了两种极端误差条件。 与传入的数据相比,“慢时钟”和“快速时钟”是从接收器的角度来看的。

假定一个字节总共有12位、那么下表显示了选通信号将在哪个点注册一个不正确的位:
|
每帧总位数 |
12. |
|
停止位5选通 |
93 (从帧起始的 SCI 时钟) |
|
理想的停止位最后边沿 |
97 (从帧起始的 SCI 时钟) |
|
前缘理想停止位 |
89 (从帧起始的 SCI 时钟) |
|
慢时钟最大误差百分比 |
4.12 (%)<-这是最低百分比、我们必须使用的限制也是如此。 |
|
慢时钟最大连接 |
4.0 (SCI 时钟中的时间间隔误差、INTERV=START_BIT、导致 STOP_BIT 最终沿) |
|
快速时钟最大误差百分比 |
4.49(%) |
|
快速时钟最大连接 |
4.0 (SCI 时钟中的时间间隔误差、INTERV=START_BIT 导致 STOP_BIT 前缘) |
无论发送多少字节、这都适用。 调整周期发生在每个字节。 因此、累积的误差必须在1个字节内足够导致误差。 波特率为4.1%或更高时会发生这种情况。
此致、
Vince