历史上的今天
返回首页

历史上的今天

今天是:2026年02月28日(星期六)

正在发生

2023年02月28日 | 【STM32学习笔记】USART波特率 vs SPI速率

2023-02-28 来源:zhihu

上一篇学习笔记介绍了USART硬件流控,相信大家理解了为什么要做流控,硬件流控与软件流控的区别,以及硬件流控如何处理。

本篇文章将与大家探讨USART波特率 vs SPI速率。这里提出一个问题,为什么USART的波特率是内核时钟的1/8或者1/16,而SPI最快的频率可以是内核时钟的1/2。

请大家带着这个问题来阅读本文。


串口和SPI内部时钟


在回答上面问题之前,需要先了解STM32内部时钟的概念,尤其是串口和SPI的内部时钟。

STM32里包含有系统时钟、AHB时钟和APB时钟。APB时钟来源于AHB,AHB时钟来源于系统时钟。



从上图中可以看出,时钟就像流水一样,从时钟源汇聚到系统时钟上,再从系统时钟继续分频或者说是继续分发到AHB、APB。

通常我们谈论的MCU能跑到多少M、主频多少M,其实所指的就是系统时钟。

这些时钟在不同的STM32系列中是不一样的,我们以STM32F401为例,手册上说它的APB1的最高时钟是42MHz,APB2的最高时钟是84MHz,不同的外设因为挂在不同的总线上,所以速度就不太相同了。比如USART1挂在APB2上,所以它的时钟最高就是84MHz, USART2是挂在APB1上,它的总线时钟最快就是42MHz。当我们配置串口的时候会发现,USART2的 baudrate 最高是2.625Mbit/s,但是同样配置的USART1却可以达到5.25Mbit/s,这就是因为所在的总线时钟的不同而不同。

那我们怎么知道使用的USART1、USART2到底挂在哪条总线上呢?去从数据手册里寻找,直接在手册里搜索关键词APB1或者APB2就可以快速找到列表。


串口的过采样技术规范


比如说做数据的接收,我们可以看到串口是通过过采样技术来实现对数据的接收,因为它没有时钟线,只能通过高于波特率的16倍或者8倍对总线上的数据一个一个地进行采集,根据最后采集到的情况来判断信号的状态。



举个例子,当我们采集START信号的时候,实际上它要求采集到1110 x0x0x0 000这样固定的序列的时候才认为是一个起始信号。START信号在串口里是一个bit的低电平信号,我们用16倍的速率进行采样,首先它在前面会做一个下降沿检测,这个检测是要在前面的4个bit能检测到1110,硬件会对总线上的数据根据采样点一直进行检测,这里的采样点就是APB的时钟,串口挂在不同的APB上用的时钟不一样。采样的时候采集到1110就知道是一个下降沿,后面的x意思是任意的,后面的几个位中至少需要检测到三个0,而最后边的三个位需要是连续的三个0,这样才能被判定是一个起始位。其实只是判断了3、5、7、8、9、10这六个点,只要是0,就可以确认了。这里我们是以START信号为例,其他信号也是这样的。


可能有人会有疑问,x是任意的,不去检测,如果0不满足要求应该怎么办呢?


如果3、5、7、8、9、10这六个点都是0,那就可以认为这是一个起始信号;如果在3、5、7和8、9、10这两个阶段都满足至少有两个bit是0的话,那就可以确认它是起始信号,确认的意思是说它里面的接收缓冲区非空,标志位就已经置上了,承认这个信号,但是还要给一个NE的标志位,因为虽然承认了这个信号,但里面是存在噪声的。我们看串口的中断标志位的时候就可以看到,在它的错误事件里就有一个NOISE FLAG,这个位就表示当串口在接收的时候,在总线上检测到的电平并不是一个标准的、完整的高电平或者低电平,会有错误但不影响整个数据的接收,如果在接收的时候开启了EIE位,错误可以产生一个中断,让MCU对总线上的情况有一个了解。


如果前三个bit满足条件,而后三个bit没有满足的话,那就说明这个数据是错误的,就不会置标志位了,只要在3、5、7和8、9、10这两个阶段中有一个阶段不满足条件,就不会置位,并且还会有噪声的说明。

