侵权投诉

USART波特率与SPI速率对比

黄工的嵌入式技术圈 2020-01-15 16:37 次阅读

本文主要结合STM32,讲述UART和SPI有关速率相关的知识。

1.串口和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就可以快速找到列表。         2.串口的过采样技术规范    

比如说做数据的接收,我们可以看到串口是通过过采样技术来实现对数据的接收,因为它没有时钟线,只能通过高于波特率的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状态,重新等待下一个数据发送过来。

3.SPI的速度为什么这么快?    

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

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

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

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

收藏 人收藏
分享:

评论

相关推荐

STM32的DMA基本原理详细说明

DMA传输将数据从一个地址空间复制到另一个地址空间,提供在外设和存储器之间或者存储器和存储器之间的高....
发表于 02-27 08:00 6次 阅读
STM32的DMA基本原理详细说明

UART的Rx和Tx引脚如何互换 电平如何反转

UART的Rx和Tx引脚如何互换,电平如何反转
的头像 黄工的嵌入式技术圈 发表于 02-26 16:42 46次 阅读
UART的Rx和Tx引脚如何互换 电平如何反转

STM32MPU和OpenSTLinux你了解多少?

STM32MPU、OpenSTLinux你了解多少?
的头像 黄工的嵌入式技术圈 发表于 02-26 16:16 47次 阅读
STM32MPU和OpenSTLinux你了解多少?

关于电脑无法识别CH340电路

问题描述: 自己在网上买了一块STM32的最小系统板,板子提供了原理图,然后我依葫芦画瓢,画了个“一键下载电路”,如图1所示...
发表于 02-26 10:19 142次 阅读
关于电脑无法识别CH340电路

初学32单片机,遇到思考不懂的难题,请大佬指教!!!

我流水灯程序能亮了,但我试了一下全亮和全灭就出现以下问题,请各位大佬指教: #include "stm32f10x.h" /**  &...
发表于 02-26 09:11 263次 阅读
初学32单片机,遇到思考不懂的难题,请大佬指教!!!

意法半导体STM32MP157A MPU加持,米尔科技首款ST Linux开发板MYD-YA157C评测

ST公司去年推出了MPU系列芯片,MPU系列不同于以往产品,它既包含有ARM公司Cortex M 单....
的头像 米尔MYIR 发表于 02-25 14:30 174次 阅读
意法半导体STM32MP157A MPU加持,米尔科技首款ST Linux开发板MYD-YA157C评测

开发STM32MP1,怎能没有一块好开发板

STM32MP1系列的出现吸引了很多STM32的新老用户的关注,但是很多的人都会担心一个问题:以前是....
的头像 米尔MYIR 发表于 02-25 14:24 133次 阅读
开发STM32MP1,怎能没有一块好开发板

走进MEasy的世界:基于STM32MP1的IOT参考设计

走进MEasy的世界:基于STM32MP1的IOT参考设计 在万物互联快速发展的趋势下,板卡处理器性能、内存大小、接口外设等都是...
发表于 02-24 15:46 605次 阅读
走进MEasy的世界:基于STM32MP1的IOT参考设计

意法半导体推出新STSAFE安全单元为开发者提供经过认证的资产跟踪和品牌保护解决方案

意法半导体的STSAFE-A110 安全单元(SE)引入新的数据安全功能,在网络安全威胁日益严峻的环....
的头像 inr999 发表于 02-18 17:40 790次 阅读
意法半导体推出新STSAFE安全单元为开发者提供经过认证的资产跟踪和品牌保护解决方案

关于磁导航传感器设计的一些问题(纯小白)

根据地上的磁条激发霍尔电压,再通过运算放大器把电压放到STM32F103的电压范围内直接连接上就可以了吗?有其他需要注意的地方...
发表于 02-16 19:49 236次 阅读
关于磁导航传感器设计的一些问题(纯小白)

意法半导体推出面向IoT的首个兼备超低功耗与数据安全的新一代STM32L5微控制器

在Arm TrustZone技术基础上搭建专有安全功能,获得PSA 2级认证 包含安全启动,全硬件隔....
发表于 02-14 19:06 784次 阅读
意法半导体推出面向IoT的首个兼备超低功耗与数据安全的新一代STM32L5微控制器

关于STM32F103ZE生成4路PWM波的问题

使用定时器3产生4路PWM,对应复用引脚为PC6、7、8、9. 。但仿真结果一直是四路同样占空比的PWM,特此求助!!! ...
发表于 02-13 22:32 861次 阅读
关于STM32F103ZE生成4路PWM波的问题

基于STM32的以太网络光纤端口设计求帮助

