linuxARM裸机学习笔记(6)----UART串口通信和串口格式化函数移植实验

UART串口通信

协议介绍:串口通信协议_ft232和ch340是串口的哪种协议_夜路难行々的博客-CSDN博客

I.MX6U UART

UART时钟源选择的是pll3_80m,然后在(bit5:0)设置分频值,设置为1分频
linuxARM裸机学习笔记(6)----UART串口通信和串口格式化函数移植实验_第1张图片

 

ADBR(bit14) :自动波特率检测使能位,为 0 的时候关闭自动波特率检测,为 1 的时候使
能自动波特率检测
UARTEN(bit0) UART 使能位,为 0 的时候关闭 UART ,为 1 的时候使能 UART

linuxARM裸机学习笔记(6)----UART串口通信和串口格式化函数移植实验_第2张图片

 

IRTS(bit14) :为 0 的时候使用 RTS 引脚功能,为 1 的时候忽略 RTS 引脚。
PREN(bit8) :奇偶校验使能位,为 0 的时候关闭奇偶校验,为 1 的时候使能奇偶校验。
PROE(bit7) :奇偶校验模式选择位,开启奇偶校验以后此位如果为 0 的话就使用偶校
验,此位为 1 的话就使能奇校验。
STOP(bit6) :停止位数量,为 0 的话 1 位停止位,为 1 的话 2 位停止位。
WS(bit5) :数据位长度,为 0 的时候选择 7 位数据位,为 1 的时候选择 8 位数据位。
TXEN(bit2) :发送使能位,为 0 的时候关闭 UART 的发送功能,为 1 的时候打开 UART
的发送功能。
RXEN(bit1) :接收使能位,为 0 的时候关闭 UART 的接收功能,为 1 的时候打开 UART
的接收功能。
SRST(bit0) :软件复位,为 0 的是时候软件复位 UART ,为 1 的时候表示复位完成。复位
完成以后此位会自动置 1 ,表示复位完成。此位只能写 0 ,写 1 会被忽略掉

 linuxARM裸机学习笔记(6)----UART串口通信和串口格式化函数移植实验_第3张图片

 寄存器 UARTx_UCR3 中的位 RXDMUXSEL(bit2),这个位应该始终为 1

 linuxARM裸机学习笔记(6)----UART串口通信和串口格式化函数移植实验_第4张图片

 TXDC(bit3):发送完成标志位,为 1 的时候表明发送缓冲(TxFIFO)和移位寄存器为空,也

就是发送完成,向 TxFIFO 写入数据此位就会自动清零。
RDR(bit0) :数据接收标志位,为 1 的时候表明至少接收到一个数据,从寄存器
UARTx_URXD 读取数据接收到的数据以后此位会自动清零

 分频设置:linuxARM裸机学习笔记(6)----UART串口通信和串口格式化函数移植实验_第5张图片

 linuxARM裸机学习笔记(6)----UART串口通信和串口格式化函数移植实验_第6张图片

 波特率计算

波特率计算公式:Baud Rate = Ref Freq / (16 * (UBMR + 1)/(UBIR+1))

linuxARM裸机学习笔记(6)----UART串口通信和串口格式化函数移植实验_第7张图片linuxARM裸机学习笔记(6)----UART串口通信和串口格式化函数移植实验_第8张图片

设定的时钟频率为80MHZ,可以看出UBIR和UBMR的最大值为0XFFFF,,设置的分频系数为1,【0b101】,算出UBIR=71UBMR=3124的时候,波特率为115200.

实验结果:

linuxARM裸机学习笔记(6)----UART串口通信和串口格式化函数移植实验_第9张图片

串口格式化函数移植实验

串口格式化函数简介

格式化函数说的是 printf sprintf scanf 这样的函数,分为格式化输入和格式化输出两类
函数,通过 scanf 函数从键盘获取输入。这样就有了输入和输出了,实现了最基本的人机交互,在 I.MX6U-ALPHA 开发板上也可以使用此方法, 将 printf scanf 映射到串口上,完成与开发板的交互

移植两个从uboot来的文件,因为是从uboot源码里面抠出来的,所以导致并不是完全版的格式化函数。【存在功能的欠缺】。

linuxARM裸机学习笔记(6)----UART串口通信和串口格式化函数移植实验_第10张图片

 实验结果:

linuxARM裸机学习笔记(6)----UART串口通信和串口格式化函数移植实验_第11张图片

你可能感兴趣的:(Linux,学习,笔记)