This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

uart rts 流控问题

Other Parts Discussed in Thread: AM4379

大家好,

    我们用AM4379做工控板,把自带的6个串口全部启用。但是现在碰到所有串口的流控脚都没有信号。TX脚可以正常发出。

   问题1:不知在哪里需要配置或启用流控脚信号?  流控脚是否需要改内核代码吗?

    现已在 am437x-gp.evm.dts 内定义了各个串口的寄存器。详细如下。

    请大神帮忙查看是否存在错误/遗漏? 非常感谢~~

在文件 am437x-gp-evm.dts, 添加修改如下:

aliases {
display0 = &lcd0;
serial0 = &uart0;
serial1 = &uart1;
serial2 = &uart2;
serial3 = &uart3;
serial4 = &uart4;
serial5 = &uart5;
};


uart1_pins: uart1_pins {
pinctrl-single,pins = <
0x180 (PIN_INPUT | MUX_MODE0) /* uart1_rxd.uart1_rxd */
0x184 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* uart1_txd.uart1_txd */
/*0x178 (PIN_INPUT_PULLUP | MUX_MODE0) uart1_ctsn.uart1_ctsn */
0x17C (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* uart1_rtsn.uart1_rtsn */
>;
};

uart2_pins: uart2_pins {
pinctrl-single,pins = <
0x1F8 (PIN_INPUT | MUX_MODE2)
0x1FC (PIN_OUTPUT_PULLDOWN | MUX_MODE2)
0x204 (PIN_OUTPUT_PULLDOWN | MUX_MODE2)
>;
};

uart3_pins: uart3_pins {
pinctrl-single,pins = <
0x228 (PIN_INPUT | MUX_MODE0) /* uart3_rxd.uart3_rxd */
0x22c (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* uart3_txd.uart3_txd */
/*0x230 (PIN_INPUT_PULLUP | MUX_MODE0) uart3_ctsn.uart3_ctsn */
0x234 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* uart3_rtsn.uart3_rtsn */
>;
};

uart4_pins: uart4_pins {
pinctrl-single,pins = <
0x168 (PIN_INPUT | MUX_MODE1)
0x16C (PIN_OUTPUT_PULLDOWN | MUX_MODE1)
0x0F0 (PIN_OUTPUT_PULLDOWN | MUX_MODE2)
>;
};

uart5_pins: uart5_pins {
pinctrl-single,pins = <
0x108 (PIN_INPUT | MUX_MODE3)
0x144 (PIN_OUTPUT_PULLDOWN | MUX_MODE3)
0x0FC (PIN_OUTPUT_PULLDOWN | MUX_MODE2)
>;
};

uart0_pins_default: uart0_pins_default {
pinctrl-single,pins = <
/*0x168 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE0)
0x16C (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE0)*/
0x170 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | DS0_PULL_UP_DOWN_EN | MUX_MODE0) /* uart0_rxd.uart0_rxd */
0x174 (PIN_INPUT | PULL_DISABLE | SLEWCTRL_FAST | DS0_PULL_UP_DOWN_EN | MUX_MODE0) /* uart0_txd.uart0_txd */
>;
};

uart0_pins_sleep: uart0_pins_sleep {
pinctrl-single,pins = <
/*0x168 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7)
0x16C (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7)*/
0x170 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | DS0_PULL_UP_DOWN_EN | MUX_MODE0) /* uart0_rxd.uart0_rxd */
0x174 (PIN_INPUT_PULLDOWN | SLEWCTRL_FAST | DS0_PULL_UP_DOWN_EN | MUX_MODE0) /* uart0_txd.uart0_txd */
>;
};



&uart1 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&uart1_pins>;
};

&uart2 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&uart2_pins>;
};

&uart3 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&uart3_pins>;
};

&uart4 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&uart4_pins>;
};

&uart5 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&uart5_pins>;
};

&uart0 {
status = "okay";
pinctrl-names = "default", "sleep";
pinctrl-0 = <&uart0_pins_default>;
pinctrl-1 = <&uart0_pins_sleep>;
};


文件 am437x.dtsi 修改如下:


uart0: serial@44e09000 {
compatible = "ti,am4372-uart","ti,omap2-uart";
reg = <0x44e09000 0x2000>;
interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
ti,hwmods = "uart1";
};

uart1: serial@48022000 {
compatible = "ti,am4372-uart","ti,omap2-uart";
reg = <0x48022000 0x2000>;
interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
ti,hwmods = "uart2";
clock-frequency = <48000000>;
status = "okay";
};

uart2: serial@48024000 {
compatible = "ti,am4372-uart","ti,omap2-uart";
reg = <0x48024000 0x2000>;
interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
ti,hwmods = "uart3";
clock-frequency = <48000000>;
status = "okay";
};

uart3: serial@481a6000 {
compatible = "ti,am4372-uart","ti,omap2-uart";
reg = <0x481a6000 0x2000>;
interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
ti,hwmods = "uart4";
clock-frequency = <48000000>;
status = "okay";
};

uart4: serial@481a8000 {
compatible = "ti,am4372-uart","ti,omap2-uart";
reg = <0x481a8000 0x2000>;
interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
ti,hwmods = "uart5";
clock-frequency = <48000000>;
status = "okay";
};

uart5: serial@481aa000 {
compatible = "ti,am4372-uart","ti,omap2-uart";
reg = <0x481aa000 0x2000>;
interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
ti,hwmods = "uart6";
clock-frequency = <48000000>;
status = "okay";
};



问题2.

加载生成的 am437x-gp-evm.dtb. 启动后串口部分显示 有: no wakeirq for uart0  这个是否正常?需要在哪里修改?


[ 0.458500] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[ 0.461537] omap_uart 44e09000.serial: no wakeirq for uart0
[ 0.461562] omap_uart 44e09000.serial: No clock speed specified: using default: 48000000
[ 0.461683] 44e09000.serial: ttyO0 at MMIO 0x44e09000 (irq = 104, base_baud = 3000000) is a OMAP UART0
[ 1.207482] console [ttyO0] enabled
[ 1.211769] omap_uart 48022000.serial: no wakeirq for uart0
[ 1.217832] 48022000.serial: ttyO1 at MMIO 0x48022000 (irq = 105, base_baud = 3000000) is a OMAP UART1
[ 1.228165] omap_uart 48024000.serial: no wakeirq for uart0
[ 1.234105] 48024000.serial: ttyO2 at MMIO 0x48024000 (irq = 106, base_baud = 3000000) is a OMAP UART2
[ 1.244472] omap_uart 481a6000.serial: no wakeirq for uart0
[ 1.250513] 481a6000.serial: ttyO3 at MMIO 0x481a6000 (irq = 76, base_baud = 3000000) is a OMAP UART3
[ 1.260740] omap_uart 481a8000.serial: no wakeirq for uart0
[ 1.266775] 481a8000.serial: ttyO4 at MMIO 0x481a8000 (irq = 77, base_baud = 3000000) is a OMAP UART4
[ 1.276972] omap_uart 481aa000.serial: no wakeirq for uart0
[ 1.282916] 481aa000.serial: ttyO5 at MMIO 0x481aa000 (irq = 78, base_baud = 3000000) is a OMAP UART5

再次感谢~提供任何信息~