当前位置: 首页 > MAXON电机

STM32串口通信的基础原理介绍

[发布时间:2024-03-31 22:32:29] 来源:www.m6.com 阅读:1 次

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

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

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

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

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

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

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

  对于两个芯片之间的连接,两个芯片GND共地,同时TXD和RXD交叉连接。这里的交叉连接的意思就是,芯片1的RxD连接芯片2的TXD,芯片2的RXD连接芯片1的TXD。这样,两个芯片之间就能够直接进行TTL电平通信了。

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

  所以单片机串口与PC串口通信就应该遵循下面的连接方式:在单片机串口与上位机给出的rs232口之间,通过电平转换电路(如下面图中的Max232芯片) 实现TTL电平与RS232电平之间的转换。

  RS232串口简介台式机电脑后面的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的计算方法。

  /* 说明: * 下面的函数是测试在已有的 大海.txt 文件下继续添加数据 * 测试条件在TF卡中建立 大海.txt 文件,并在文件中添加内容,测试过程中可以分别添加 512数据,=512数据, 512数据来进行分别测试 * 作者:Flame * 测试时间:20130711 */ unsigned int FATFSNumSize;//文件大小存储变量,为了查看方便放到函数外部 void OutPutFile(void) { unsigned int a; FILINFO finfo; DIR dirs; char path ={ }; //目录名为空,表示是根目

  检查安全配置 & 构造安全执行环境 同一般的 MCU 启动比较,STM32 安全启动多了一些步骤。首先,安全启动检查相关的安全静态配置是不是已经设置完毕,例如 RDP 的级别,PCROP,WRP。如果首次启动则需要配置这些选项字节。然后,安全启动会去设置那些每次运行都要重新设置的硬件配置 Firewall,MPU,IWDG 的配置。用户可参考下图图示理解安全启动的过程。最后,是对下一级固件做验证。这个安全的执行环境保证了启动的顺序不会被改变,以及启动代码的保密性。 防外部攻击 此处谈及的外部攻击不是把芯片剖开,使用光学显微镜进行拍照,从而进行逆向工程;或者使用激光对芯片线路进行切割或者连接。这种攻击的成本非常高,需要

  安全技术RDP与MPU /

  一。内存管理简介 1. 为何需要用内存管理 例如如何在LCD上实现SD卡文件浏览 如果有内存管理可以用的内存的时候去申请内存,用完之后释放掉给别的地方用。不必事先定义一个很大的数组占用很多内存。 2. 什么是内存管理 3. 内存管理简介 二。硬件连接 三。源码讲解和例程测试

  前言 STM32 PCROP专有代码读出保护,将某个区域设置为仅允许执行,可防止代码被非法读出与修改。 ST网站 提供了免费的PCROP参考代码,但是例程中仅仅提供了用代码设置PCROP。为方便利用PCROP进行知识产权保护的开发和部署,这篇文章提供了方法,可在RDP级别设置为1或者0时,使用代码清除PCROP。 ST网站上的PCROP参考代码 学习使用PCROP,可从ST网站下载文档以及参考代码。文档里有一步一步的详细说明。参考代码则实现了,如何设置编译开发环境去掉文字库(Literal pool),以避免受保护区域需要被读访问;参考代码也实现了如何利用代码使能PCROP保护以及如何导出接口符号供二次开发使用。 你可以编译运行P

  单片机:代码实现 PCROP清除 /

  STM32中,需要用串口接收数据,是使用串口中断来接收数据。但是用这种方法的话,就要频繁进入串口中断,然后处理,效率就比较低。于是就想到用DMA来接收串口数据,这个STM32也是支持的。但是关键的一点,怎么知道数据接收完毕了呢?如果接收的数据长度固定,那就好办,直接设置DMA的接收数据个数就行了。但是如果长度不固定了,那应该怎么办了? 这样一个时间段,就要用到STM32在串口中提供的另一个好用的东西了,就是串口空闲中断。在STM32的串口控制器中,设置了有串口空闲中断,即如果串口空闲,又开启了串口空闲中断的话,就触发串口空闲中断,然后程序就会跳到串口中断去执行。有了这个,是否能判断何时串口数据接收完毕了呢?因为串口数据

  使用DMA加串口空闲中断接收数据 /

  传感器:ZE03电化学模组NH3NH3 (0-100ppm) 同上篇关于STM32串口接收激光粉尘传感器的博文差不多,因为该传感器提供了串口输出数据,其他配置可以和粉尘传感器一样不变,主要修改串口中断函数即可 void USART2_IRQHandler(void) //串口2中断服务程序(氨气浓度测量) { u8 Res; static char i=0, start=0; if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) //接收中断 { Res =USART_ReceiveData(USART2); //读取接收到的数

  最近使用了一块MSP430F5529单片机做课设,自带的拓展板上有一块12864的COG的LCD屏,记录下使用的驱动程序。 硬件原理图: COG_CS为片选信号,每次数据或指令通信完毕,需要拉低拉高一次。COG_RST为上电复位引脚,正常工作后不控制。 COG_A0是数据命令选择端,低电平表示传输的是数据,高电平表示传输的时命令。 COG_SCLK是时钟信号,上升沿有效。 COG_SDA为数据线,只能写不能读,无法读取COG内部的显存数据。COG_BKLED为背光控制IO,低电平背光点亮,高电平背光熄灭。 驱动程序: 头文件: #ifndef LCD_H_ #define LCD_H_ #define LCD_

  lcd屏驱动程序 /

  使用一个按键控制 LED 的亮灭,按键按下时LED亮起,按键松开时LED熄灭。通过按键控制实验来介绍下 IO 口作为输入的使用。本例中用到了GPIOE的PE3管脚。 LED和按键的电路图。 按键 K_LEFT、K_DOWN、K_RIGHT 分别连接在 STM32 F1 芯片 的 PE2、PE3、PE4引脚上。 按键另一端是全部接在 GND 上,这个和我们学习 51单片机 是一样的,采用独立式按键接法,按下时输入到芯片管脚即为低电平。 整个程序实现的流程步骤如下: 初始化按键使用的 端口 及 时钟 按键 检测 处理 按键控制处理 工程文件目录如下。 IO口初始化程序代码在key.c文件中。 /**********

  按键控制LED的亮灭 /

  嵌入式系统软硬件协同设计教程:基于Xilinx Zynq-7000 (符意德)

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

  使用STM32 Nucleo撬开针对物联网的ARM mbed IDE之门

  【瓜分2500元红包】 票选DigiKey\智造万物,快乐不停\创意大赛人气作品TOP3!

  有奖征文:邀一线汽车VCU/MCU开发工程师,分享开发经验、难题、成长之路等

  【下载】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,提升性能与信息安全性

  4 1 SysTick概述Cortex-M3内核的处理器,内部包含了一个SysTick定时器,SysTick是一个24位的倒计数定时器,当计数到0时,将从ReLoad寄存器 ...

  有人使用STM32F446做产品研究开发,用到TIM1的4个通道做PWM输出。具体使用是这样的,选择CHI1采样PMW模式做PMW输出。CH2、CH3、CH4采取了比较切换 ...

  我们讲了内核、存储器和时钟,它们都是单片机核心功能的一部分,没有它们中的任何一个,单片机都异常工作。而核心功能还包括复位和电源 ...

  1 定义第一步是要明确下,位段,位带和别名区这三个名词名词定义位段STM32用户参考手册使用的名字位带CortexM3参考手册使用的别名区地址总线定时器(二)定时器中断

  一、STM32定时器的分类1 1 按照内核、外核、特定、常规分为4大类:1)内核定时器:Systick2)外设定时器:特定应用定时器+常规定时器3)特 ...

  SylixOS的BSP开发实例之S3C2416 【第三篇】S3C2416 寄存器描述

  浙江移动联合高通和中兴通讯完成5G-A下行三载波聚合+1024QAM全球商用首秀,单用户速率突破

  Littelfuse第2期 符合AEC-Q200 车规的保险丝/熔断器

  【ST直播】MEMS传感器开发套件简介、了解内嵌“有限状态机和机器学习内核”的传感器

  邀您观看 微信直播:户外照明智能互连解决方案 让TE连接光明与智能未来

  力源带你了解安森美半导体开发神器——高度灵活的物联网开发套件( IDK )!看视频轻松答题享好礼!

  Nexperia 模拟和逻辑芯片 更低的电压、更出色的性能 答题赢好礼!

  有奖直播|如何借助Mentor Xpedition AMS对汽车CAN总线进行仿真优化分析?

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

首页
一键拨号
联系我们