串口通信小试牛刀

本文介绍了串口通信的基本概念,包括RS-232标准和TTL电平,以及USB/TTL转232的原理。通过实验详细讲述了如何使用stm32CubeMX配置STM32进行LED流水灯和USART串口通讯,包括HAL库与寄存器方式。同时,使用逻辑分析仪分析了波形,验证了程序的正确性。实验总结强调了HAL库在开发中的便利性和高效性。
摘要由CSDN通过智能技术生成

一、实验要求


(一) 了解串口协议和RS-232标准,以及RS232电平与TTL电平的区别;了解"USB/TTL转232"模块(以CH340芯片模块为例)的工作原理。

(二)安装 stm32CubeMX,配合Keil,使用寄存器方式(汇编或C,不限) 或HAL库这两种方式,完成下列任务:

1、重做上一个LED流水灯作业,即用GPIO端口完成3只LED红绿灯的周期闪烁。
2、完成一个STM32的USART串口通讯程序(查询方式即可,暂不要求采用中断方式),要求:
1)设置波特率为115200,1位停止位,无校验位;
2)STM32系统给上位机(win10)连续发送“hello windows!”。win10采用“串口助手”工具接收。

(三)在没有示波器条件下,可以使用Keil的软件仿真逻辑分析仪功能观察管脚的时序波形,更方便动态跟踪调试和定位代码故障点。 请用此功能观察第1题中3个GPIO端口的输出波形,和第2题中串口输出波形,并分析其波形反映的时序状态正确与否,高低电平转换周期(LED闪烁周期)实际为多少。


二、实验过程及结果


(一)任务一

1.串口协议

串口通信是指串口按位(bit)发送和接收字节。尽管比特字节(byte)的串行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。串口通信协议是指规定了数据包的内容,内容包含了起始位、主体数据、校验位及停止位,双方需要约定一致的数据包格式才能正常收发数据的有关规范。在串口通信中,常用的协议包括RS-232、RS-422和RS-485。

通信方式:
一般情况下,设备之间的通信方式分为串行通信和并行通信。

在这里插入图片描述
串行通信分类:

按照数据的传输方向分为:
① 单工:数据传输只支持数据在一个方向上传输。
② 半双工:允许数据在两个方向上传输。但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;它不需要独立的接收端和发送端,两者可以合并一起使用一个端口。
③ 全双工:允许数据同时在两个方向上传输。因此,全双工通信是两个单工通信方式的结合,需要独立的接收端和发送端。

按照通信方式分为:
① 同步通信:带时钟同步信号传输。比如:SPI,IIC通信接口。
② 异步通信:不带时钟同步信号。比如:UART(通用异步收发器),单总线。

常见串口通信的接口:

在这里插入图片描述
串口通讯 (Serial Communication)是一种设备间非常常用的串行通讯方式,电子工程师在调试设备时也经常使用该通讯方式输出调试信息。 对于通讯协议,以分层的方式来理解,最基本的是把它分为物理层和协议层。物理层规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输。协议层主要规定通讯逻辑,统一收发双方的数据打包、解包标准。

1)物理层

串口通讯的物理层有很多标准及变种,RS-232 标准主要规定了信号的用途、通讯接口以及信号的电平标准。
使用 RS-232 标准的串口设备间常见的通讯结构如下图所示:

在这里插入图片描述
两个通讯设备的“ DB9 接口”之间通过串口信号线建立起连接,串口信号线中使用“RS-232 标准”传输数据信号。由于 RS-232 电平标准的信号不能直接被控制器直接识别,所以这些信号会经过一个“电平转换芯片”转换成控制器能识别的 “TTL 标准”的电平信号,才能实现通讯。RS232标准串口主要用于工业设备直接通信,电平转换芯片一般有MAX3232,SP3232。
① 电平标准
根据通讯使用的电平标准不同,串口通讯可分为 TTL标准及 RS-232标准。

在这里插入图片描述
常见的电子电路中常使用 TTL 的电平标准,理想状态下,使用 5V 表示二进制逻辑 1 ,使用 0V 表示逻辑 0 ;而为了增加串口通讯的远距离传输及抗干扰能力,它使用 -15V 表示逻辑 1 ,+15V 表示逻辑 0 。
使用 RS232 与 TTL 电平校准表示同一个信号时的对比如下图所示:

