最近调试IMX6ULL新项目,配置了UART1~UART6(arm下映射成ttymxc0~ttymxc5),短接了RX和TX用minicom测试了UART1~ttymxc6,发现UART5只能发,不能收。后来配置成GPIO的方式调试,确认UART5的RX和TX的硬件连接没有问题。最后结合datasheet和imx6ull-pinfunc.h,发现是freescale官方配置管脚寄存器的值有错误。

下面记录一下:

管脚配置:

 pinctrl_uart5: uart5grp {fsl,pins = <MX6UL_PAD_UART5_RX_DATA__UART5_DCE_RX  0x1b0b1MX6UL_PAD_UART5_TX_DATA__UART5_DCE_TX  0x1b0b1>;};
......
&uart5 {pinctrl-names = "default";pinctrl-0 = <&pinctrl_uart5>;status = "okay";
};

imx6ull.dtsi 下包含了imx6ull-pinfunc.h 管脚寄存配置头文件

/** Copyright 2015-2016 Freescale Semiconductor, Inc.** This program is free software; you can redistribute it and/or modify* it under the terms of the GNU General Public License version 2 as* published by the Free Software Foundation.*/#include <dt-bindings/clock/imx6ul-clock.h>
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include "imx6ull-pinfunc.h"
#include "imx6ull-pinfunc-snvs.h"
#include "skeleton.dtsi"/ {aliases {can0 = &flexcan1;can1 = &flexcan2;ethernet0 = &fec1;ethernet1 = &fec2;

