查看: 2658|回复: 3

[i.MX6ULL竞赛专区] 【我的项目666】+通讯管理(4)使能串口功能

[复制链接]
  • TA的每日心情
    开心
    2024-4-5 11:15
  • 签到天数: 1061 天

    [LV.10]以坛为家III

    29

    主题

    1517

    帖子

    31

    金牌会员

    Rank: 6Rank: 6

    积分
    4972
    最后登录
    2024-4-21
    发表于 2018-5-28 11:12:37 | 显示全部楼层 |阅读模式
    本帖最后由 story_xjj 于 2018-5-28 11:20 编辑

    试用4 使能多串口

    由于在我的应用中,需要多个串口,因此需要修改设备树文件使能串口设备。

    IOT板上引出的串口设备总结

    UART1           系统调试串口

    UART2           J3-11   UART2-TXD

                      J3-13  UART2-RXD

    UART3           J3-19   UART3-TXD

                      J3-21  UART3-RXD

    UART4           J3-29   UART4-TXD

                      J3-31  UART4-RXD

    UART5           J2-10   UART5-TXD

                      J2-12  UART5-RXD


    这里可以使用UART2到UART5共4个串口。

    为了修改简单,直接修改mys-imx6ull-14x14-evk.dts文件。

    第一步,增加引脚定义

    &iomuxc {

            pinctrl-names= "default";

            pinctrl-0 =<&pinctrl_hog_1>;

            imx6ul-evk {

                   省略掉部分

                   pinctrl_uart1:uart1grp {

                           fsl,pins= <

                                   MX6UL_PAD_UART1_TX_DATA__UART1_DCE_TX0x1b0b1

                                   MX6UL_PAD_UART1_RX_DATA__UART1_DCE_RX0x1b0b1

                           >;

                   };


                   pinctrl_uart2:uart2grp {

                           fsl,pins= <

                                   MX6UL_PAD_UART2_TX_DATA__UART2_DCE_TX 0x1b0b1

                                   MX6UL_PAD_UART2_RX_DATA__UART2_DCE_RX 0x1b0b1

                           >;

                   };


                   pinctrl_uart2dte:uart2dtegrp {

                           fsl,pins= <

                                   MX6UL_PAD_UART2_TX_DATA__UART2_DTE_RX 0x1b0b1

                                   MX6UL_PAD_UART2_RX_DATA__UART2_DTE_TX 0x1b0b1

    /*                             MX6UL_PAD_UART3_RX_DATA__UART2_DTE_CTS 0x1b0b1 */

    /*                             MX6UL_PAD_UART3_TX_DATA__UART2_DTE_RTS 0x1b0b1 */

                           >;

                   };


                   pinctrl_uart3:uart3grp {

                           fsl,pins= <

                                   MX6UL_PAD_UART3_TX_DATA__UART3_DCE_TX 0x1b0b1

                                   MX6UL_PAD_UART3_RX_DATA__UART3_DCE_RX 0x1b0b1

                           >;

                   };


                   pinctrl_uart4:uart4grp {

                           fsl,pins= <

                                   MX6UL_PAD_UART4_TX_DATA__UART4_DCE_TX 0x1b0b1

                                   MX6UL_PAD_UART4_RX_DATA__UART4_DCE_RX 0x1b0b1

                           >;

                   };


                   pinctrl_uart5:uart5grp {

                           fsl,pins= <

                                   MX6UL_PAD_UART5_TX_DATA__UART5_DCE_TX 0x1b0b1

                                   MX6UL_PAD_UART5_RX_DATA__UART5_DCE_RX 0x1b0b1

                           >;

                   };

                   省略掉部分

                   };

            };

    };


    仿照UART1和UART2的写法,定义其它串口。

    第二步,使能串口设备

    &uart1 {        
                pinctrl-names = "default";        
                pinctrl-0 = <&pinctrl_uart1>;        
                status = "okay";
           };
    &uart2 {        
                pinctrl-names = "default";        
                pinctrl-0 = <&pinctrl_uart2>;        
                /*fsl,uart-has-rtscts;*/        
                /* for DTE mode, add below change */        
                /* fsl,dte-mode; */        
                /* pinctrl-0 = <&pinctrl_uart2dte>; */        
                status = "okay";
            };
    &uart3 {        
                pinctrl-names = "default";        
                pinctrl-0 = <&pinctrl_uart3>;        
                status = "okay";
            };
    &uart4 {        
                 pinctrl-names = "default";        
                 pinctrl-0 = <&pinctrl_uart4>;        
                 status = "okay";
            };
    &uart5 {        
                 pinctrl-names = "default";        
                 pinctrl-0 = <&pinctrl_uart5>;        
                 status = "okay";
            };


    这里必须注意一点,由于UART5和I2C2接口的引脚是复用的,I2C2默认是使能的所以必须禁用I2C2,在使能UART5.

    &i2c2 {        
                 clock_frequency = <100000>;        
                 pinctrl-names = "default";        
                 pinctrl-0 = <&pinctrl_i2c2>;        
                 status = "disabled";        
                 省略部分
           };


    第三步,编译dtb文件

           makeARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs

           如果不出意外,我们需要的dtb文件就生成了,将这个文件替换mfgtools下的文件,并烧录到nand flash中,重新启动系统。

           我们可以发现多了4串口设备,ttymxc1、ttymxc2、ttymxc3、ttymxc4
    捕获.JPG

    目前存在的问题,uart5的接收功能还没有好使,发送功能已经好使了。请高手指点一下。


    评分

    参与人数 1 +2 收起 理由
    doatello + 2

    查看全部评分

    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-1-6 07:38
  • 签到天数: 736 天

    [LV.9]以坛为家II

    21

    主题

    3486

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    5093
    最后登录
    2024-1-7
    发表于 2018-5-28 12:42:36 | 显示全部楼层
    做个记号,学习一下
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2018-2-7 18:18
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    13

    主题

    126

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    1628
    最后登录
    2021-7-13
    发表于 2018-7-13 21:42:04 | 显示全部楼层
    楼主能否共享一下编译好的dtb文件?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-5 11:15
  • 签到天数: 1061 天

    [LV.10]以坛为家III

    29

    主题

    1517

    帖子

    31

    金牌会员

    Rank: 6Rank: 6

    积分
    4972
    最后登录
    2024-4-21
     楼主| 发表于 2018-7-14 10:13:31 | 显示全部楼层
    pythonworld 发表于 2018-7-13 21:42
    楼主能否共享一下编译好的dtb文件?

    没问题,周一上班传上来,但是我这个串口5似乎功能不完善,你可以在研究研究
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-27 07:14 , Processed in 0.126032 second(s), 23 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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