在这里插入图片描述
因为控制器一般使用 TTL 电平标准,所以常常会使用 MA3232 芯片对 TTL 及 RS-232电平的信号进行互相转换。
② RS-232 信号线
在最初的应用中,RS-232 串口标准常用于计算机、路由与调制调解器(MODEN,俗称“猫”)之间的通讯 ,在这种通讯系统中,设备被分为数据终端设备 DTE(计算机、路由)和数据通讯设备 DCE(调制调解器)。我们以这种通讯模型讲解它们的信号线连接方式及各个信号线的作用。
在旧式的台式计算机中一般会有 RS-232 标准的 COM 口(也称 DB9 接口)。

在这里插入图片描述
其中接线口以针式引出信号线的称为公头,以孔式引出信号线的称为母头。在计算机中一般引出公头接口,而在调制调解器设备中引出的一般为母头,使用串口线即可把它与计算机连接起来。通讯时,串口线中传输的信号就是使用前面讲解的 RS-232 标准调制的。
在这种应用场合下,DB9 接口中的公头及母头的各个引脚的标准信号线接法如下图所示:

在这里插入图片描述
信号线说明 ( 公头,为方便理解,可把 DTE 理解为计算机, DCE 理解为调制调解器)
在这里插入图片描述
上表中的是计算机端的 DB9 公头标准接法,由于两个通讯设备之间的收发信号(RXD与 TXD)应交叉相连,所以,调制调解器端的 DB9 母头的收发信号接法一般与公头的相反,两个设备之间连接时,只要使用“直通型”的串口线连接起来即可。

在这里插入图片描述
串口线中的 RTS、CTS、DSR、DTR 及 DCD 信号,使用逻辑 1 表示信号有效,逻辑 0表示信号无效。例如,当计算机端控制 DTR 信号线表示为逻辑 1 时,它是为了告知远端的调制调解器,本机已准备好接收数据,0 则表示还没准备就绪。
在目前的其它工业控制使用的串口通讯中,一般只使用 RXD、TXD 以及 GND 三条信号线,直接传输数据信号,而 RTS、CTS、DSR、DTR 及 DCD 信号都被裁剪掉了。

2)协议层

串口通讯的数据包由发送设备通过自身的 TXD 接口传输到接收设备的 RXD 接口。在串口通讯的协议层中,规定了数据包的内容,它由启始位、主体数据、校验位以及停止位组成,通讯双方的数据包格式要约定一致才能正常收发数据。

在这里插入图片描述① 波特率
串口异步通讯中由于没有时钟信号(如 DB9接口中是没有时钟信号的),所以两个通讯设备之间需要约定好波特率,即每个码元的长度,以便对信号进行解码,上图中用虚线分开的每一格就是代表一个码元。常见的波特率为4800、9600、115200 等。
② 通讯的起始和停止信号
串口通讯的一个数据包从起始信号开始,直到停止信号结束。数据包的起始信号由一个逻辑0的数据位表示,而数据包的停止信号可由0.5、1、1.5或2个逻辑1的数据位表示,只要双方约定一致即可。
③ 有效数据
在数据包的起始位之后紧接着的就是要传输的主体数据内容,也称为有效数据,有效数据的长度常被约定为 5、6、7 或 8 位长。
④ 数据校验
在有效数据之后,有一个可选的数据校验位。由于数据通信相对更容易受到外部干扰导致传输数据出现偏差,可以在传输过程加上校验位来解决这个问题。校验方法有奇校验(odd)、偶校验(even)、0 校验(space)、1 校验(mark)以及无校验(noparity)。
奇校验要求有效数据和校验位中“1”的个数为奇数,比如一个 8 位长的有效数据为:
01101001,此时总共有 4 个“1”,为达到奇校验效果,校验位为“1”,最后传输的数据将是 8 位的有效数据加上 1 位的校验位总共 9 位。
偶校验与奇校验要求刚好相反,要求帧数据和校验位中“1”的个数为偶数,比如数据
帧:11001010,此时数据帧“1”的个数为 4 个,所以偶校验位为“0”。
0 校验是不管有效数据中的内容是什么,校验位总为“0”,1 校验是校验位总为“1”。

2.USB/TTL转232

1)USB/TTL/232串口

① USB,通过USB电平工作。
在这里插入图片描述

USB电平:
电源线是5V,为USB设备提供最大500mA的电流,它与数据线上的电平无关,数据线是差分信号,通常D+和D-在+400mV~-400mV间变化,除去屏蔽层,有4根线,分别是VCC、GND和D+、D-两根信号线。
5V是USB的电源电压,给USB device供电用的。
信号线对于2.0,D+比D-大200mV时为1,D-比D+大200mV时为0。

