OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5137|回复: 0

I.MX6ULL开发板多路串口配置

[复制链接]

1118

主题

1129

帖子

2

精华

超级版主

Rank: 8Rank: 8

积分
4671
金钱
4671
注册时间
2019-5-8
在线时间
1224 小时
发表于 2021-9-10 17:57:46 | 显示全部楼层 |阅读模式
本帖最后由 正点原子运营 于 2021-11-1 10:49 编辑

以下文章摘自微信公众号——开源电子网《I.MX6ULL开发板多路串口配置》
更多技术文章,请扫下方二维码关注


开源电子网,扫码2222222.png


前言

    学习过正点原子I.MX6ULL开发板的小伙伴知道正点原子I.MX6ULL开发板出厂默认配置了两路串口,其中一路UART1用于打印开发板串口调试信息、一路UART3可以用于串口通信。但是有的小伙伴觉得意犹未尽,看到开发板上有UART2、UART4、UART5的管脚,但是出厂系统上却没有配置这些,只能干着急。不用怕,I.MX6ULL开发板多路串口配置方法,今天它来了。


首先先帮一些小伙伴解决一些疑惑:

一、为什么出厂系统上不配置多路串口呢?

    因为开发板的一个管脚可以配置多种复用功能,我们可以通过修改设备树来实现自己需要的功能,出厂系统为了功能更全面些,把管脚外设都分配好了,所以一些管脚就没配置成串口功能,而是配置成了I2C等这些功能了。如果配置了多路串口的话,出厂系统上可能某些默认的管脚配置就不一样了,具体可以看下设备树修改的地方。


二、我没改过设备树怎么办?

    有学习过正点原子Linux驱动开发指南的小伙伴修改设备树顺心应手,没有学习过的小伙伴也不着急,通过学习这篇文章你也可以自己修改,配置出多路串口也是一种小小的成就有木有。当然啦,如果是想直接使用修改好的设备树的小伙伴,也可以直接下载链接里的设备树,替换到出厂烧录工具里直接烧录后使用。

修改好的设备树文件下载链接:

https://pan.baidu.com/s/1UbCsM3Ube5ePJdnSVWrmjg

提取码:8w0b

修改好多路串口的烧录工具:

https://pan.baidu.com/s/1ykt-SCDwYGZECd6gOkE5ng

提取码:7gf9

话已至此,让我们动手吧。

【目的】

修改正点原子I.MX6ULL出厂系统内核源码设备树,实现开发板UART2\3\4\5多路串口的功能。

【硬件信息】

I.MX6ULL阿尔法开发板板载了uart1和uart3的接口,以及一排32pin的排针。出厂系统默认配置了uart1(ttymxc0)和uart3(ttymxc2),其中uart1做debug信息调试使用。排针上有引出uart2(ttymxc1)、uart3(ttymxc2)、uart4(ttymxc3)和uart5(ttymxc4)。板子上有多个uart3的丝印,我们只要选择一组即可。

1.png

【使用源码】


正点原子Uboot和Linux出厂源码,linux-imx-4.1.15-2.1.0-g14132a2-v1.8.tar.bz2(注意:这里笔者使用的是v1.8版本的出厂源码,其他版本的也是一样的)

我们将这个源码拷贝到Ubuntu下解压,用vscode打开,方便我们修改。我们主要修改的是内核源码的arch\arm\boot\dts目录下的设备树文件。

【UART2配置】


首先确认UART2串口功能的定义。打开arch\arm\boot\dts\imx6ul-pinfunc.h文件。

为什么是imx6ul-pinfunc.h,不是应该在imx6ull-pinfunc.h里找吗?

因为打开imx6ull-pinfunc.h,可以看到里面的定义很少,而且引用了imx6ul-pinfunc.h这个头文件,说明imx6ull和imx6ul的大部分引脚复用功能是一样的,不一样的只是imx6ull-pinfunc.h这个文件里多定义了一些imx6ul没有的,因此要在imx6ul-pinfunc.h中才能搜索到UART2的功能引脚。

在 imx6ul-pinfunc.h 文件搜索:

MX6UL_PAD_UART2_TX_DATA,可以看到这个管脚的复用功能,如下图所示。


2.png

这里可以看到MX6UL_PAD_UART2_TX_DATA管脚作为UART2的TX功能的话,其定义的名字是MX6UL_PAD_UART2_TX_DATA__UART2_DCE_TX。

同理搜索MX6UL_PAD_UART2_RX_DATA,可以知道此管脚做UART2的RX功能的话,其定义的名字是MX6UL_PAD_UART2_RX_DATA__UART2_DCE_RX。

打开设备树imx6ull-14x14-evk.dts,修改pinctrl信息,将UART2的流控注释。

3.png

检查功能引脚是否存在其他复用,在设备树文件中搜索PAD_UART2_TX_DATA和 PAD_UART2_RX_DATA。

找到 pinctrl_uart2dte节点和pinctrl_ecspi3节点里有用到这两个管脚的地方,将其注释掉。

4.png

5.png

添加/修改节点标签&uart2,status修改为"okay",修改完如下。

6.png

至此,UART2串口功能配置完成。

