ARM体系结构和接口技术(七)串口实验

一、总线相关概念

(一)总线

总线:连接多个部件的信息传输线,是各部位共享的传输介质。
芯片内部总线:Cortex-A7核和外设控制器进行通信的总线
芯片外部的总线:SOC和各种传感器之间进行通信的总线

(二)串行和并行总线

串行总线:同一时刻只能收或发一个bit位信息
并行总线:同一时刻可以收或发多个bit位的信息
在这里插入图片描述
串行通信的总线:UART,IIC,SPI,485,CAN,USB
并行通信的总线:内存芯片,Flash芯片,液晶屏,摄像头

(三)单工、半双工、全双工

单工:在通信的任意时刻,信息只能由一方传至另一方,而不能反向传送

半双工:指在通信过程的任意时刻,信息既可由A传到B,又能由B传A,但两个方向上的传输不能同时进行。
半双工通信总线:IIC,485,CAN,USB2.0

全双工:在发送数据的同时也能够接收数据,两者同步进行。这种通信方式允许数据在两个方向上同时传输,相当于两个单工通信方式的结合。
全双工通信总线:UART,SPI,USB3.1

(四)同步通信和异步通信

在这里插入图片描述
同步通信:一般情况下同步通信指的是通信双方根据同步信号进行通信的方式。比如双方有一个共同的时钟信号,根据时钟信号进行通信
同步通信时钟:IIC,SPI

在这里插入图片描述
异步通信:异步通信是指数据传输速度匹配依赖于通信双方自己独立的系统时钟,约定好通信的速度。异步通信不需要同步信号,但是通信过程是同步的。
异步通信总线:UART,485,CAN,USB

二、串口

(一)概念

UART是通用异步串行全双工总线。
实际开发中一般使用三根线:RXD(接收数据线),TXD(发送数据线),GND(地线)
在这里插入图片描述

(二)实际开发中常用的串口连接方式

1. MAX232/SP232

在这里插入图片描述

2. CH340

在这里插入图片描述

3. ST-Link

在这里插入图片描述

(三)UART串口通信协议

在这里插入图片描述
在这里插入图片描述

起始位:一帧数据发送的开始信号
数据位:起始位之后要发送的数据,先发送数据的低位,再发送数据的高位。
校验位:奇偶校验
奇校验:数据位和校验位1的个数之和为奇数。
偶校验:数据位和校验位1的个数之和为偶数。
停止位:一帧数据发送结束,校准时钟信号

  • 注:串行通信一般先发数据低位,再发数据高位
  • 注:UART串口采用异步通信,通信双方采用各自独立的时钟系统,虽然要求双方的时钟频率保持一致,但是仍会存在一定误差,在数据发送的过程中误差会累积,因此发送一帧数据后要重新校准时钟

波特率:每秒数据传输的bit位,单位bps
串口常用的波特率为115200bps,9700bps

串口常用的通信协议:8N1(8个数据位,(N)没有校验位,1个停止位)

(四)串口电路图

UART_TX:----PG11
在这里插入图片描述

UART_RX:----PB2
在这里插入图片描述

(五)分析芯片手册

在这里插入图片描述

1. 确定RCC,GPIOB,GPIOG,UART4分别接到哪根总线上,以及外设寄存器的基地址

在这里插入图片描述

在这里插入图片描述

2. 分析RCC,使能GPIOB,GPIOG,UART4外设的时钟源

需要使能AHB4的GPIOB,GPIOG和APB1的UART4

(1)AHB4

在这里插入图片描述

(2)APB1

在这里插入图片描述
在这里插入图片描述

3. 设置GPIO

在这里插入图片描述

GPIO引脚的复用功能:GPIO引脚除了基本的输入输功能,还有很多其他的功能,但是实际应用中只能选择其中一个功能进行使用,通过配置相关寄存器选择GPIO引脚的功能。
在这里插入图片描述

(1)GPIOx_AFRL

在这里插入图片描述

(2)GPIOx_AFRH

在这里插入图片描述

4. 设置UART

在这里插入图片描述

串口框图

在这里插入图片描述

(1)USART_CR1寄存器

在这里插入图片描述

Bit28 M1位

在这里插入图片描述
在这里插入图片描述

Bit15 OVER8

串口为了提高数据采样的准确度,一般会采用时钟的频率为波特率N倍的方式
在这里插入图片描述
在这里插入图片描述
8倍采样率:
16倍采样率:

Bit10 PCE位

在这里插入图片描述

Bit3 TE位

在这里插入图片描述

Bit2 RE位

在这里插入图片描述

Bit0 UE位

在这里插入图片描述

(2)USART_CR2寄存器

在这里插入图片描述

(3)USART_BRR

在这里插入图片描述
BRR[15:4]
BRR[15:4] = USARTDIV[15:4]

BRR[3:0]
当over8 = 0时,(16倍采样率)
BRR[3:0] = USARTDIV[3:0]

当over8 = 1时,(8倍采样率)
BRR[2:0] = USARTDIV[3:0] >> 1
BRR[3] 必须保持清0状态

(4)USART_ISR寄存器

在这里插入图片描述
在这里插入图片描述
当发送寄存器(USART_TDR)中的内容被发送到移位寄存器时,硬件自动将其置1。
如果读到TXE位为1时,表示发送数据寄存器为空,用户可以向发送数据寄存器中写入数据;

当用户向发送数据寄存器写入数据后,发送数据寄存器不为空,硬件自动将其置0。
如果读到TXE位为0时,表示发送数据寄存器不为空,用户不可以向发送寄存器中写入数据。

在这里插入图片描述
当接收移位寄存器中的数据被传送到接收数据寄存器(USART_RDR)时,硬件自动将RXNE位置1,此时读RXNE位为1时,用户可以从接收数据寄存器中读取数据。

当接收数据寄存器中的数据被读取之后,硬件自动将RXNE位清0,
此时读RXNE位为0时,用户不可以从接收数据寄存器中读取数据,需要等待接收数据寄存器有数据。

(5)USART_RDR寄存器

在这里插入图片描述

(6)USART_TDR寄存器

在这里插入图片描述

(7)USART_PRESC寄存器

在这里插入图片描述

  • 注:这个寄存器只有在USART未使能状态下才能修改

(六)代码实现

UART发送代码实现思路
在这里插入图片描述
URAT接收代码实现思路
在这里插入图片描述

  • 注:\n是换行符,\r是回车符
  • 14
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值