打开imx6ull-pinfunc.h 发现,里面的内容就只有ENET2,LCD,CSI的一些管脚配置,其他部分跟IMX6UL的管脚配置头文件(imx6ul-pinfunc.h)共用

 /*2  * Copyright (C) 2016 Freescale Semiconductor, Inc.3  *4  * This program is free software; you can redistribute it and/or modify5  * it under the terms of the GNU General Public License version 2 as6  * published by the Free Software Foundation.7  */89 #ifndef __DTS_IMX6ULL_PINFUNC_H10 #define __DTS_IMX6ULL_PINFUNC_H1112 #include "imx6ul-pinfunc.h"13 /*14  * The pin function ID is a tuple of15  * <mux_reg conf_reg input_reg mux_mode input_val>16  */17 #define MX6UL_PAD_ENET2_RX_DATA0__EPDC_SDDO08                    0x00E4 0x0370 0x0000 0x9 0x018 #define MX6UL_PAD_ENET2_RX_DATA1__EPDC_SDDO09                    0x00E8 0x0374 0x0000 0x9 0x019 #define MX6UL_PAD_ENET2_RX_EN__EPDC_SDDO10                       0x00EC 0x0378 0x0000 0x9 0x020 #define MX6UL_PAD_ENET2_TX_DATA0__EPDC_SDDO11                    0x00F0 0x037C 0x0000 0x9 0x021 #define MX6UL_PAD_ENET2_TX_DATA1__EPDC_SDDO12                    0x00F4 0x0380 0x0000 0x9 0x022 #define MX6UL_PAD_ENET2_TX_EN__EPDC_SDDO13                       0x00F8 0x0384 0x0000 0x9 0x023 #define MX6UL_PAD_ENET2_TX_CLK__EPDC_SDDO14                      0x00FC 0x0388 0x0000 0x9 0x024 #define MX6UL_PAD_ENET2_RX_ER__EPDC_SDDO15                       0x0100 0x038C 0x0000 0x9 0x025 #define MX6UL_PAD_LCD_CLK__EPDC_SDCLK                            0x0104 0x0390 0x0000 0x9 0x026 #define MX6UL_PAD_LCD_ENABLE__EPDC_SDLE                          0x0108 0x0394 0x0000 0x9 0x027 #define MX6UL_PAD_LCD_HSYNC__EPDC_SDOE                           0x010C 0x0398 0x0000 0x9 0x028 #define MX6UL_PAD_LCD_VSYNC__EPDC_SDCE0                          0x0110 0x039C 0x0000 0x9 0x029 #define MX6UL_PAD_LCD_RESET__EPDC_GDOE                           0x0114 0x03A0 0x0000 0x9 0x030 #define MX6UL_PAD_LCD_DATA00__EPDC_SDDO00                        0x0118 0x03A4 0x0000 0x9 0x031 #define MX6UL_PAD_LCD_DATA01__EPDC_SDDO01                        0x011C 0x03A8 0x0000 0x9 0x032 #define MX6UL_PAD_LCD_DATA02__EPDC_SDDO02                        0x0120 0x03AC 0x0000 0x9 0x033 #define MX6UL_PAD_LCD_DATA03__EPDC_SDDO03                        0x0124 0x03B0 0x0000 0x9 0x034 #define MX6UL_PAD_LCD_DATA04__EPDC_SDDO04                        0x0128 0x03B4 0x0000 0x9 0x035 #define MX6UL_PAD_LCD_DATA05__EPDC_SDDO05                        0x012C 0x03B8 0x0000 0x9 0x036 #define MX6UL_PAD_LCD_DATA06__EPDC_SDDO06                        0x0130 0x03BC 0x0000 0x9 0x037 #define MX6UL_PAD_LCD_DATA07__EPDC_SDDO07                        0x0134 0x03C0 0x0000 0x9 0x038 #define MX6UL_PAD_LCD_DATA14__EPDC_SDSHR                         0x0150 0x03DC 0x0000 0x9 0x039 #define MX6UL_PAD_LCD_DATA15__EPDC_GDRL                          0x0154 0x03E0 0x0000 0x9 0x040 #define MX6UL_PAD_LCD_DATA16__EPDC_GDCLK                         0x0158 0x03E4 0x0000 0x9 0x041 #define MX6UL_PAD_LCD_DATA17__EPDC_GDSP                          0x015C 0x03E8 0x0000 0x9 0x042 #define MX6UL_PAD_LCD_DATA21__EPDC_SDCE1                         0x016C 0x03F8 0x0000 0x9 0x04344 #define MX6UL_PAD_CSI_MCLK__ESAI_TX3_RX2                          0x01D4 0x0460 0x0000 0x9 0x045 #define MX6UL_PAD_CSI_PIXCLK__ESAI_TX2_RX3                        0x01D8 0x0464 0x0000 0x9 0x046 #define MX6UL_PAD_CSI_VSYNC__ESAI_TX4_RX1                         0x01DC 0x0468 0x0000 0x9 0x047 #define MX6UL_PAD_CSI_HSYNC__ESAI_TX1                             0x01E0 0x046C 0x0000 0x9 0x048 #define MX6UL_PAD_CSI_DATA00__ESAI_TX_HF_CLK                      0x01E4 0x0470 0x0000 0x9 0x049 #define MX6UL_PAD_CSI_DATA01__ESAI_RX_HF_CLK                      0x01E8 0x0474 0x0000 0x9 0x050 #define MX6UL_PAD_CSI_DATA02__ESAI_RX_FS                          0x01EC 0x0478 0x0000 0x9 0x051 #define MX6UL_PAD_CSI_DATA03__ESAI_RX_CLK                         0x01F0 0x047C 0x0000 0x9 0x052 #define MX6UL_PAD_CSI_DATA04__ESAI_TX_FS                          0x01F4 0x0480 0x0000 0x9 0x053 #define MX6UL_PAD_CSI_DATA05__ESAI_TX_CLK                         0x01F8 0x0484 0x0000 0x9 0x054 #define MX6UL_PAD_CSI_DATA06__ESAI_TX5_RX0                        0x01FC 0x0488 0x0000 0x9 0x055 #define MX6UL_PAD_CSI_DATA07__ESAI_T0                             0x0200 0x048C 0x0000 0x9 0x05657 #endif /* __DTS_IMX6ULL_PINFUNC_H */

对比datasheet发现,IMX6UL 和IMX6ULL关于UART5_RX的功能选择有些差异:

IMX6UL:(<mux_reg conf_reg input_reg mux_mode input_val>)

#define MX6UL_PAD_UART5_RX_DATA__UART5_DCE_RX                     0x00C0 0x034C 0x0644 0x0 0x5

IMX6ULL:(<mux_reg conf_reg input_reg mux_mode input_val>)

所以总得来说,解决IMX6ULL UART5无法接受数据的的问题,需要imx6ul-pinfunc.h下的

#define MX6UL_PAD_UART5_RX_DATA__UART5_DCE_RX                     0x00C0 0x034C 0x0644 0x0 0x5

改为:

#define MX6UL_PAD_UART5_RX_DATA__UART5_DCE_RX                     0x00C0 0x034C 0x0644 0x0 0x7

问题解决。