【UART3配置】

出厂系统上默认配置了UART3串口功能了,这里不需要修改。

【UART4配置】

在imx6ul-pinfunc.h文件中搜索UART4_TX_DATA和UART4_RX_DATA得到UART4收发引脚的定义,即:

  1. MX6UL_PAD_UART4_TX_DATA__UART4_DCE_TX

  2. MX6UL_PAD_UART4_RX_DATA__UART4_DCE_RX
复制代码



修改设备树imx6ull-14x14-evk.dts,搜索uart4,注释掉相关复用管脚功能。

7.png

disabled掉相关的复用节点

8.png

添加uart4节点(小贴士:可以拷贝uart3的来修改)

9.png

添加/修改节点标签&uart4(小贴士:可以拷贝uart3的来修改)

10.png

至此,UART4串口功能配置完成。

【UART5配置】

在imx6ul-pinfunc.h文件中搜索UART5_TX_DATA和UART5_RX_DATA得到UART5收发引脚的定义,即

  1. MX6UL_PAD_UART5_TX_DATA__UART5_DCE_TX

  2. MX6UL_PAD_UART5_RX_DATA__UART5_DCE_RX
复制代码



这里值得注意的是,NXP官方源码这里寄存器配置有点问题,配置完只能发送不能接收,所以需要处理下。

具体说明可以参考

https://blog.csdn.net/WXXGoodJob/article/details/82690386这个帖子。

11.png

需要进行以下修改:

要将

  1. #defineMX6UL_PAD_UART5_RX_DATA__UART5_DCE_RX0x00C00x034C 0x0644 0x0 0x5
复制代码



改为

  1. #defineMX6UL_PAD_UART5_RX_DATA__UART5_DCE_RX0x00C00x034C 0x0644 0x0 0x7
复制代码


保存文件,修改完的配置:

16.png

修改设备树imx6ull-14x14-evk.dts,搜索uart5,注释掉相关复用管脚功能。
13.png

disabled掉相关复用节点。

14.png
添加uart5节点。

15.png

添加uart5节点标签

至此uart5的修改已经完成了,记得保存修改好的文件。

打开终端,进到出厂内核源码目录下,执行build.sh脚本开始编译。(前提是按照【正点原子】I.MX6U用户快速体验.pdf文档第四章安装好出厂交叉编译器)

17.png
如果没有修改错误的话,编译成功的设备树会复制到内核源码的tmp目录下。

18.png

【多路串口测试】

拷贝一份正点原子出厂烧录工具到桌面上,把前面编译生成的全部设备树拷贝替换到烧录工具的mfgtool\Profiles\Linux\OSFirmware\files\boot中即可。

19.png

然后执行烧录脚本烧写到板子上。如果不会使用出厂烧录工具的小伙伴,可以先学习下《【正点原子】I.MX6U用户快速体验.pdf》这个文档第二章。

启动开发板,进入文件系统,输入ls/dev可以查看到串口设备,分别为ttymxc0(对应uart1)、ttymxc1(对应uart2)、ttymxc2(uart3)、ttymxc3(uart4)、ttymxc4(对应uart5)

20.png
这里笔者使用正点原子的USB转TTL串口模块用于测试。串口模块RXD接口接开发板排针的U2_TX,串口模块TXD接口接开发板排针的U2_RX,GND接GND。

21.png

查看设备管理器中串口端口号,这里为笔者USB串口模块为COM3。开发板UART1用于查看信息,这里笔者为COM5。打开USB串口模块终端软件xcom,设置波特率115200,8N1,取消勾选流控制。

22.png

在开发板系统中使用microcom工具进行串口测试。这里注意下,microcom默认没有本地回显,大家可以学习驱动开发指南63.6.2小节的minicom工具来测试,这里笔者为方便大家快速测试,使用的是microcom工具。

输入指令microcom/dev/ttymxc1 -s 115200,测试uart2收发功能。在COM3端输入,在COM5端就会打印,如下图所示。

23.png

在COM5端输入,在COM3端就会打印,如下图所示。

24.png


测试uart2收发功能完成。接下来测试uart3,开发板系统输入ctrl和x键可以退出测试。

串口模块RXD接口接开发板排针的U3_TX,串口模块TXD接口接开发板排针的U3_RX,GND接GND。

开发板系统输入microcom/dev/ttymxc2 -s 115200,测试方法和uart2一样。

25.png



测试uart3收发功能完成。接下来测试uart4,开发板系统输入ctrl和x键可以退出测试。

串口模块RXD接口接开发板排针的U4_TX,串口模块TXD接口接开发板排针的U4_RX,GND接GND。

开发板系统输入microcom/dev/ttymxc3 -s 115200,测试方法和uart3一样。

27.png


28.png

测试uart4收发功能完成。接下来测试uart5,开发板系统输入ctrl和x键可以退出测试。

串口模块RXD接口接开发板排针的U5_TX,串口模块TXD接口接开发板排针的U5_RX,GND接GND。

开发板系统输入microcom/dev/ttymxc4 -s 115200,测试方法和uart4一样。

29.png
30.png

至此,多路串口配置修改及测试完成。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 01:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表