主要解决的问题是以STM32微处理器为主,选择网络接口芯片,设计两者之间的硬件接口电路和光路接口,然后编写程序,实现两个处...
发表于 02-11 16:21 857次 阅读
基于STM32的以太网络光纤端口设计求帮助

L298N驱动电机的问题求教

一个小车: 一个直流减速电机控制两个前轮,一个舵机 一个电机控制两个后轮, 所以前后两轮的转速与方向相同, 能否用L29...
发表于 02-08 16:39 319次 阅读
L298N驱动电机的问题求教

easyOS基于Cortex-M内核的学习型RTOS

适合新手RTOS学习使用,学会后转学习ucos/freertos/rt-thread等会轻松很多。 这是说明:https://blog.csdn.net/qq_3700782...
发表于 02-07 20:11 492次 阅读
easyOS基于Cortex-M内核的学习型RTOS

什么是STM32Trust?ST最新发布一种支持STM32的SMI技术

什么是STM32Trust?ST最新发布了一种支持STM32的SMI技术
的头像 黄工的嵌入式技术圈 发表于 02-04 15:30 659次 阅读
什么是STM32Trust?ST最新发布一种支持STM32的SMI技术

意法半导体和Fieldscale为基于STM32的智能设备带来简单直观的触控体验

意法半导体和Fieldscale公司合作,让Fieldscale的SENSE开发平台支持意法半导体的....
发表于 02-04 14:58 517次 阅读
意法半导体和Fieldscale为基于STM32的智能设备带来简单直观的触控体验

HAL_SPI_TransmitReceive与osDelay冲突问题

我准备在官方的STM32L476+ST253993增加freertos,但是代码下进去系统运行时就卡住,单步调试,系统一直卡在prvCheckTask...
发表于 02-02 22:36 512次 阅读
HAL_SPI_TransmitReceive与osDelay冲突问题

小熊派华为物联网操作系统LiteOS内核教程06-内存管理

1. LiteOS内核的内存管理 1.1. 内存管理 在系统运行的过程中,一些内存空间大小是不确定的,比如一些数据缓冲区,所以系...
发表于 01-19 11:03 922次 阅读
小熊派华为物联网操作系统LiteOS内核教程06-内存管理

怎么样才能使用STM32芯片设计电压无功控制器人机交互界面

本设计以STM32为主控芯片,通过LCD彩屏显示简单友好的界面提示用户参数输入,并通过屏幕的触摸模块....
发表于 01-17 14:19 200次 阅读
怎么样才能使用STM32芯片设计电压无功控制器人机交互界面

STM32F10x开发板的多任务工程FSC-OS资料合集免费下载

本文档的主要内容详细介绍的是STM32F10x开发板的多任务工程FSC-OS资料合集免费下载。
发表于 01-16 10:23 171次 阅读
STM32F10x开发板的多任务工程FSC-OS资料合集免费下载

意法半导体更新TouchGFX软件框架,新增强大功能和支持STM32Cube的便利工具

意法半导体在STM32微控制器(MCU)软件框架TouchGFX中增加了新功能,方便设备厂商为家用电....
发表于 01-15 11:09 339次 阅读
意法半导体更新TouchGFX软件框架,新增强大功能和支持STM32Cube的便利工具

如何设计及实现STM32的CAN总线

CAN(Controller Area Network)即控制器局域网,属于工业现场总线的范畴,通常....
发表于 01-15 08:00 233次 阅读
如何设计及实现STM32的CAN总线

关于STM32定时器触发SPI逐字收发之应用示例

STM32定时器触发SPI逐字收发之应用示例
的头像 黄工的嵌入式技术圈 发表于 01-14 16:35 660次 阅读
关于STM32定时器触发SPI逐字收发之应用示例

意法半导体推出STM32系统芯片,加快LoRa® IoT智能设备开发

STM32WLE5采用5mm x 5mm UFBGA73封装,完全支持经过市场检验的STM32生态系....
发表于 01-13 08:06 891次 阅读
意法半导体推出STM32系统芯片,加快LoRa® IoT智能设备开发

波特率、比特率与通信速度的区别

通信教程06_波特率、比特率、通信速度的区别
的头像 黄工的嵌入式技术圈 发表于 01-10 15:43 646次 阅读
波特率、比特率与通信速度的区别

STM32平台下GP2Y1010AU0F灰尘传感器的使用源代码

本文档的主要内容详细介绍的是STM32平台下GP2Y1010AU0F灰尘传感器的使用源代码。
发表于 01-09 17:15 192次 阅读
STM32平台下GP2Y1010AU0F灰尘传感器的使用源代码

