Hi3531D串口配置流程

Posted 旧年不在cd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hi3531D串口配置流程相关的知识,希望对你有一定的参考价值。

一、Hisi 3531D串口配置流程

1、海思默认只开启UART0单元作为调试功能使用,在实际应用中我们常常需要使用UART1、UART2来与外围设备对接,以实现串口通信。此时我们就需要配置启用UART1、UART2单元,这个过程分为3步:

  • 确保硬件IO口设计及时钟频率正常
  • 检查UART单元所使用的IO口复用关系
  • 配置内核,将UART映射为设备文件

2、关于IO复用关系,可以查看海思芯片IO口复用关系表,由此可知大多数IO口的默认功能都不是作为UART单元来使用,故需要配置它们的复用关系,可以采用海思自带的himm工具来配置IO口的复用关系:

himm 0x120F0210 0x02
himm 0x120F0214 0x02

3、接下来是配置内核,以实现UART单元映射为linux下的设备文件,这里主要涉及就是海思的设备树更改,相对简单。进入SDK目录\\osdrv\\opensource\\kernel\\linux-3.18.y\\arch\\arm\\boot\\dts,找到以下设备树文件:

hi3531d-demb.dts  
hi3531d.dtsi

4、添加以下内容(仿照UART0):

#include "skeleton.dtsi"
#include <dt-bindings/clock/hi3531d-clock.h>
/ 
        aliases 
                fmc = &fmc;
                serial0 = &uart0;
                serial1 = &uart1;
                serial2 = &uart2;
                serial3 = &uart3;
                spi0 = &spi_bus0;
        ;
&uart0 
        status = "okay";
;
&uart1 
        status = "okay";
;
&uart2 
        status = "okay";
;
&uart3 
        status = "okay";
;

5、至此海思UART单元配置完成,重新编译内核,并将内核烧录到板子上启动。如果没有什么异常,在设备上的/dev目录下会有以下4个设备文件出现,接下来软件对此设备文件进行编程操作即可:

 /dev/ttyAMA0
 /dev/ttyAMA1
 /dev/ttyAMA2
 /dev/ttyAMA3

6、与其他的linux设备操作类似,通过open、fcntl、read、write、close来实现与UART单元进行操作。在串口设备中,比较特殊的就是串口的波特率、奇偶校验、数据位以及停止位的设置了,只有将它们正确设置了才能进行串口通讯:

  • tcgetattr 获得串口属性
  • 设置波特率、数据位、停止位、校验位、流控…
  • tcsetattr 设置串口属性
  • open
  • write
  • read
  • close

二、调试当中遇到的问题

  • 首先排除代码层面的问题,确定是软件问题还是硬件配置问题;

  • 查看硬件配置是否正确;

  • cat /proc/tty/driver/ttyAMA //查看串口收发情况

      stty -a -F /dev/ttyAMA2  //查看串口属性
      
      stty -F /dev/ttyAMA2 ispeed 9600 ospeed 9600 cs8  //设置串口属性
    
  • 思考有哪些被忽略的点;

  • 与其他接口进行对比,看是否有区别,比如查看各个串口配置寄存器的差异:

三、相关文档

文档一

文档二

文档三

文档一是海思芯片IO口复用关系表,由此可知IO口的默认功能都不是作为UART单元来使用,故需要配置它们的复用关系,其他IO口配置,可以使用如上方法配置。

文档二为3531D的芯片外围接口说明。

文档二为3531D芯片外围接口的一些调试方法和说明。

外围调试工具(包括himm等)在系统编译后的代码目录下,目录为:osdrv/pub/bin/board_glibc/。

himm有三大作用:

  • 参考表一配置管教,使能对应的功能;
  • 配置寄存器GPIO_DIR,选择GPIO是作为输入还是输出;
  • 当配置成输入管脚时,读取GPIO_DATA寄存器可查看输入信号值,当配置成输出管脚时,通过向GPIO_DATA寄存器写入输出值,可控制GPIO的输出电平;

配置参考资料:

https://blog.csdn.net/aaa794708075/article/details/84791600

https://blog.csdn.net/dosthing/article/details/82951207

https://blog.csdn.net/yanhuan136675/article/details/82766466

https://blog.csdn.net/d413429304/article/details/78589433

以上是关于Hi3531D串口配置流程的主要内容,如果未能解决你的问题,请参考以下文章

Hi3531D内核烧录调试

将EC20移植到hisi3531D出现的问题

电路知识分享利用三极管转换串口电平信号

Minicom串口工具安装及配置

海思HI35xx平台串口配置方法

51单片机里的RS232串口电压肯定不会超过5V,为啥还要MAX232电平转换呀。用PL2303,还需要MAX232吗。