当前位置: 首页 > article >正文

3. STM32_串口

数据通信的基础概念

什么是串行/并行通信:

串行通信就是数据逐位按顺序依次传输

并行通信就是数据各位通过多条线同时传输。

什么是单工/半双工/全双工通信:

单工通信:数据只能沿一个方向传输

半双工通信:数据可以沿两个方向传输,但需要分时进行

全双工通信:数据可以同时进行双向传输

什么是同步/异步通信:

同步通信:共用同一时钟信号,有时钟线。

异步通信:没有时钟信号,通过在数据信号中加入起始位和停止位等一些同步信号。没有时钟线

什么是比特率/波特率:

比特率:每秒钟传送的比特数,单位bit/s

波特率:每秒钟传送的码元数,单位Baud

比特率 = 波特率 * log2 M ,M表示每个码元承载的信息量。二进制系统中,波特率数值上等于比特率

串口

什么是串口:

串口就是串行通信接口,指的是按位发送和接收的接口,发送顺序是低位先发

什么是USART/UART:

USART是通用同步异步收发器,UART是通用异步收发器。通常只使用异步通信功能。

1、收发流程

串口接收的流程:

外部设备通过RXD引脚将数据串行的传入到接收移位寄存器中,之后数据传给RDR,再由RDR传给DR。最终CPU通过读取DR的数据,从而获取到串口接收的数据。 

串口发送的流程: 

CPU向DR写入数据,之后数据传给TDR,再传给发送移位寄存器。最终发送移位寄存器将数据以串行方式通过TXD引脚发送出去,从而实现串口发送数据。 

USART串口收发框图:

2、设置波特率

 设置波特率的框图:

波特率与寄存器的关系:

baud:波特率

fck:串口的时钟,挂载的总线需要查看手册。在F1中USART1的时钟总线是PCLK2,其他串口是PCLK1。 

假设我们需要的USART1的参数是baud = 115200,PCLK2 = 72MHz。则USARTDIV = 39.0625

通过BRR寄存器配置USARTDIV:

USART_BRR寄存器的各位含义如下:

根据上述要配置的USARTDIV = 39.0625可知,整数部分是39,直接转为二进制写入BRR即可,[15:4] = 0010 0111(39)

小数部分是0.0625,需要先套用如下公式,再转为二进制写入BRR:

最终小数部分计算值 = 0.0625 * 16 = 1。所以[3:0] = 0001(1)

代码实现波特率配置:

uint16_t mantissa; 
uint16_t fraction; 
mantissa=39; 
fraction=0.0625*16+0.5=0x01;      /* USARTDIV = DIV_Mantissa + (DIV_Fraction/16) */
USART1->BRR = (mantissa << 4) + fraction;


http://www.kler.cn/a/420507.html

相关文章:

  • JS实现高效导航——A*寻路算法+导航图简化法
  • 服务器数据恢复—EVA存储硬盘磁头和盘片损坏离线的数据恢复案例
  • 【测试工具JMeter篇】JMeter性能测试入门级教程(七):JMeter断言
  • C—操作符易错点
  • 基于单片机的WIFI、语音、储存、时钟、闹钟、定位系统
  • ElementUI:el-drawer实现在父组件区域内打开抽屉组件非全屏
  • 【无标题】在ensp中配置isis协议
  • 信创改造 - Redis -》TongRDS 安装方式之单节点模式安装
  • Scratch游戏推荐 | 星际前线:帝国逆袭——揭开帝国野心,挑战星际极限!
  • spider--某站搜索--自动化dp
  • ASP.NET Core MVC 入门
  • html+css+js网页设计 旅游 厦门旅游网14个页面
  • Java函数式编程【二】【Stream的装饰】【中间操作】【map映射器】【摊平映射器flatMap】
  • IPv6 如何实现网络安全?
  • 统信服务器操作系统V20系列配置JDK方案
  • 【java-Neo4j 5进阶篇】- 1.批量新增数据
  • 1128作业
  • Debezium Engine监听binlog实现缓存更新与业务解耦
  • redhat 7.9配置阿里云yum源
  • Android 原生解析 Json 字符串
  • 《Vue零基础入门教程》第十五课:样式绑定
  • 黑马程序员MybatisPlus/Docker相关内容
  • MFC工控项目实例三十四模拟量实时监控数字显示效果
  • Git Bash + VS Code + Windows11 Git命令报错莫名奇妙的问题
  • 数据库(学习笔记)
  • YOLOv11 NCNN安卓部署