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.

AM3354 串口



     最近测试串口的时候发现一个问题很疑惑,我用的是Linux系统,使用app将串口收发端短接的方式进行测试,测试时收发数据显示很正常,但是我在app中打开硬件流控,用同样的方法,将收发引脚短接测试,同样能收到数据,问题就在于硬件没有接硬件流控引脚,而且没有配置串口流控引脚的pinmux,按理说不能收到数据。我在app中打开硬件流控时用的获取属性设置属性的函数中都检查过返回值,返回值没有错误。

    硬件工程师说是软件问题,但是软件看起来也没有问题,麻烦您帮忙看看产生这个问题的原因,谢谢。

  • 驱动中是否实现了硬件流控制?如果只是个返回值那么肯定不能用了。

  • 驱动中确实实现了硬件流控,而且用户态的app设置流控的函数返回值都是零,也就是返回值都是返回正确的,按理说没有硬件连接,流控设置返回值应该是错误的 但是结果不然,等待解惑中

  • 流控应该也是靠管脚的高低电平来判断的吧

    也许当时的管脚状态符合要求,所以返回正确,可以测量一下流控的管脚电平

  • 硬件流控确实靠管脚的高低电平来判断,但是我的这个根本就没有接硬件流控引脚,只是在应用层打开了硬件流控,结果没报错而且还能收发数据。

  • 请问你用的是那个串口?如果是UART1,Linux上的流控脚pinmux配错了,你参考一下:

    Incorrect:

    From the board-file arch/arm/mach-omap2/board-am335xevm.c:

    static struct pinmux_config uart1_wl12xx_pin_mux[] = {

            {"uart1_ctsn.uart1_ctsn", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},

            {"uart1_rtsn.uart1_rtsn", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT},

            {"uart1_rxd.uart1_rxd", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},

            {"uart1_txd.uart1_txd", OMAP_MUX_MODE0 | AM33XX_PULL_ENBL},

            {NULL, 0},

     

    Correct:

    static struct pinmux_config uart1_wl12xx_pin_mux[] = {

            {"uart1_ctsn.uart1_ctsn", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT},

            {"uart1_rtsn.uart1_rtsn", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},

            {"uart1_rxd.uart1_rxd", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},

            {"uart1_txd.uart1_txd", OMAP_MUX_MODE0 | AM33XX_PULL_ENBL},

            {NULL, 0},