我正在爲Linux上的ARM AT91SAM9260開發板編寫RS485驅動程序。UART初始化:阻止UART將RTS拉高
當我初始化UART時,RTS信號線變高(1)。我想這應該是RS232操作模式下的標準行爲。然而,在RS485模式下,這是不需要的。
我正在使用arm-arch部分提供的標準函數來初始化UART。因此,顯著的步驟是:
at91_register_uart(AT91SAM9260_ID_US2, 3, ATMEL_UART_CTS | ATMEL_UART_RTS);
//consisting of:
// >> configure/mux the pins
at91_set_A_periph(AT91_PIN_PB10, 1); /* TXD */
at91_set_A_periph(AT91_PIN_PB11, 0); /* RXD */
if (pins & ATMEL_UART_RTS)
at91_set_B_periph(AT91_PIN_PC8, 0); /* RTS */
if (pins & ATMEL_UART_CTS)
at91_set_B_periph(AT91_PIN_PC10, 0); /* CTS */
// >> associate the clock
axm_clock_associate("usart3_clk", &pdev->dev, "usart");
// >> et voilà
正如你可以
at91_set_B_periph看到(AT91_PIN_PC8,0);
RTS引腳上的上拉電阻未被激活。
爲什麼UART將RTS設置爲高電平? 僅僅因爲這將是RS232模式下的標準 行爲?
豈不是直到
操作模式明確設置 的UART一個更好的標準保持沉默?