01:USART串口外设
USART基本结构
时钟来源:PCLK2/1
波特率发生器->进行分频产生时钟通向发送/接收控制器->控制发送/接收移位->数据转向TX/RX(通过GPIO)
从发送数据寄存器转移到移位寄存器置TXE标志位,判断标志位来决定是否写下一个数据
(接收同理)
数据帧
选9位字长有校验,或8位字长无校验
02:串口的接收/发送
第一步:开启时钟,把需要用的USART和GPIO的时钟打开
第二步:GPIO初始化,把TX配置成复用输出,RX配置成输入
第三步:配置USART
第四步:配置中断,开启ITconfig和NVIC(输出使用)
第五步:开启USART
数据模式
HEX模式/十六进制模式/二进制模式:以原始数据的形式显示
文本模式/字符模式:以原始数据编码后的形式显示
完成实验现象
03:USART串口数据包
数据包的作用:将一个个单独的数据打包/分割
传输数据与包头包尾冲突:(解决方法)
1)限制载荷数据的范围:在发送时对数据进行限幅。(如发送x,y,z在0~100之间,则可限定发送范围为0~100)
2)如果无法避免载荷数据与包头包尾重复:尽量使用固定长度数据包。
3)增加包头包尾的数量,尽量使其呈现出载荷数据出现不了的状态
包头包尾可以不全要(如只要包头)
HEX数据包
优点:传输最直接,解析数据非常简单,适合模块发送原始的数据。(如使用串口通信的陀螺仪、温湿度传感器。
缺点:灵活性不足、载荷容易与包头包尾重复
HEX数据包接收
执行流程:(固定包长)
开始S = 0收到数据,进入中断,根据S = 0进入第一个状态的程序,判断数据包头是不是FF ,若是,则后置S = 1,退出中断,结束。后如图:
文本数据包
通常以换行作为包尾
优点:数据直观容易理解,非常灵活,适合一些输入指令进行人机交互的场合。(如蓝牙模块中的AT指令、CNC和3D打印的G代码)
缺点:解析效率低
文本数据包接收
执行流程:(可变包长)
接收数据时时刻监视是否收到包尾。如图: