您好!
我将上述类型的两个微控制器的 SCI 外设配置为
- 300位/秒的波特率
- 8位数据长度
- 无奇偶校验
但是、一个微控制器设置为一个停止位、而另一个微控制器配置为两个停止位。 当这两者在代码中相互通信时、在 RX ISR 中、错误处理就像这样完成
// RX Error
if (SciaRegs.SCIRXST.bit.RXERROR == 1U)
{
// RX Break Detection
if (SciaRegs.SCIRXST.bit.BRKDT == 1U)
{
// Handle error ...
}
// SCI framing-error flag
if (SciaRegs.SCIRXST.bit.FE == 1U)
{
// Handle error ...
}
// SCI overrun-error flag
if (SciaRegs.SCIRXST.bit.OE == 1U)
{
// Handle error ...
}
// SCI parity-error
if (SciaRegs.SCIRXST.bit.PE == 1U)
{
// Handle error ...
}
SciaRegs.SCICTL1.bit.SWRESET = 0U;
SciaRegs.SCICTL1.bit.SWRESET = 1U;
return;
}
在2019年9月的手册第2164页、字段 FE 中、它说"SCI 在找不到预期的停止位时设置此位。 只有第一个停止位被检查。" 我无法看到、任何错误都会发生、通信也会双向工作。 我的代码是错误的还是这种错误情况不可检测?
一个停止位:
两个停止位:

