2017-05-04 73 views
1

任何人都可以幫助我獲得Atmel ATSAME70 ARM M7 USART接收超時工作嗎?Atmel SAME70 USART接收超時未觸發

我的USART發送和接收正確,在115200波特。我使用的ASF庫,並設置RX時限如下:

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

我確認TO在US_RTOR寄存器正確設置值。

然後我用這個調用啓動超時:

usart_restart_rx_timeout(USART0); 

有在這一點上的串行總線上沒有流量,所以我預期的超時標誌被設置。它永遠不會被設置。

是否還有其他要求獲得超時觸發?

+0

是否啓用中斷?嘗試添加'usart_enable_interrupt(USART0,US_IER_TIMEOUT);' – LPs

+0

非常感謝。是的,中斷已啓用。我加入了IER超時先前存在的面具如下: 'usart_enable_interrupt(TBUS_UART,UART_IER_RXRDY | UART_IER_FRAME | UART_IER_OVRE | US_IER_TIMEOUT);' 所有其它的中斷被觸發,只是不超時。 – David

回答

0

定時器問題是由這個串行總線具有反轉空閒狀態引起的。

該數據表指出,當「字符接收」事件發生時計數器被重置。這不是完整的圖片。我的測試表明,只要電線上有空間電壓,計數器就會重置。

有了這個新的理解,定時器工作正常,並且不能用於檢測倒置空閒狀態(即非標準)串行總線的超時。