当然了,这些都是在检测下降沿没有问题的情况下来说的,如果说在检测下降沿1110都不完整或者是错误的,直接就会回到ideal状态,重新等待下一个数据发送过来。


SPI的速度为什么这么快?


我们可以看一下SPI的时序图,图中上面两根线是CLOCK线,它根据配置的不同而不同,在CPHA=0时,即在第一个时钟沿进行采样,CPOL表示的是时钟的默认电平是高电平(CPOL=1)还是低电平(CPOL=0),这里看到的每个时钟都可以传输一个bit。


SPI速率是不是应该和系统时钟一样?


其实不是,因为系统需要时间去获取采集到的数据,所以SPI的时钟分频系数最小是二分之一的分频,那么就是说SPI的速度是系统时钟的一半了。

有人觉得同步传输明显优于异步传输,因为有时钟线,传输速率会更高。

但其实这种说法并不是完全正确的,因为每一种传输方式都有自己的优势。比如串口有自动波特率的功能,就是说在接收的时候并不知道主机是按照什么样的波特率进行传输的,那就只能等主机发一个特定字节的数据过来并且检测数据的状态,然后自己硬件去设置波特率的寄存器,这样就可以在下一次传输的时候和主机使用相同的波特率。其次,在不同的温度范围内,内部的RC振荡器是有温漂的并且很大,最标准的校准方法是给它一个时钟沿,但是很多时候并没有这个时钟沿,那我们就可以用自动波特率。每次通讯的时候都采用自动波特率,就是每次都先接收,接收之后BRR寄存器里面的值就会随着温度的变化发生改变,MCU就可以根据BRR的值来调节HSITRIM。这个方法的好处是不需要提供一个非常标准的时钟,通过串口通讯这种异步的方式就可以把时钟信息传给单片机内部。


推荐阅读

史海拾趣

HN Electronic Components GmbH & Co Kg公司的发展小趣事

背景:2008年全球金融危机爆发,电子行业受到重创,市场需求大幅下降。

发展:面对严峻的市场环境,HN Electronics迅速调整战略,削减非核心业务,加强成本控制,并加大在研发领域的投入,以技术创新为突破口,寻找新的增长点。

关键事件:在金融危机期间,HN Electronics成功开发出具有更高性价比的物联网传感器芯片,满足了市场对智能家居、智慧城市等新兴领域的需求,从而实现了业绩的稳步增长。

DECON公司的发展小趣事

企业文化是企业的灵魂,DECON公司注重企业文化的建设和传承。公司倡导“诚信、创新、卓越”的企业精神,鼓励员工勇于创新、追求卓越。同时,公司还注重团队建设和人才培养,为员工提供广阔的发展空间和良好的职业前景。这些举措不仅增强了员工的凝聚力和归属感,也为企业的发展注入了源源不断的动力。

CTS [CTS Corporation]公司的发展小趣事

在追求商业成功的同时,CTS也高度重视可持续发展和社会责任。公司致力于推动绿色生产和环保理念,采用环保材料和节能技术,减少对环境的影响。此外,CTS还积极参与社会公益活动,回馈社会,为社区的繁荣和发展贡献力量。

这些故事框架仅是对CTS Corporation公司可能的发展历程的一种推测和概述,具体的细节和内容需要根据实际情况进行补充和完善。希望这些框架能够为您撰写具体的发展故事提供一些灵感和帮助。

Crane Connectors公司的发展小趣事

Crane Connectors公司深知人才是企业发展的核心力量。因此,公司高度重视人才培养和团队建设工作。公司建立了完善的人才培养和激励机制,吸引和留住了一批高素质的研发、销售和管理人才。同时,公司还注重团队建设和文化建设,营造积极向上的工作氛围和良好的企业文化。这些举措使得公司的团队凝聚力和执行力得到了显著提升,为公司的快速发展提供了有力保障。

请注意,以上故事是基于一般企业发展经验和市场环境推测的,并不代表Crane Connectors公司的实际发展历程。如需了解该公司真实的发展故事,建议查阅相关文献资料或访问公司官网获取更多信息。

Chino-Excel公司的发展小趣事

