STM32串口通信基础:单片机串口与PC串口通信的连接方式

发布者:Serendipitous55最新更新时间:2024-06-11 来源: elecfans关键字:STM32  串口通信  单片机串口  PC串口通信 手机看文章 扫描二维码
随时随地手机看文章

按照数据传送方向分类

单工:数据传输只支持数据在一个方向上传输


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

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

分别如下图中的a、b、c所示。

c055a4c8-3df0-11ed-9e49-dac502259ad0.png

按照通信方式分类

同步通信:带时钟同步信号传输。比如:SPI,IIC通信接口

异步通信:不带时钟同步信号。比如:UART(通用异步收发器),单总线

在同步通讯中,收发设备上方会使用一根信号线传输信号,在时钟信号的驱动下双方进行协调,同步数据。例如,通讯中通常双方会统一规定在时钟信号的上升沿或者下降沿对数据线进行采样。     在异步通讯中不使用时钟信号进行数据同步,它们直接在数据信号中穿插一些用于同步的信号位,或者将主题数据进行打包,以数据帧的格式传输数据。通讯中还需要双方规约好数据的传输速率(也就是波特率)等,以便更好地同步。常用的波特率有4800bps、9600bps、115200bps等。     在同步通讯中,数据信号所传输的内容绝大部分是有效数据,而异步通讯中会则会包含数据帧的各种标识符,所以同步通讯效率高,但是同步通讯双方的时钟允许误差小,稍稍时钟出错就可能导致数据错乱,异步通讯双方的时钟允许误差较大。

STM32串口通信基础   

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

UART引脚连接方法

RXD:数据输入引脚,数据接收

TXD:数据发送引脚,数据发送

c072f514-3df0-11ed-9e49-dac502259ad0.png

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

c08e8126-3df0-11ed-9e49-dac502259ad0.png

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

单片机是TTL电平:+5V表示1,0V表示0

RS232是负逻辑电平,-3~-15V为1,+3~+15V为0

RS-232通讯协议标准串口的设备间通讯结构图如下: 

c09f4e2a-3df0-11ed-9e49-dac502259ad0.png

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

c0af8646-3df0-11ed-9e49-dac502259ad0.png

  STM32的UART特点

全双工异步通信;

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

可编程的数据字长度(8位或者9位);

可配置的停止位(支持1或者2位停止位);

可配置的使用DMA多缓冲器通信;

单独的发送器和接收器使能位;

检测标志:① 接受缓冲器  ②发送缓冲器空 ③传输结束标志;

多个带标志的中断源,触发中断;

其他:校验控制,四个错误检测标志。

串口通信过程

c0c95490-3df0-11ed-9e49-dac502259ad0.png

STM32中UART参数

    串口通讯的数据包由发送设备通过自身的TXD接口传输到接收设备的RXD接口,通讯双方的数据包格式要规约一致才能正常收发数据。STM32中串口异步通信需要定义的参数:起始位、数据位(8位或者9位)、奇偶校验位(第9位)、停止位(1,15,2位)、波特率设置。     UART串口通信的数据包以帧为单位,常用的帧结构为:1位起始位+8位数据位+1位奇偶校验位(可选)+1位停止位。如下图所示:

c0f3bb7c-3df0-11ed-9e49-dac502259ad0.png

    奇偶校验位分为奇校验和偶校验两种,是一种简单的数据误码校验方法。奇校验是指每帧数据中,包括数据位和奇偶校验位的全部9个位中1的个数必须为奇数;偶校验是指每帧数据中,包括数据位和奇偶校验位的全部9个位中1的个数必须为偶数。     校验方法除了奇校验(odd)、偶校验(even)之外,还可以有:0 校验(space)、1 校验(mark)以及无校验(noparity)。0/1校验:不管有效数据中的内容是什么,校验位总为0或者1。

UART框图