开发STM32MP1,你需要一块好开发板

以前是基于Cortex M系列MCU惊醒开发,对于cortex-A架构的处理器以及Linux系统都不....
发表于 01-09 12:13 412次 阅读
开发STM32MP1,你需要一块好开发板

首创通用32位MCU跑分大战-中国芯超越stm32

衡量MCU处理器的一个重要指标就是性能,另外一个重要指标便是功耗。本期我们先从性能开始,跑分大赛。本....
发表于 01-09 09:03 1267次 阅读
首创通用32位MCU跑分大战-中国芯超越stm32

STM32F427xx和STM32F429xx微控制器的中文数据手册

本文档的主要内容详细介绍的是STM32F427xx和STM32F429xx微控制器的中文数据手册。
发表于 01-09 08:00 140次 阅读
STM32F427xx和STM32F429xx微控制器的中文数据手册

STM32F427xx和STM32F429xx微控制器的英文原版数据手册免费下载

STM32F427xx和STM32F429xx设备基于高性能ARM®Cortex®M4 32位RIS....
发表于 01-09 08:00 162次 阅读
STM32F427xx和STM32F429xx微控制器的英文原版数据手册免费下载

HID数据收发工具V1.3版软件免费下载

本文档的主要内容详细介绍的是HID数据收发工具V1.3版软件免费下载。 数据接收稳定,自动检索端口,....
发表于 01-08 08:00 108次 阅读
HID数据收发工具V1.3版软件免费下载

移植FreeRTOS到STM32开发板上的工程文件和源代码免费下载

本文档的主要内容详细介绍的是移植FreeRTOS到STM32开发板上的工程文件和源代码免费下载。
发表于 01-07 08:00 123次 阅读
移植FreeRTOS到STM32开发板上的工程文件和源代码免费下载

STM32中断优先级相关概念与使用笔记资料免费下载

1.ARM cortex_m3内核支持256个中断(16个内核+240外部)和可编程256级中断优先....
发表于 01-03 16:39 144次 阅读
STM32中断优先级相关概念与使用笔记资料免费下载

STM32 M4 时钟配置示例源代码和工程文件免费下载

本文档的主要内容详细介绍的是STM32 M4 时钟配置示例源代码和工程文件免费下载。
发表于 01-03 16:22 108次 阅读
STM32 M4 时钟配置示例源代码和工程文件免费下载

ALIENTEK开发板的简介

本文档的与内容详细介绍的是ALIENTEK开发板的简介包括了:战舰STM32开发板平台介绍,Mini....
发表于 01-02 08:00 103次 阅读
ALIENTEK开发板的简介

新建基于MDK的STM32工程模板教程说明

本文档的主要内容详细介绍的是新建基于MDK的STM32工程模板教程说明
发表于 01-02 08:00 85次 阅读
新建基于MDK的STM32工程模板教程说明

什么是SysTick定时器?实现STM32时钟系统的详细资料说明

什么是SysTick定时器?实现STM32时钟系统的详细资料说明主要内容包括了:Systick原理和....
发表于 01-02 08:00 87次 阅读
什么是SysTick定时器?实现STM32时钟系统的详细资料说明

STM32串口实验的详细资料简介

本文档的主要内容详细介绍的是STM32串口实验的详细资料简介主要内容包括了:Systick原理和配置....
发表于 01-02 08:00 111次 阅读
STM32串口实验的详细资料简介

STM32单片机的外部中断实验详细资料说明

本文档的主要内容详细介绍的是STM32单片机的外部中断实验详细资料说明。
发表于 01-02 08:00 104次 阅读
STM32单片机的外部中断实验详细资料说明

使用STM32单片机实现独立看门狗实验的教程说明

本文档的主要内容详细介绍的是使用STM32单片机实现独立看门狗实验的教程说明。
发表于 01-02 08:00 108次 阅读
使用STM32单片机实现独立看门狗实验的教程说明

使用STM32单片机实现定时器中断实验的详细资料说明

在向下模式中,计数器从自动装入的值(TIMX_ARR计数器的值)开始向下计数到0,然后从自动装入的值....
发表于 01-02 08:00 125次 阅读
使用STM32单片机实现定时器中断实验的详细资料说明

使用STM32单片机实现PWM输出实验的资料说明

脉冲宽度调制模式可以产生一个由TIMX_ARR寄存器确定频率、由TIMX_CCRx寄存器确定占空比的....
发表于 01-02 08:00 145次 阅读
使用STM32单片机实现PWM输出实验的资料说明

STM32单片机的输入捕获实验详细说明

