stm32usart通信接口

1.目的:将一个设备的数据传输到另一个设备,扩展硬件系统

2.通信协议:指定通信的规则,通信双方按照协议规则进行数据收发

1.全双工:双方能够同时进行双向通信(一班有两根通信线,一根发送,一根接收)

2.单工:只能从一个设备到另一个设备

3.时钟特性:接收方可以在时钟信号的指引下进行采样,无时钟线需要约定一个频率(异步通信,还需要加帧头和帧尾,进行采样位置对齐)

4.电平特性:

1.单端:引脚高低电平都是对GND的电压差,所以通信双方必须共地(把GND接在一起)

3.串口通信:单片机的串口可以使单片机与单片机,单片机与电脑与各种模块互相通信

4.串口模块

1.USB转串口:

1.搭载了可以把串口协议转换为USB协议的CH340芯片,实现单片机与电脑的通信

2.陀螺仪

1.可以测量角速度,加速度这些姿态参数

2.左右各有4个引脚,一边是串口,另一边是I2C

3.蓝牙串口模块

1.模块中的芯片可以和手机互联

5.硬件电路

1.TX发送RX接收

2.TX,RX需交叉连接

3.当只需单向数据传输时,可以只接一根通信线

4.当电平标准不一致时,需要加电平转换芯片

6.电平标准

1.电平标准是数据1和0的表达式,是传输线缆中认为规定的电压与数据的关系

2.常用电平标准

1.TTL:+3.3或+5为1,0伏表示0

2.RS232:-3--15为1,+3-+15为0

3.RS485:两线压差+2-+6为1,-2--6为0(差分信号)

7.串口参数及时序

1.波特率:串口通信的速率

2.起始位:标志一个数据帧的开始,固定为低电平

3.数据位:数据帧的有效载荷,1为高电平,0为低电平,低位先行

4.校验位:用于数据验证,根据数据位计算而来(奇校验在传输数据为末尾补1,保证1为奇数,接收方验证1的个数还是奇数,就认为数据没出错,偶校验同理)

5.停止位:用于数据帧间隔,固定为高电平

6.串口时序波形

8.usart简介

1.usart是stm32内部集成硬件外设,可根据数据寄存器的一个字节数据自动生成数据帧时序,可从tx发射,也可自动接收rx的数据帧拼接为一个字节数据,存放在数据寄存器里

2.自带波特率发生器,最高达4.5MBits

3.可配置数据位长度(8/9),停止位长度(0.5/1.5/2)

4.可选校验位(无校验/奇校验/偶校验)

5.支持同步模式,硬件流控制,DMA,智能卡,IrDA,LIN

9.电路示意图

1.TDR和RDR共用一个地址

2.nRTS是输出脚,nCTS是输入脚(n意思是低电平有效)

接线方法:

1.找另一个支持流控的串口,TX接到这个串口RX,RTS要输出一个能不能接收的反馈信号,接到对方的CTS,能接收时,RTS就置低电平,请求对方发送,对方CTS接收到之后,就可以一直发,处理不过来时,RTS就会置高电平,对方CTS接收到之后,就会暂停发送,知道接收数据寄存器被读走,RTS置低电平,新的数据才会继续发送

2.CTS和RTS要交叉连接

3.SCLK是用于产生同步的时钟信号,配合发送移位寄存器输出,发送寄存器没移位一次,同步时钟电平就跳变一个周期(只支持输出,不支持输入)

用途

1.兼容别的通信协议

2.做自适应波特率

4.唤醒单元

1.作用:实现串口挂载多设备,发送指定地址时,此设备唤醒开始工作

5.中断输出控制:配置中断是否能通向NVIC

1.中断申请位:状态寄存器的各种标志位(TXE发射寄存器空,RNXE接收寄存器非空,用于判断发送状态和接收状态)

6.波特率发生器(分频器):APB时钟进行分频,得到发送和接收移位的时钟

1.时钟输入:fPCLKx(x=1或2,USART挂载在APB2(72M)其他的USART挂载在APB1(36M))

