当前位置: 首页 > 产品中心 > lcd显示屏-总成

STM32串口通信基础原理详解

发表时间: 2024-04-21 作者: lcd显示屏-总成
产品详情

  一般情况下,设备之间的通信方式能分成并行通信串行通信两种。并行与串行通信的区别如下表所示。

  半双工:允许数据在两个方向上传输。但是,在某一时刻,只允许数据在一个方向上传输,它其实就是一种切换方向的单工通信;它不需要独立的接收端和发送端,两者可以合并一起使用一个端口。

  全双工:允许数据同时在两个方向上传输。因此,全双工通信是两个单工通信方式的结合,需要独立的接收端和发送端。

  在同步通讯中,收发设备上方会使用一根信号线传输信号,在时钟信号的驱动下双方进行协调,同步数据。例如,通讯中通常双方会统一规定在时钟信号的上升沿或者下降沿对数据线进行采样。

  在异步通讯中不使用时钟信号进行数据同步,它们直接在数据信号中穿插一些用于同步的信号位,或者将主题数据来进行打包,以数据帧的格式传输数据。通讯中还需要双方规约好数据的传输速率(也就是波特率)等,以便更好地同步。常用的波特率有4800bps、9600bps、115200bps等。

  在同步通讯中,数据信号所传输的内容绝大部分是有效数据,而异步通讯中会则会包含数据帧的各种标识符,所以同步通讯效率高,但是同步通讯双方的时钟允许误差小,稍稍时钟出错就可能会引起数据错乱,异步通讯双方的时钟允许误差较大。

  STM32的串口通信接口有两种,分别是:UART(通用异步收发器)、USART(通用同步异步收发器)。而对于大容量STM32F10x系列芯片,分别有3个USART和2个UART。

  对于两个芯片之间的连接,两个芯片GND共地,同时TXD和RXD交叉连接。这里的交叉连接的意思就是,芯片1的RxD连接芯片2的TXD,芯片2的RXD连接芯片1的TXD。这样,两个芯片之间就能够直接进行TTL电平通信了。STM32与51单片机串口通信相关实例,请移步此处:STM32与51单片机串口通信实例。

  若是芯片与PC机(或上位机)相连,除了共地之外,就不能这样直接交叉连接了。尽管PC机和芯片都有TXD和RXD引脚,但是通常PC机(或上位机)通常使用的都是RS232接口(通常为DB9封装),因此不能直接交叉连接。RS232接口是9针(或引脚),通常是TxD和RxD经过电平转换得到的。故,要想使得芯片与PC机的RS232接口直接通信,需要也将芯片的输入输出端口也电平转换成RS232类型,再交叉连接。

  所以单片机串口与PC串口通信就应该遵循下面的连接方式:在单片机串口与上位机给出的RS232口之间,通过电平转换电路(如下面图中的Max232芯片) 实现TTL电平与RS232电平之间的转换。STM32与PC之间通信实例,请移步此处:STM32实例-用按键控制串口发送数据,文末附代码。

  台式机电脑后面的9针接口就是com口(串口) 在工业控制数据采集上应用广泛上图中,最右边的是串口接口统称为RS232接口,是常见的DB9封装。

  3脚:电脑的输出TXD 通过2 ,3 脚就能轻松实现全双工(可同时收发)的串行异步 通信

  单片机的P3口是有两个复用接口RXD 和TXD。这是单片机进行串行通信的收发口,连接应该错位的对应到电脑的TDX RDX上。注意:单片机和RS232的电平标准是不一样的。

  在单片机与上位机给出的RS232口之间通过电平转换电路(最上面图中的Max232芯片) 实现TTL电平与RS232电平之间的转换,PC串口与单片机串口连接方式图:

  注意这两个DB9:DB91是在电脑上的 DB92是在单片机实验板上焊接着的。

  DB92的RXD连着DB91的TXD这样交叉着连接,如果电脑没有RS232口 只有USB口,可以用串口转接线转出串口。

  注意,这个驱动程序驱动的是PL2303芯片(在上图的大头里面) 使得RS232信息转换成USB信息。

  分数波特率发生器系统,提供精确的波特率。发送和接受共用的可编程波特率,最高可达4.5Mbits/s;

  串口通讯的数据包由发送设备通过自身的TXD接口传输到接收设施的RXD接口,通讯双方的数据包格式要规约一致才能正常收发数据。

  STM32中串口异步通信需要定义的参数:起始位、数据位(8位或者9位)、奇偶校验位(第9位)、停止位(1,15,2位)、波特率设置。

  UART串口通信的数据包以帧为单位,常用的帧结构为:1位起始位+8位数据位+1位奇偶校验位(可选)+1位停止位。如下图所示:

  奇偶校验位分为奇校验和偶校验两种,是一种简单的数据误码校验方法。奇校验是指每帧数据中,包括数据位和奇偶校验位的全部9个位中1的个数必须为奇数;偶校验是指每帧数据中,包括数据位和奇偶校验位的全部9个位中1的个数必须为偶数。

  校验方法除了奇校验(odd)、偶校验(even)之外,还可以有:0 校验(space)、1 校验(mark)以及无校验(noparity)。0/1校验:不管有效数据中的内容是什么,校验位总为0或者1。

  这个框图分成上、中、下三个部分。本文大概地讲述一下每个部分的内容,具体的可以看《STM32中文参考手册》中的描述。

  框图的上部分,数据从RX进入到接收移位寄存器,后进入到接收数据寄存器,最终供CPU或者DMA来进行读取;数据从CPU或者DMA传递过来,进入发送数据寄存器,后进入发送移位寄存器,最终通过TX发送出去。

  然而,UART的发送和接收都需要波特率来来控制的,波特率是怎样控制的呢?

  这就到了框图的下部分,在接收移位寄存器、发送移位寄存器都还有一个进入的箭头,分别连接到接收器控制、发送器控制。而这两者连接的又是接收器时钟、发送器时钟。也就是说,异步通信尽管没有时钟同步信号,但是在串口内部,是提供了时钟信号来来控制的。而接收器时钟和发送器时钟有是由什么控制的呢?

  能够正常的看到,接收器时钟和发送器时钟又被连接到同一个控制单元,也就是说它们共用一个波特率发生器。同时也可以看到接收器时钟(发生器时钟)的计算方式、USRRTDIV的计算方法。

  一、简介 本文介绍STM32系列怎么样去使用timer2进行精确定时。 二、实验平台 库版本:STM32F10x_StdPeriph_Lib_V3.5.0 编译软件:MDK4.53 硬件平台:STM32开发板(主芯片stm32f103c8t6) 仿真器:JLINK 三、版权声明 四、实验前提 1、在进行本文步骤前,请先阅读以下博文: 暂无 2、在进行本文步骤前,请先实现以下博文: 暂无 五、基础知识 暂无 六、实验步骤 1、编写并添加定时器2驱动 1)编写驱动GUA_Timer2.c(存放在“……HARDWARE”) //***************************

  之timer2的精准延时 /

  关于STM32对内部Flash的保护 为避免对Flash的非法访问,所有STM32的芯片都提供对Flash的保护,具体分为写保护和读保护。 如果对Flash设置了写保护,那就无法对Flash进行编程和擦除。在开发STM32的时候,假如慢慢的出现这种情况,通常仿真器都支持对Flash进行解锁,像jlink,stlink等仿真器都支持这个功能。 在使用MDK进行调试的时候,可能会遇到如下图所示的报错信息,这时候就要排查Flash是不是被保护起来了。 读保护即大家通常说的“加密”,是作用于整个Flash存储区域,与之相类似的文章:STM32等单片机程序加密的方法。一旦设置了Flash的读保护,内置的Flash存储区只可以通过程序的正常

  的Flash写了保护怎么办 /

  流程图如下: I2C 中断处理函数如下: /** * @brief This function handles I2C1 Event interrupt request, tx, rx * buffer and number of bytes will be changed. * @param None * @retval None */ void I2C1_EV_IRQHandler(void) { #ifdef ARC_I2C_IRQ uint32_t i2cEvent; I2C_param_struct __IO *pI2C_param; pI2C_param = ARC_get_

  I2C 硬件中断方式实现方法 /

  频率 Fpwm = 100M / ((arr+1)*(psc+1))(单位:Hz) arr 是计数值 psc 是预分频值 如: 3. 主频=100M 4. arr=100 5. psc=1000 100,000,000/100/1000=1000Hz 占空比 duty circle = TIM3- CCR1 / arr(单位:%) TIM3- CCR1 是捕获比较寄存器值 从下面代码能够准确的看出TIM3- CCR1 就是对应的sConfigOC.Pulse arr对应t.Period = 999; psc对应htim5.Init.Prescaler = 99; 如果 arr=1000,TIM3- C

  pwm频率与周期计算 /

  引言 近年来各类军用机器人在国防领域和地缘战略中发挥着重要的作用。在我国广大西部地区,由于地形复杂、道路崎岖,传统的轮式或履带式机器人不足以满足地形通过性要求,而仿生四足机器人能够较好地满足在非结构化地形条件下可靠行进的任务需求。液压驱动的仿生四足机器人是近年国内外的研究热点与主攻项目,在其关键技术群中,电液伺服控制技术则是保障仿生液压四足机器人实现稳定行进功能的核心技术。 1总体设计 1.1控制对象分析 本文依托北京理工大学特种机器人技术创新中心正在研发的一款仿生液压四足机器人展开研究,机器人每条腿具有3个主动自由度和1个被动自由度,分别为髋侧摆关节、髋正摆关节、膝关节和足部二阶弹簧减震器,全部12个主动关节均由液

  我们在看STM32中文参考手册p316页IWDG独立看门狗时,看到“若用户在选择字节中启用了“硬件看门狗”功能,在系统上电复位后,看门狗会自动开始运行;如果在计数器计数结束前,若软件没有向键寄存器写入相应的值,则系统会产生复位 ”这样一段关于硬件看门狗的描述,那么什么是硬件看门狗,与软件看门狗啥不一样的区别呢,这里的选择字节说的是哪呢,我们接着往下说 1.硬件看门狗和软件看门狗的区别: 看门狗分为硬件看门狗和软件看门狗,硬件看门狗是利用独立于处理器的定时器电路,当狗饿死后会产生复位信号并重启;而软件看门狗则是用处理器内部的某个定时器代替独立于处理器的定时器电路,显然后者不能摆脱处理器出现一些明显的异常问题实现自动重启的功能,其意义也就大打折扣了。

  在调试STM32系统时钟设置时遇到一个问题:TIM2定时1Ms,TIM2中断服务函数time++,time=100时LED状态改变。程序运行后发现LED不是按照0.1S的时间闪烁,闪烁的很慢。 查找程序发现在系统时钟初始化时,RCC_HSEConfig(RCC_HSE_Bypass); 语句配置不对,此语句解释为HSE晶振被外部时钟旁路。指将芯片内部的用于外部晶体起振和功率驱动等的部分电路和XTAL_OUT引脚断开,这时使用的外部时钟是有源时钟或者其他STM32提供的CCO输出等时钟信号,直接单线从XTAL_IN输入,这样即使外部有晶体也震荡不起来了。 因为之前用的是有源晶振,接法如下图1:HSE配置如下:RCC_HSEConfi

  一、 在工业应用中常常使用EEPROM来存储数据,为减少相关成本、节省PCB空间,外部EEPROM可以用片内Flash加上特定的软件算法代替。 因为片内Flash的擦写次数有限,所以要加上特定算法来增加常规使用的寿命。此算法ST提供了历程,我们大家可以移植到我们的程序里直接用,较为方便。 二、源码移植 移植很简单,一共两个文件“eeprom.c , eeprom.h ,移植前要准备选择至少2块连续大小相同的flash扇区,示例程序中选用的是16K大小的2、3扇区。现在打开“eeprom.h”文件。移植时需要修改的内容: 好了移植完成,注意此源码是基于HAL库的,也能自己修改flash读写程序,之前我将这个移植到GD的芯片,这个还是

  启动文件浅析

  PID控制C语言实现位置 增量型抗积分饱和积分分离 变积分

  F411的无刷直流电机FOC控制管理系统设计

  嵌入式工程师AI挑战营(初阶):基于RV1106,动手部署手写数字识别落地

  有奖直播 瑞萨新一代视觉 AI MPU 处理器 RZ/V2H:高算力、低功耗、实时控制

  【下载】LAT1396 STM32CubeIDE实用技巧之STM32H7双核调试的配置

  【下载】LAT1343 STM32H5 USBD Classic驱动 CDC移植

  【下载】LAT1392 LTDC RGB接口 LCD的TouchGFX工程的移植步骤

  【直播】4月11日,STM32Trust如何帮助新产品设计提升信息安全保护能力

  【线日,基于Buildroot制作STM32MP13启动镜像-深圳/厦门/西安/郑州/苏州

  【新品】STM32U0新一代超低功耗入门级MCU,助力终端产品省电,安全,BOM成本低

  【新品】 STM32H7R/S基于Cortex-M7,运行频率高达600 MHz,板载闪存型MCU 拥有高速的外部存储

  【新品】STM32WBA54/55 支持BLE5.4、IEEE 802.15.4通信协议、Zigbee®、Thread和Matter协议

  【新品】STM32MP2 最高配备双核Arm® Cortex®-A35和Cortex®-M33的STM32MP2系列微处理器

  【新品】STM32H5-Arm® Cortex®-M33 内核,主频高达250MHz,提升性能与信息安全性

  STM32与Actility ThingPark的合作实现高效的无线固件更新

  在物联网(IoT)领域,无线固件更新(FUOTA)技术的引入明显提高了设备管理的效率和灵活性。STM32与Actility ThingPark平台的结合,为开发 ...

  在“嵌入式学习006_Systick使用(一)”中,详细的介绍了Systick中寄存器的使用方法,用到了很多函数,实际上到了3 5版本的标准固件库中,移 ...

  用到GPIO口 PA0~PA11共12个引脚因为是共阳所以12,9,8,6为电源输入,其他引脚均为接地,所以对于芯片来说12,9,8,6高位输出,其他设定 ...

  这是我在做单片机最小系统板时候碰到的问题,之前虽然也做过相似的板子,可是未曾出现过无源晶振不起振的问题。下面是我在遇上问题后的一些 ...

  7 1电源管理概述处理器广泛地利用门时钟来禁能那些未用的功能和未用功能块的输入,因此只有正在有效使用中的逻辑才会消耗动态功率。ARMv7-M ...

  适用 STM32 通用 Bootloader ,让 OTA 更加 Easy

  站点相关:综合资讯51单片机PIC单片机AVR单片机ARM单片机嵌入式系统汽车电子消费电子数据处理视频教程电子百科其他技术STM32MSP430单片机资源下载单片机习题与教程