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串口配置流程的主要内容,如果未能解决你的问题,请参考以下文章
51单片机里的RS232串口电压肯定不会超过5V,为啥还要MAX232电平转换呀。用PL2303,还需要MAX232吗。