2.进行分频:除一个USARTDIV的分频系数,分频完成后,再除以16,得到发送器和接收器时钟,通向控制部分

3.TE为1,发送器失能,发送的波特率就有效,RE为1,接收器使能,接收部分的波特率就有效

10.基本结构图

1.寄存器往右移,低位先行

2.数据由数据寄存器转到移位寄存器时,会置一个TXE标志位,判断标志位就可以知道是不是可以写下一个数据

3.写入DR寄存器时数据走上面这条路,进行发送,读取时走下面这条路,进行接收

11.数据帧

再程序中配置8位字长和9位字长(数据位长度)进行波形对比

1.stm32的串口可以配置停止位长度为0.5,1,1.5,2四种,四种参数的区别是停止位市场不一样

2.起始位侦测

1.当输入电路侦测到一个数据起始位后,就会以波特率的频率,连续采样一帧数据,同时,从起始位开始,采样位置就要对齐到位的正中间(第一位对齐,后面肯定对齐)

2.采样时钟会以波特率16倍频率进行采样(1位的时间进行16次采样)

3.开始置1,采到0之后证明出现下降沿

4.数据采样

1.从1-16,是一个数据位时间的长度(在1个数据位,有16个采样时钟)

2.数据采样过程判定标准为2:1(两次以上为1返回1,两次以上为0返回0)

3.波特率发生器(分频器)

1.发送器和接收器的波特率有波特率寄存器BRR里的DIV决定

2.计算公式:波特率=fPCLK2/1/(16*DIV)

12.库函数

1.void USART_ClockInit(USART_TypeDef* USARTx, USART_ClockInitTypeDef* USART_ClockInitStruct);

void USART_ClockStructInit(USART_ClockInitTypeDef* USART_ClockInitStruct);:用于配置同步时钟输出,包括时钟是否要输出,时钟的极性相位等参数

2.void USART_DMACmd(USART_TypeDef* USARTx, uint16_t USART_DMAReq, FunctionalState NewState);:可开启USART到DMA的触发通道

3.void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);

uint16_t USART_ReceiveData(USART_TypeDef* USARTx);:发送和接收数据

13.串口接收有查询和中断两种方法

1.查询

1.流程:在主函数里不断判断RXNE标志位,置1则说明收到数据,在读取DR寄存器即可

2.中断

1.流程:开启RXNE标志位到NVIC输出

2.在if函数内若读取DR则自动清除,若没读取则手动清除

相关推荐
赖赖-2 小时前
畅想视界巨匠P240G vs 华为擎云V540:谁更适合窗口场景?
网络·人工智能·电脑·边缘计算
那年窗外下的雪.2 小时前
VXLAN EVPN 分层排障:从 VTEP 可达、ARP/MAC 到 MAC Mobility
服务器·前端·网络·数据库·spine
AI风控技术指南2 小时前
大模型安全围栏厂商评估:以数美科技为例拆解能力、架构和 POC 指标
大数据·网络·人工智能
ZJU_统一阿萨姆2 小时前
【算子开发】全局内存访问与合并访存
java·服务器·网络·人工智能·语言模型
FTS苏州运营部-富港包装检测技术3 小时前
YY/T 0681.3‑2010 无约束包装抗内压破坏试验 技术笔记
笔记·yy/t 0681.2·yy/t 0681.3·yy/t 0681.9·astm f1140·无约束包装·astm f2054
来让爷抱一个3 小时前
拯救我的“烂尾“项目:我用MonkeyCode把五个AI热点实践了个遍
网络·数据库·人工智能·prompt·ai编程
byte轻骑兵3 小时前
【BlueZ 】蓝牙 L2CAP 协议核心:BlueZ 中基础数据传输的源码落地
linux·网络·网络协议·bluez·嵌入式蓝牙
数据知道3 小时前
网络安全实战:漏洞扫描器对比——Nessus、OpenVAS、Nuclei 实战评测
网络·安全·web安全·网络安全
袁小皮皮不皮3 小时前
数通完整讲义-上册-HCIA篇
服务器·网络·网络协议·tcp/ip·智能路由器