你(们)好
在 UART 模式下,eUSCI 的接收器似乎需要 UCSPB 选择的停止位数才能正确接收。
这是正确的吗?
未明确说明 UCSPB 设置如何单独影响 TX 和 RX。
我们可以找到的 RX 和 STOP 位之间的唯一参考位于帧错误描述中:
“帧错误
UCFE
检测到低停止位时出现帧错误。 当使用两个停止位时,两者都是
检查停止位是否存在帧错误。 检测到帧错误时,将设置 UCFE 位。”
因此,我们可以从 UCFE 中看到是否收到了所需的停止位数。
但我们不需要在协议中处理帧错误。 它具有内积错误检测功能,例如通过 CRC 检查。
我们看到的是,用一个停止位传输的数据未正确接收。
第一个字节接收正确,但以下字节不正确–其方式可能与延迟接收不同步匹配。
因此,接收器部件的停止位设置似乎不仅影响帧错误功能,还控制接收器何时打开以获得新的起始边缘。
我们的协议指定了两个传输停止位。 这仅用于在接收器的下一个起始边缘获得重新同步的额外边距。
在我们过去使用过的嵌入式设备(TI 和其他产品)中,接收器始终只需要一个停止位,与 UART 停止位设置无关。 例如,在 MSP430x4xx 系列的 USART 外设中。
由于我们的设备与各种其他设备(包括我们自己的和第三方的设备,以及嵌入式和通用设备)连接,因此其中一些设备只使用一个停止位(错误地或因为无法在特定设备中控制它)。 我们无法控制这种情况,也不想控制,因为它工作正常。
如果我们的设备 TX 有两个停止位和 RX 的一个停止位,它可以与所有其他一个和两个停止位的组合配合使用。
如果我们的设备 TX 有两个停止位,并且在 RX 上需要两个停止位,则它只能与计数器部件 TX 有两个停止位的组合配合使用。
我们知道“总是一个 RX 停止位”是“文本簿不正确”。
但在正常的异步通信中,它可以提供重要的灵活性和利润。
在我们的情况下,理论上我们可以强制所有其他设备遵守该协议。
但实际上,在许多情况下,我们需要向后兼容性,因为它可以与现有设备或无法更改的设备配合使用(例如,如果客户从不再存在的分包商处购买了他们自己的设备)。
在现有或即将推出的 TI 器件或系列产品中,是否仍存在这种情况?
我们建议采用以下解决方案之一:
1) UART RX 仅检查一个停止位,与 UART 停止位设置无关。
2) UART 在最多1个停止位后可能会收到新的启动边缘,与 UART 停止位设置无关。
3) UART 中的停止位设置被拆分为 RX 和 TX 的单独设置。
在当前项目中,我们可以使用两个单独的 eUSCI 分别用于具有不同停止位设置的 TX 和 RX。 但这意味着我们永远无法使用每个接口的相反部分。
在其他产品中,我们需要更多具有此功能的接口,而不是每个接口支持两个 eUSCI。
我们真的希望得到一个积极的答案!
/Mads