未触发 Atmel SAME70 USART 接收超时

Atmel SAME70 USART Receive Timeout not triggered

任何人都可以帮助我让 Atmel ATSAME70 ARM M7 USART 接收超时工作吗?

我的 USART 发送和接收正确,波特率为 115200。我正在使用 ASF 库,并按如下方式设置 Rx 超时:

#define TBUS_RX_TIMEOUT_MS 200
usart_set_rx_timeout(USART0, UART_BAUDRATE * RX_TIMEOUT_MS / 1000);

我确认 US_RTOR 寄存器中的 TO 值设置正确。

然后我使用这个调用开始超时:

usart_restart_rx_timeout(USART0);

此时串行总线上没有流量,所以我希望设置 TIMEOUT 标志。它永远不会被设置。

还有什么需要让超时触发吗?

计时器问题是由该串行总线的空闲状态反转引起的。

数据表指出,当 "Character Received" 事件发生时,计数器会重置。这不是全貌。我的测试表明,只要电线上有 space 电压,计数器就会重置。

根据这个新的理解,定时器工作正常,不能用于检测反向空闲状态(即非标准)串行总线的超时。