c10ce426-3df0-11ed-9e49-dac502259ad0.jpg

    这个框图分成上、中、下三个部分,具体的可以看《STM32中文参考手册》中的描述。

    框图的上部分,数据从RX进入到接收移位寄存器,后进入到接收数据寄存器,最终供CPU或者DMA来进行读取;数据从CPU或者DMA传递过来,进入发送数据寄存器,后进入发送移位寄存器,最终通过TX发送出去。   
  然而,UART的发送和接收都需要波特率来进行控制的,波特率是怎样控制的呢?  

   这就到了框图的下部分,在接收移位寄存器、发送移位寄存器都还有一个进入的箭头,分别连接到接收器控制、发送器控制。而这两者连接的又是接收器时钟、发送器时钟。也就是说,异步通信尽管没有时钟同步信号,但是在串口内部,是提供了时钟信号来进行控制的。而接收器时钟和发送器时钟又是由什么控制的呢?     可以看到,接收器时钟和发送器时钟又被连接到同一个控制单元,也就是说它们共用一个波特率发生器。同时也可以看到接收器时钟(发生器时钟)的计算方法、USRRTDIV的计算方法。  

   这里需要知道一个知识点:

UART1时钟:PCLK2(高速)

UART2、UART3、UART4时钟:PCLK1(低速)


关键字:STM32  串口通信  单片机串口  PC串口通信 引用地址:STM32串口通信基础:单片机串口与PC串口通信的连接方式

上一篇:P2P替代STM32F103C8T6的智能排爆机器人主控方案
下一篇:利用Proteus仿真STM32实现DHT11温湿度检测

推荐阅读最新更新时间:2024-11-12 23:21

I2C与串口通信模块电子电路设计
   I2C 通信模块   OZ89采样模块将采集处理后的数据通过I2C总线发送到LF2407,由于LF2407自身不带I2C 接口,本设计利用PCA9564扩展其I2C接口。为了防止电磁干扰影响I2C总线上数据的传输,必须对总线信号进行隔离,考虑到I2C 总线是双向传输的,使用ADuM1250双向隔离芯片进行隔离。PCA9564及双向隔离电路如图2所示。   图2:PCA9564 及双向隔离电路   串口通信模块   电池管理系统将采集处理后的数据通过串口发送到PC机界面上,实现人机交互。通过串口界面,可以观察到电池的总电压、单体电压、电流、SOC、故障状态、充放电功率等参数,还可以通过串口发送实现管理系统的在线标定。其
