历史上的今天
返回首页

历史上的今天

今天是: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通信的话没有用到这个硬件流控制。

 


推荐阅读

史海拾趣

法思特(FAST)公司的发展小趣事
避免同时启动带来的电流冲击和电压波动对设备造成的损害,从而延长设备的使用寿命。
歌尔(Goertek)公司的发展小趣事
顺序延时启动可以避免部分热水器因过度加热而浪费能源,从而提高整体能源利用效率。
AXSEM公司的发展小趣事
避免同时启动带来的电流冲击和电压波动对设备造成的损害,从而延长设备的使用寿命。
Daniels Manufacturing公司的发展小趣事

自1946年成立以来,Daniels Manufacturing Corporation一直致力于为军事和电信行业提供高质量的工具系统和技术。在20世纪70年代,DMC经历了一次重大的技术突破,成功研发出一种新型的手动压接工具,该工具能够精确、高效地处理各种电子连接器。这一技术的突破为DMC赢得了市场的认可,也为其后续的产品线扩展奠定了基础。在接下来的几十年里,DMC不断投入研发,推出了包括电动、气动、液压压接工具在内的多种产品,广泛应用于通信、光纤、激光等领域。

Econais公司的发展小趣事

随着技术的不断成熟和市场的日益扩大,Econais开始将目光投向全球市场。公司积极参加各类国际展会和研讨会,与全球各地的客户和合作伙伴建立联系。同时,Econais还针对不同地区的市场需求,推出定制化的产品和解决方案。这些努力使得Econais在全球范围内的市场份额逐渐扩大。

Avasem公司的发展小趣事

在电子行业的初创期,Avasem公司以其独特的技术创新而崭露头角。创始人团队在半导体材料领域拥有深厚的研究背景,他们成功研发出了一种新型的、性能卓越的芯片材料。这一突破不仅大幅提升了电子设备的运算速度和能效,还降低了生产成本。随着市场对该材料的需求日益增长,Avasem公司迅速获得了风险投资的青睐,并通过与各大电子制造商的合作,将产品推向全球市场。公司因此实现了快速扩张,并在行业中建立了良好的口碑。

问答坊 | AI 解惑

TC下如何生成lib文件

各位高手,我想在TC下,写一个LIB文件,但不知如何下手,LIB文件的格式是什么样的?还望各位指点迷津,如有例子最好,在此先行谢过。…

查看全部问答>

用pb生成wince时,报如下错,请高手指点!

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 ...…

查看全部问答>

请问,cpld中也能设定rom嘛?

请问,cpld中也能设定rom嘛?    看过 fpga的可以,不知道cpld的怎么样啊  …

查看全部问答>

iar442不能设置断点是怎么回事啊?

                                 rt…

查看全部问答>

LPC1100大家族

LPC1100家族不断庞大,期待未来更多的型号。 …

查看全部问答>

求救:字附型驱动write函数传入的char×型数据有问题

//驱动中write函数 对物理地址WR_ADDR写 0x1234abcd ssize_t regs_op_write( struct file *filp, char *buf,                 size_t count, loff_t *f_pos) {         char *tmp; ...…

查看全部问答>

STM32 用AD 实现TFT彩屏的触摸

上次看到论坛上说STM32有一种可以用AD采集实现触摸,可是找不到资料,请问有谁知道的,共享一下。…

查看全部问答>

verilog的语言系统学习(序)

大家好,这篇是我正式发表的第一篇博客,作为微时代的人们,大家现在已经没有时间来看冗长的博客文章了。可是要说到学习,那必须有个积累的过程。那么静下心来阅读有内容的文章(博客或者是书籍)依然是系统学习一门知识的不二之选。 现在大家在某 ...…

查看全部问答>

求指导 光电传感器电流/电压信号如何转化为显示器上的数值

在做一个需要将光电传感器接收到的光信号经过放大、处理,最终转化为显示屏上的数值的课题,不知这信号转换方面该用什么设备,求指点。或者。。有无直接将这方面组合为一体的设备,有的话请留下具体的联系方式和设备的大致信息。谢谢!!!!…

查看全部问答>

关于msp430的问题

最近在学msp430f5438,装了IAR后发现头文件里没有5438的头文件,比如 TACTL,TAR等这些寄存器不能识别,是没有头文件这个原因导致的吗?如果是可以把5438的头文件发给我吗?或者是其他什么原因?求各位大神赐教…

查看全部问答>