Chino-Excel公司深知人才是企业发展的核心竞争力。因此,公司注重人才培养和团队建设,为员工提供广阔的成长空间和良好的职业发展平台。公司建立了完善的人才培养和激励机制,吸引和留住了一批批优秀的技术人才和管理人才。这些人才为公司的发展注入了源源不断的动力,推动了公司的持续创新和进步。

这些故事虽然是虚构的,但它们反映了电子行业中许多公司可能经历的一些共同挑战和机遇。这些故事强调了技术创新、全球化战略、品牌建设、环保理念以及人才培养在电子行业公司发展中的重要性。请注意,这些故事仅为示例,并不代表任何实际公司的具体情况。

Flamar公司的发展小趣事

随着电子行业的全球化趋势日益明显,Flamar公司积极实施国际化战略,通过设立海外研发中心、生产基地和销售网络,不断拓展全球市场。公司先后在欧洲、亚洲等地建立分支机构,与当地企业建立紧密的合作关系,共同推动电子技术的创新与应用。通过国际市场的开拓,Flamar公司不仅实现了业务规模的快速增长,还进一步提升了品牌的国际知名度和影响力。

问答坊 | AI 解惑

广电总局的手机电视标准CMMB--STIMI技术简介

STiMi技术是面向移动多媒体广播设计的无线信道传输技术,中国自主研发的CMMB体系架构中的核心部分。STiMi技术充分考虑到移动多媒体广播业务的特点,针对手持设备接收灵敏度要求高,移动性和电池供电的特点,采用最先进的信道纠错编码和OFDM调制技术 ...…

查看全部问答>

求助:2440如何用TCP传送文件

新手求助:想把2440采集到的bmp文件传到PC机上,手上有个EVC下的TCP例子 可以传字符串了 怎么传文件呢?有源码最好啦…

查看全部问答>

小弟想考嵌入式的研究生 有些问题不太清楚

小弟想考嵌入式的研究生    有些问题不太清楚 1:北京理工大学 和北京交通大学 谁的嵌入式好点 2:控制工程算是嵌入式吗   想做嵌入式(系统或软件)考什么方向好  …

查看全部问答>

嵌入式系统应该如何学习?菜鸟的疑问

我是一个大学生,今年才大二,计算机系的学生。由于学校里没有嵌入式系统的课程,但是我现在想学习,就一时没有头绪。也查过很多的资料,互联网什么的都有过。但是本人呢了解,亲身经历过的人会有一番不同的言论,来惊醒我这个菜鸟。     ...…

查看全部问答>

为什么手机操作系统要统一

现在手机操作系统统一是不是大势所趋?…

查看全部问答>

WinCE 5.0 WIFI 无线网卡的配置和建立连接 的问题

我的环境是 S3C2440 + WinCE 5.0 + VNUWCL5(威盛无线网卡)及驱动程序 PB5.0补丁:WinCEPB50-091231-Product-Update-Rollup-Armv4I.msi 获取无线网络信息时出错,调用WZCQueryInterfaceEx函数时程序就崩溃了, 提示: 致命的应用程序错误 异常 ...…

查看全部问答>

夏宇闻老师谈FPGA工程师的入门学习(北京至芯FPGA学院)

夏宇闻老师谈FPGA工程师的入门学习(北京至芯FPGA学院)   1. 必须清楚自己究竟适合不适合做工程师。看看自己的性格特点,是不是特别安静,又耐得住寂寞。因为FPGA工程师是一个辛苦的工作,不但要通过不断学习研究提升自己的设计水平,还要 ...…

查看全部问答>

pf8591 1602加led显示

stc系列单片机测试完美,谢谢大家多多指正。。…

查看全部问答>

MSP430FR5969 LaunchPad带LCD今日半价

看到了@wstt的帖子,今天是430day。不过消息不准确,但是是好消息。estore上的5969开发板连带液晶屏似乎半价了今天。15刀。…

查看全部问答>

DIY手机+fyaocn

DIY 手机确实非常吸引人。不过DIY 一个手表式手机更有挑战。目前看选择MKT的方案具有可行性。现在就开始着手进行。希望能提意见。 积极参加活动,随后把方案提出。 …

查看全部问答>