历史上的今天
今天是:2024年09月09日(星期一)
2019年09月09日 | 正点原子STM32F4(11)串行通信原理讲解
2019-09-09 来源:eefocus
讲解内容STM32:
串行通信接口的背景知识
STM32F4串口框图
STM32F4串口常用寄存器和库函数
串口配置方法
开发指南-库函数版本 5.3小节 usart文件夹介绍 第九章 串口通信实验
STM32F4中文参考手册 26章通用同步异步收发器
处理器与外部设备通信的两种方法
并行通信
传输原理:数据各个位同时传输
优点:速度快
缺点:占用引脚资源多
串行通信
传输原理:数据按位顺序传输
优点,占用引脚资源少
缺点、速度相对较慢





下图这样的接口,是232电平的,不能和单片机直接连接


串行输出


串行移位寄存器根据波特率进行数据传输,将数据通过 输入数据缓冲器到MCU

比如空闲状态是1,起始位是0,也是低电平开始传输,数据位8位,如果是9位是带奇偶校验的
奇偶校验:比如说在通信的过程中有8位的数据位+一个奇偶校验位。
偶校验:
1.如果8位数据中,1的个数是偶数个,那么检验位为0
2 如果8位数据中1的个数是奇数个,那么校验位位1(换言之:偶校验是保证8位数据位中1的个数为偶数个,奇校验与之相反)
下面讲解STM32F4第26章讲解一下串口框图,这里M3/M4几乎是一样的,只是有一点波特率发生器这里有一点细微的区别
主要看一下这个UART,TX是发送引脚,是数据发送出去的引脚,RX是接受引脚,直接到移位寄存器将数据放到接收数据寄存器(RDR)然后CPU通过总线去读取这个寄存器。如果要发送的话直接将要发送的数据写到发送数据寄存器(TDR),传输玩后将数据通过发送移位寄存器发送出去。之前说了发送和接收移位寄存器必须事先约定好一个 波特率(这个由下面的接收器控制和发送控制来决定)接收器控制和发送控制又由发送器时钟来决定,也就是发送和接收是共用一个波特率,在下面有一个串口的USART_BRR寄存器。
那么他有什么作用呢?
首先这个时钟是来自于fPCLKx(x=1或2),对于我们这个串口。F407的串口1-6使用的时钟是PCLK2,串口2到5使用的是PCLK1,
然后时钟除以 /USARTDIV,USARTDIV的值是由USARTBRR这个寄存器来设置的。
fPCLKx /USARTDIV后产生的频率,再经过采样除法器,这里除法器(/(8*(2-over8)))将频率在进行一次分频,这里就是F4的一个特点为了提高容错性采取的,为了更好的容错一般讲这个over8设置为0.那么这里/(8*(2-over8)),就是/16,也就是16分频吧这个时钟作为发送器和接收器时钟,然后发送器和接收器时钟就到了发送移位寄存器和接收移位寄存器来控制数据的传输速率。如下图USARTDIV右的就是分数波特率发生器,这个分数波特率发生器稍后会讲解,也就是说有了这个分数波特率发生器,PCLK不仅可以除以1和2,还可以除以一个小数,对于发送控制和接收器控制还有两个寄存器:CR1和SR..
SR主要是一些标志位:TXE表示发送数据寄存器非空。
CR1控制寄存器:可以分为两部分,后半部分是一些使能位,TE/RE 发送和接收使能。高位是一些中断使能位。右图是一些红外和智能卡相关的,不是今天的内容。
还有一个硬件流控制器,对于UART通信的话没有用到这个硬件流控制。





史海拾趣
|
edimechn dlgmgr dlgmnem gwectrl btnctl stcctl edctl msgbox msgbox_hpc dlgmgr_hpc menu_hpc EditControlOs startup oomui oom startui cmbctl cdlctl imgctl lbctl scbctl sbcmnview nclientview gcacheview btnctlview stcctlview cmbctlview ...… 查看全部问答> |
|
//驱动中write函数 对物理地址WR_ADDR写 0x1234abcd ssize_t regs_op_write( struct file *filp, char *buf, size_t count, loff_t *f_pos) { char *tmp; ...… 查看全部问答> |
|
大家好,这篇是我正式发表的第一篇博客,作为微时代的人们,大家现在已经没有时间来看冗长的博客文章了。可是要说到学习,那必须有个积累的过程。那么静下心来阅读有内容的文章(博客或者是书籍)依然是系统学习一门知识的不二之选。 现在大家在某 ...… 查看全部问答> |
|
在做一个需要将光电传感器接收到的光信号经过放大、处理,最终转化为显示屏上的数值的课题,不知这信号转换方面该用什么设备,求指点。或者。。有无直接将这方面组合为一体的设备,有的话请留下具体的联系方式和设备的大致信息。谢谢!!!!… 查看全部问答> |
|
最近在学msp430f5438,装了IAR后发现头文件里没有5438的头文件,比如 TACTL,TAR等这些寄存器不能识别,是没有头文件这个原因导致的吗?如果是可以把5438的头文件发给我吗?或者是其他什么原因?求各位大神赐教… 查看全部问答> |