imx6ull 下 UART5问题相关推荐

  1. 数据库(DataBase)

    MySQL 简介 数据库 数据库:DataBase,简称 DB,存储和管理数据的仓库 数据库的优势: 可以持久化存储数据 方便存储和管理数据 使用了统一的方式操作数据库 SQL 数据库.数据表.数据的 ...

  2. IMX6ULL UART5配置错误imx6ul-pinfunc.h

    最近调试IMX6ULL新项目,配置了UART1UART6(arm下映射成ttymxc0ttymxc5),短接了RX和TX用minicom测试了UART1~ttymxc6,发现UART5只能发,不能收. ...

  3. 迅为linux下串口,迅为IMX6ULL开发板Linux RS232/485驱动实验(上)

    在 arm 设备中串口是很常用的一个外设,不仅可以用来打印信息,还可以用于外接设备和其他传感器通信.根据不同的电平,串口分为 TTL 和 RS232,但是在Linux内核中的驱动程序是一样的,在串口上 ...

  4. 韦东山 IMX6ULL和正点原子_「正点原子Linux连载」第四十四章设备树下的LED驱动实验...

    1)实验平台:正点原子Linux开发板 2)摘自<正点原子I.MX6U嵌入式Linux驱动开发指南> 关注官方微信号公众号,获取更多资料:正点原子 上一章我们详细的讲解了设备树语法以及在驱 ...

  5. <WIN10+Ubuntu18.04+IMX6ULL开发板------在手机热点下联网>链接过程整理

    @TOC<WIN10+Ubuntu18.04+IMX6ULL开发板>链接过程整理 Ping----开发板/windows10/Ubuntu18.04 遇到的问题 1)Windows与Ubu ...

  6. Linux 设备树下的 platform 驱动实验基于正点原子IMX6ULL开发板

    1 设备树下的 platform 驱动简介 platform 驱动框架分为总线.设备和驱动,其中总线不需要我们这些驱动程序员去管理,这个是 Linux 内核提供的,我们在编写驱动的时候只要关注于设备和 ...

  7. IMX6ULL 串口5修改

    最近调试IMX6ULL新项目,配置了UART1UART6(arm下映射成ttymxc0ttymxc5),短接了RX和TX用minicom测试了UART1~ttymxc6,发现UART5只能发,不能收. ...

  8. 迅为IMX6ULL开发板Linux学习教程

    1800+页使用手册(持续更新)+入门视频教程+实战视频教程 关注VX公众号:迅为电子 ,  回复 :终结者,免费获取产品资料  让教程更细致,终结入门难! 所有教程由迅为原创,是迅为工作多年的工程师 ...

  9. linux下使用串口调试设备,Linux串口调试详解

    测试平台 宿主机平台:Ubuntu 16.04.6 目标机:iMX6ULL 目标机内核:Linux 4.1.15 目标机添加串口设备 一般嵌入式主板的默认镜像可能只配置了调试串口,并用于 consol ...

最新文章

  1. maven(一 基本操作 命令 标签)
  2. js markdown chart flow
  3. P1616 疯狂的采药(洛谷,动态规划递推,完全背包)
  4. 自定义ListView中的分割线
  5. centos环境访问php显示源码,CentOS 6.8 搭建LNAMP环境(五)- PHP7源码安装Redis和Redis拓展...
  6. 汇编语言第三章检测题
  7. hnu暑期实训之数塔 巧妙地设定一个偏移量
  8. 架构师成长之旅_第一篇:插件与框架是什么?
  9. java数组排序函数
  10. java腾讯云通信生成userSig
  11. 微信官方:刚刚拆散一桩19万元的姻缘
  12. 免费SSL证书申请和部署
  13. 【C++】实现一个日期计算器
  14. cyusb3014 设备插入 westbridge未识别问题220514
  15. 常见短信平台发送的号码有哪些?95开头、106开头短信发送号码区别说明
  16. 优思学院|六西格玛DMAIC,傻傻搞不清?
  17. jmeter非GUI输出性能测试报告报WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x
  18. PHP字符串计算函数
  19. 输出汉诺塔的移动步骤
  20. AC日记——蓬莱山辉夜 codevs 2830

热门文章

  1. 西门子S7-1200PLC3轴伺服控制程序 触摸屏是西门子Tp900
  2. opencv-python图像孔洞填充
  3. MATLAB梯度和拉普拉斯算子在图像边缘检测中的应用
  4. word实用技巧--学一个记一个
  5. Spring框架-IOC
  6. 超快速!10分钟入门Keras指南
  7. 854. 相似度为 K 的字符串 BFS
  8. android 项目练习:自己的词典app——生词本(一)
  9. 王者荣耀刷金币小程序
  10. 第14章 14.1 来自Bitly的USA.gov数据(1)