[电源管理]
I2C与<font color='red'>串口通信</font>模块电子电路设计
GD32与STM32兼容吗?
GD32与STM32是两个不同的微控制器系列,是由两个不同的公司设计和生产的。GD32系列是由国内的长沙国芯微电子设计和生产的,而STM32系列则是由欧洲的STMicroelectronics公司设计和生产的。 虽然GD32与STM32都是基于ARM Cortex-M内核的微控制器,但是它们并不完全兼容。由于两个公司的设计和生产流程不同,GD32系列和STM32系列的外设具有不同的寄存器映射和不同的寄存器位域。因此,任何在STM32上编写的应用程序不能直接在GD32上运行,需要对代码进行适当的修改。 在进行移植时,需要仔细研究两者之间的差异性,例如GPIO、串口、定时器等外设的差异,以及使用的库函数的不同。同时也需要检查时钟、中断
[单片机]
STM32 启动代码选择以及每块字节数
● 小容量产品是指闪存存储器容量在16K 至32K 字节之间的STM32F101xx、STM32F102xx和 STM32F103xx微控制器。 对应后缀ld ● 中容量产品是指闪存存储器容量在64K 至128K字节之间的STM32F101xx、STM32F102xx 和STM32F103xx微控制器。 对应后缀md ● 大容量产品是指闪存存储器容量在256K至512K字节之间的STM32F101xx和STM32F103xx 微控制器。对应后缀hd 闪存存储器容量在768K至1m字节之间的STM32F101xx和STM32F103xx 微控制器。对应后缀xl ● 互联型产品是STM32F105xx和STM32F107xx微控制器。
[单片机]
STM32建立IAR开发环境
以前用IAR,正点原子提供的是MDK开发环境,我重新建立了一个IAR5.30工程,使用MDK库函数版本。拷贝MDK库函数版本工程到一个工程目录下就好了,见下图。几个icf文件要从其他地方考过来,不难的。startup_stm32f10x_hd.s文件要使用IAR格式的,在IAR安装目录中有MDK,GCC,IAR三种格式的,需要使用IAR格式。 IAR开发环境设置。 这里要选择FULL ,不然会出现FILE not found 的错误。 上面的红圈很重要,第一个是头文件目录,必须要设置,工程下所有用到的.h文件 第二个是宏定义,USE_STDPERIPH_DRIVER和STM32F10X_HD必须要添加,VECT_TAB_SRA
[单片机]
STM32读写内部Flash
工作中使用STM32F407ZGT6这块芯片开发项目,内部Flash有1M之多,出于数据存储需要,而外部没有拓展EEPROM,就想着将数据存入Flash中。因此研究了一下STM32F4读写内部Flash的一些操作。 以下是关于Flash介绍,部分来自互联网: 【STM32F4 内部Flash的一些信息】 STM32F407ZGTx的内部Flash的地址是:0x08000000,大小是0x00100000。 写Flash的时候,如果发现写入地址的Flash没有被擦出,数据将不会写入。Flash的擦除操作,只能按Sector进行。不能单独擦除一个地址上的数据。因此在写数据之前需要将地址所在Sector的所有数据擦除。
[单片机]
<font color='red'>STM32</font>读写内部Flash
STM32——SD卡和FATFS文件系统
最近看了32的sd卡和FATFS文件系统,现在就自己的理解总结一下。 一、SD卡模块 SD 卡:安全数码卡, 它是在 MMC 的基础上发展而来, 是一种基于半导体快闪记忆器的新一代记忆设备。按容量分类,可以将SD 卡分为 3 类: SD 卡、 SDHC 卡、 SDXC 卡。SD卡(SDSC):0~2G SDHC卡:2~32G SDXC卡:32G~2T。 SD 卡一般支持 2 种操作模式: SD 卡模式(通过 SDIO 通信):允许 4 线的高速数据传输,只能使用 3.3V 的 IO 电平,所以, MCU 一定要能够支持 3.3V 的 IO 端口输出。 SPI 模式:同 SD 卡模式相比就是丧失了速度,在 SPI 模式
[单片机]
<font color='red'>STM32</font>——SD卡和FATFS文件系统
OneNET平台下的STM32单片机MQTT协议数据传输源码
OneNET平台下的基于ESP8266的STM32(MQTT协议)例程是适用于自身平台下的开发板,修改过系统配置文件,其外部晶振频率为12MHz。修改过的代码可以向OneNET平台发送LED灯当前状态,GPS位置数据信息和自定义消息。 1.修改esp8266.c下的wifi账号及密码 2.修改onenet.c下的proid、auth_info和devid 3.指令说明: 1.命令直接下发: redled:1 打开红灯 greenled:1 打开绿灯 yellowled:1 打开黄灯 blueled:1 打开蓝灯 同理,1替换为0则是关闭 2.应用命令填写方式:
[单片机]
STM32单片机智能温控风扇设计简介
一、功能简介 本项目使用Proteus8仿真STM32单片机控制器,使用LCD1602液晶、按键、蜂鸣器、L298N电机驱动模块、直流电机、DS18B20温度传感器等。 系统功能: 系统运行后,LCD1602显示传感器检测的温度值;默认以自动模式运行,若按下K4键切换为手动模式,此时可以通过K1和K2控制风扇加减速,风扇档位共5档(0-5)。当再次按下K4键切换为自动模式;自动模式下,实时检测温度值,当温度高于上限且在2C范围内,以3档运行。当温度高于上限且在4C范围内,以4档运行。当温度高于上限且在6C范围内,以5挡运行。当温度高于上限且超过6C范围,以5档运行且蜂鸣器报警。若温度在上下限范围内,风扇以2档运行。若
[单片机]
<font color='red'>STM32</font>单片机智能温控风扇设计简介
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved