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 모드에서 표준 동작일까요?
는
IT는
동작 모드를 명시 적으로 설정 될 때까지 UART를위한 더 나은 표준 침묵을 유지하지 않을까요 ?