Linux上のARM AT91SAM9260ボード用のRS485ドライバを作成しています。UARTの初期化:UARTによるRTSのプルアップの防止
UARTを初期化すると、RTS信号線がハイ(1)になります。私はこれがRS232動作モードの標準的な動作でなければならないと思います。しかしRS485モードでは、これは望ましくない。
私はUARTを初期化するためにarm-archセクションによって提供される標準機能を使用しています。そのための重要なステップは次のとおりです。
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のためのより良い標準ではないでしょうか?