1.串口概念
串口(串行通信接口)是一种通信方式,用于传输数据的,串行数据传输,指的是数据按位传输--传输慢,距离相对较远(15米左右)
0xaa--1010 1010 一个字节的数据按照bit传输
并口(并行通信接口)也是一种通信方式,比如屏幕8080接口 6800接口,这些都是并口,一次传输多位--传输快,距离近
相关概念:
按数据传输方式分类:
单工通信:
单工(Simplex Communication)模式的数据传输是单向的。通信双方中,一方固定为发送端,一方则固定为接收端。信息只能沿一个方向传输,使用一根传输线。---广播
半双工通信:收发不能同时进行
半双工(Half Duplex)数据传输指数据可以在一个信号载体的两个方向上传输,但是不能同时传输。例如,在一个局域网上使用具有半双工传输的技术,一个工作站可以在线上发送数据,然后立即在线上接收数据,这些数据来自数据刚刚传输的方向。像全双工传输一样,半双工包含一个双向线路(线路可以在两个方向上传递数据)。---对讲机
全双工通信:同一时间既可以接收数据,也可以发送数据
全双工通信又称为双向同时通信,即通信的双方可以同时发送和接收信息的信息交互方式。--手机
按时钟分类
异步通信:通信双方使用不同的时钟频率,收发双方各自都有自己的的时钟信号
同步通信:通信双方使用相同的时钟频率。
通信方式中一般包括硬件接口,和软件协议两部分
硬件接口规定了底层的电气特性,线缆,传输距离,通信速率
软件协议规定了在硬件接口的基础上,我们通信双方采用何种规定进行传输数据
通信双方必须遵守的一种规定--协议
2.STM32F103ZET6中串口
通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。 USART利用分数波特率发生器提供宽范围的波特率选择。它支持同步单向通信和半双工单线通信,也支持LIN(局部互连网),智能卡协议和IrDA(红外数据组织)SIR ENDEC规范,以及调制解调器(CTS/RTS)操作。它还允许多处理器通信。使用多缓冲器配置的DMA方式,可以实现高速数据通信。
USART特性:
- 全双工的,异步通信
- NRZ标准格式--串口数据传输格式
- 分数波特率发生器系统
发送和接收共用的可编程波特率,最高达4.5Mbits/s
- 可编程数据字长度(8位或9位)
- 可配置的停止位-支持1或2个停止位(2停止位,适用于红外收发)
波特率--单位时间(s),传输数据的位数
生活中的任何事情都是有误差的,误差只可以减小,不可以消除
NRZ数据格式:
起始位 +数据位+ 校验位 +停止位
1bit低电平 8bit 可有可无(1bit) 1Bit
起始位+0x55+校验+停止位--安全,稳定
校验的作用:保证数据的稳定传输
发送方发送数据之前会进行一次校验,得到一个校验码 value01
接收方发送数据之后会再次进行一次校验,得到一个校验码 value02
比较value01和value02的大小是否相等
奇偶校验:
奇数校验:检查数据中1的个数是否为奇数个
奇数校验:检查数据中1的个数是否为偶数个
0x55---0101 0101 0
3.配置串口通信
查看硬件原理图
PA9--复用推挽输出
PA10--浮空输入
软件配置流程
1.开时钟:A端口时钟 串口1时钟
2.配置IO口的工作模式
PA9--复用推挽输出
PA10--浮空输入
3.配置串口工作模式
起始位 数据位 校验位 停止位 波特率
以上所有内容都是通过寄存器实现
波特率的配置
程序中寄存器可以识别的是USARTDIV参数
而我们设置的波特率是:TX/RX波特率
波特率的设置,一般是需要我们工程师自己定义的;
常用的波特率:9600 115200 38400 4800.........
假如我们现在使用的波特率是115200
115200=fck/(16*usartdiv);
fck--串口的时钟72MHZ
usartdiv=72000000HZ*16/115200
USART相关的寄存器
USART_SR寄存器:主要是用于判断当前串口的收发数据或者中断的状态。
数据寄存器(USART_DR)
波特率配置寄存器
波特率的计算参考中文文档524页