用同样的方法初始化uart2,uart3,uart4的收发功能都是正常的,但是uart5发送可以通关串口收到数据,接收却没有任何反映,uart5对应的引脚为
uart5-tx对应F17,
uart5-rx对应G13
可以确定外部串口工具是没有问题的,因为我测试了uart2、uart3、uart4都是收发正确的。
设备树文件关于uart5的引脚配置为:
pinctrl_uart5: uart5grp { fsl,pins = < MX6UL_PAD_UART5_TX_DATA__UART5_DCE_TX 0x1b0b1 MX6UL_PAD_UART5_RX_DATA__UART5_DCE_RX 0x1b0b1 >; };&uart5 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_uart5>; status = "okay"; }; 系统启动后,/dev下可以看到出现了ttymxc4设备。 求教是什么地方设置的有问题。谢谢
你好,我也遇到了相同的问题,uart0,1,2,3都能正常的工作,但uart4不能进行数据收发,驱动中创建了设备节点/dev/ttymxc4,但open这个设备,发送数据的时TXD引脚一直处于低电平,请问你是怎么解决这个问题的,谢谢
问题一直也没研究清楚,希望有这方面的达人给出面解释一下。
Hi ,勇
我已经将串口5调通了,将方法分享与你
1.我在uboot阶段验证串口5硬件本身的问题,将串口5配置成调试串口,看串口是否有输出信息,我的测试是输出了一段信息,说明串口5硬件本身是没有问题的,问题锁定在对软件对串口的配置上,至于只输出一段信息是因为uboot将我的这个引脚复用成了 ESPI1功能,
我使用的板子是 imx6D7C , uboot版本是2015.04 , 内核版本是3.14.52
uboot中的修改如下:
文件 : Mx6sabresd.c (board\freescale\mx6sabresd)
static iomux_v3_cfg_t const uart5_pads[] = {
MX6_PAD_KEY_COL1__UART5_TX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
MX6_PAD_KEY_ROW1__UART5_RX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
};
static void setup_iomux_uart(void)
{
imx_iomux_v3_setup_multiple_pads(uart1_pads, ARRAY_SIZE(uart1_pads));
imx_iomux_v3_setup_multiple_pads(uart5_pads, ARRAY_SIZE(uart1_pads));
}
文件 : Mx6sxsabresd.h (include\configs)
/* #define CONFIG_MXC_UART_BASE UART1_BASE */
#define CONFIG_MXC_UART_BASE UART5_BASE
去掉ESPI1对这个引脚的复用
文件 : Mx6sabresd.c (board\freescale\mx6sabresd)
int board_init(void)
{
.......
#ifdef CONFIG_MXC_SPI
// setup_spi(); //我是直接将其注释掉,也可以将这个宏去掉
#endif
.......
}
2.内核阶段也检查了一下对该串口是否有其他功能复用,有则全部去掉,之后我的串口5就可以正常工作了
3.另外我还发现一个问题,其他串口在kernel中的mux配置是有效的,但是对串口5的配置没有效,如将uboot中对串口5的引脚配置去掉,kernel中串口的功能依旧是不通的,这个问题还请NXP的大佬帮忙解答一下
Alee
可以参考一下这个博客imx6ull 下 UART5问题 - CSDN博客 。
你好,我遇到的问题是使用uart5发送时,引脚一直处于低电平,根本就没有信号出来,不知道是哪里出来问题
Hello Jiyong,
我们BSP是根据开发板来做的,在开发板上,UART5_RX_DATA & UART5_TX_DATA两个引脚用作了I2C。所以,BSP里您需要仔细地检查一下UART5_RX_DATA引脚是否被复用为I2C_DAT了。
Have a nice day!
Weidong Sun
谢谢您的回复,我在设备树中已经说明,并且禁用了I2C2,bsp还会初始化引脚吗?
是我的引脚配置的不正确马?