② 232串口,通过232电平标准工作。

232电平,负逻辑: 逻辑1(MARK)=-3V~-15V;逻辑0(SPACE)=+3~+15V。
将串口和单片机进行通信,只需要2 脚 RXD、3 脚 TXD 和 5 脚 GND 即可,其名字和单片机上的串口名一样,但是不能直接和单片机对连通信。

在这里插入图片描述
③ 单片机串口是TTL电平,所以叫TTL串口或UART 串口。
在这里插入图片描述

TTL电平:
+5V等价于逻辑“1”,0V等价于逻辑“0”(采用二进制来表示数据时)。 PC机上的通信接口有USB接口,相应电平逻辑遵照USB原则;有DB9接口(九针口),相应电平逻辑遵照RS-232原则。
单片机上的串行通信通过单片机的RXD、TXD、VCC、GND四个引脚,相应电平逻辑遵照TTL原则。

2)USB/TTL转232

常用的常用232串口转TTL有MAX232、MAX3232、SP232、SP3232等。
常用的USB转TTL串口芯片有CH340、CP2102、PL2303、FT232等。
MAX232等芯片是将TTL转换为RS232信号或者将RS232信号转换为TTL。 CH340、PL2303等芯片是直接将USB信号转换为TTL电平或者TTL电平转换为USB信号。

① USB转232串口

原理:USB接口>>>PL2303或CH340>>>MAX232>>>9针接口
信号分析:电脑USB接口>>>电脑输出USB电平信号>>>PL2303或CH340>>>TTL电平>>>MAX232芯片>>>电脑串口接口

在这里插入图片描述
② TTL转232串口
在这里插入图片描述

3)USB转串口CH340接线

USB转串口模块可以使用5V电压供电,需要将跳帽按下图安装。
在这里插入图片描述
USB转串口模块可以使用3.3V电压供电,需要将跳帽按下图安装。
在这里插入图片描述
可以对USB转串口模块进行测试,将USB的电压引脚用跳帽接上,然后将RXD和TXD两个引脚用跳帽或者杜邦线接上。
在这里插入图片描述
然后打开串口终端,点击“手动发送”或者“自动发送”,如果在接收区可以接收到数据,说明USB转串口模块工作正常,否则需要检查接线是否正确、电路板元器件是否损坏。

(二)任务二

1.安装stm32CubeMX

下载链接:
https://www.st.com/en/development-tools/stm32cubemx.html#get-software
在这里插入图片描述
选择help中的manage embedded software packages,找到相应的stm32,点击install now进行下载。

在这里插入图片描述

2.LED流水灯

1)寄存器方式

https://blog.csdn.net/weixin_45919652/article/details/120746247

2)HAL库方式

① 工程创建
选择File–>New Project 或者直接点击ACCEE TO MCU SELECTOR

在这里插入图片描述
在Part Number输入名称查找,选中芯片,点击右上角的Start Project进入界面。

在这里插入图片描述
点击System Core中的SYS,在Debug处选择Serial Wire。

在这里插入图片描述

左侧为MCU外设资源选择
Categories 种类选择,将MCU各种外设和资源分类,供用户选择使用。
A-Z顺序选择,MCU的外设资源按A-Z排序,供用户选择使用。

中间为外设配置
可以选择外设的各种功能,选择串口模式(异步、同步、半双工)串口接收终端,和串口DMA传输等。

右侧为预览界面
分为引脚预览和系统预览
引脚预览可以查看引脚配置了什么功能,和各个引脚的位置,任意点击一个引脚即可设置该引脚的各种功能。
在这里插入图片描述
淡黄色表示不可配置引脚,电源专用引脚以黄色突出显示,其配置不能更改。
深黄色表示配置了一个I/O口的功能,但是没有初始化对应外设功能,引脚处于no mode状态。
绿色表示配置成功。

选择Clock Configuration,将PLLCLK右边选上。

在这里插入图片描述
返回 Pinout & Configuration,选择RCC,将HSE修改为Crystal/Ceramic Resonator。

在这里插入图片描述
点击管脚,选择PA1,PA3,PA5,选择为GPIO_Output。

在这里插入图片描述
点击Project Manager,选择路径和输入项目名,然后IDE改为MDK-ARM,点击右上角的GENERATE CODE。

在这里插入图片描述
② 添加代码
进入设定的工程目标目录,打开MDK-ARM文件夹,通过keil打开项目,点击main.c,找到主函数main中的while循环。

HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET);
HAL_Delay(1000);

HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_RESET
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值