本文档的主要内容详细介绍的是STM32单片机的输入捕获实验详细说明。
发表于 01-02 08:00 141次 阅读
STM32单片机的输入捕获实验详细说明

使用STM32实现LCD显示实验的资料说明

本文档的主要内容详细介绍的是使用STM32实现LCD显示实验的资料说明包括了:LCD原理讲解,FSM....
发表于 01-02 08:00 105次 阅读
使用STM32实现LCD显示实验的资料说明

STM32单片机的SPI和DMA通信总结详细说明

SPI(Serial Peripheral Interface)是一种串行同步通讯协议,由一个主设备....
发表于 12-31 16:51 180次 阅读
STM32单片机的SPI和DMA通信总结详细说明

如何安装和运行osxMotionAR活动识别库

 osxMotionAR是一个用于X-CUBE-MEMS1的附加软件包。该软件运行在STM32单片机....
发表于 12-31 16:25 135次 阅读
如何安装和运行osxMotionAR活动识别库

用于传感器校准的椭球或球面拟合的设计提示资料说明

该设计技巧解释了如何通过执行球体(椭球)拟合来计算三轴传感器的偏移、增益和横轴增益。该技术通常用于校....
发表于 12-31 13:50 138次 阅读
用于传感器校准的椭球或球面拟合的设计提示资料说明

STM32单片机驱动LCD1602的源代码免费下载

本文档的主要内容详细介绍的是STM32单片机驱动LCD1602的源代码免费下载。
发表于 12-30 08:00 131次 阅读
STM32单片机驱动LCD1602的源代码免费下载

使用STM32实现云连接应用的资料概述

网络的形成,无论是现在已趋于成熟的互联网,还是蕴含着巨大潜力蓬勃发展的物联网,都是来自于一个个原本孤....
的头像 Wildesbeast 发表于 12-29 10:16 1212次 阅读
使用STM32实现云连接应用的资料概述

MCU的出货需求旺盛,未来要关注创新能力

集微网消息,据ICInsights预测,随着物联网的持续火热,MCU的出货量将持续上升,全球MCU销....
的头像 汽车玩家 发表于 12-28 11:09 1389次 阅读
MCU的出货需求旺盛,未来要关注创新能力

STM32中文参考手册的详细资料免费下载

本手册是STM32微控制器产品的技术参考手册参照2009年12月 RM0008 Reference ....
发表于 12-27 08:00 152次 阅读
STM32中文参考手册的详细资料免费下载

STM32F030微控制器的编程指南免费下载

本文档的主要内容详细介绍的是STM32F030微控制器的编程指南免费下载。
发表于 12-27 08:00 133次 阅读
STM32F030微控制器的编程指南免费下载

STM32F1的固件库免费下载

本文档的主要内容详细介绍的是STM32F1的固件库免费下载。
发表于 12-26 17:22 110次 阅读
STM32F1的固件库免费下载

STM32自学笔记PDF电子书免费下载

《STM32自学笔记》以新颖的思路、简单的逻辑、简洁的语言来阐述作者初遇STM32以来的种种认识,书....
发表于 12-26 15:37 272次 阅读
STM32自学笔记PDF电子书免费下载

使用STM32的下位机控制舵机的源代码免费下载

本文档的主要内容详细介绍的是使用STM32的下位机控制舵机的源代码免费下载。
发表于 12-25 08:00 155次 阅读
使用STM32的下位机控制舵机的源代码免费下载

STM32核板的用户手册免费下载

STM32核板是一个低成本、易用的开发平台,用于快速评估和启动LQFP64封装的STM32微控制器的....
发表于 12-20 17:45 232次 阅读
STM32核板的用户手册免费下载

51单片机的IO口如何模拟串行通信实现方法详细说明

目前普遍采用的MCS51 和PIC 系列单片机通常只有一个(或没有)UART异步串行通信接口,在应用....
发表于 12-20 15:32 155次 阅读
51单片机的IO口如何模拟串行通信实现方法详细说明

使用STM32F1单片机实现超声波传感器的驱动代码和工程文件免费下载

使用STM32F1单片机实现超声波传感器的驱动代码和工程文件免费下载
发表于 12-20 08:00 154次 阅读
使用STM32F1单片机实现超声波传感器的驱动代码和工程文件免费下载

STM32L4Rxxx和STM32L4Sxxx单片机的参考手册免费下载

本文档的主要内容详细介绍的是STM32L4Rxxx和STM32L4Sxxx单片机的参考手册免费下载。....
发表于 12-19 16:44 120次 阅读
STM32L4Rxxx和STM32L4Sxxx单片机的参考手册免费下载