文章目录

  • 前言
  • 一、串口协议
    • 1.RS-232
    • 2.485标准
  • 二、RS-232、485和TTL电平
    • 1.RS-232电平
    • 2.485
    • 3.TTL电平
    • 4.区别
  • 三、USB/TTL转232
    • 1.CH340
    • 2.发送接收
    • 3.USB转RS-232
  • 四、完成一个STM32的USART串口通讯程序
    • 1.题目要求
    • 2.准备工作
    • 3.CH340驱动安装
  • 五、实验过程及结果
    • 1.创建工程
    • 2.程序写入及编译
    • 3.Stm32最小核心板运行
      • 3.1 用flymcu进行烧录
      • 3.2 用串口调试助手查看
  • 六、用Keil观察串口波形
    • 1.环境搭建
    • 2.波形分析
  • 总结

前言

此文章主要了解:
1、串口协议和RS-232、485标准,以及RS232、485电平与TTL电平的区别;了解"USB/TTL转232"模块(以CH340芯片模块为例)的工作原理

2、完成一个STM32的USART串口通讯程序(查询方式即可,暂不要求采用中断方式),要求:
1)设置波特率为115200,1位停止位,无校验位;
2)STM32系统给上位机(win10)连续发送“hello windows!”。win10采用“串口助手”工具接收。

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


一、串口协议

串口是显控设备与信号处理板之间通信的主要接口,也是显控设备与其他设备、设备与设备之间的协议数据帧通信传输的重要接口。
串口通信指串口按位(bit)发送和接收字节。尽管比特字节(byte)的串行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。串口通信协议是指规定了数据包的内容,内容包含了起始位、主体数据、校验位及停止位,双方需要约定一致的数据包格式才能正常收发数据的有关规范。串口通信协议是基于串口使得通信双方能够相互沟通信息的一种约定,其定义了双方遵循的协议数据帧格式和其传输方式。
在串口通信中,常用的协议包括RS-232、RS-422和RS-485。

1.RS-232

RS-232标准接口(又称EIA RS-232)是常用的串行通信接口标准之一,它是由美国电子工业协会(Electronic Industry Association,EIA)联合贝尔系统公司、调制解调器厂家及计算机终端生产厂家于1970年共同制定,其全名是“数据终端设备( DTE)和数据通信设备(DCE)之间串行二进制数据交换接口技术标准”。
在串行通讯时,要求通讯双方都采用一个标准接口,使不同的设备可以方便地连接起来进行通讯。RS-232-C接口(又称EIARS-232-C)是目前最常用的一种串行通讯接口。(“RS-232-C”中的“-C”只不过表示RS-232的版本,所以与“RS-232”简称是一样的)。

2.485标准

智能仪表随着80年代初单片机技术的成熟而发展起来,世界仪表市场基本被智能仪表所垄断,这归结于企业信息化的需要,而企业在仪表选型时其中的一个必要条件就是要具有联网通信接口。最初是数据模拟信号输出简单过程量,后来仪表接口是RS232接口,这种接口可以实现点对点的通信方式,但这种方式不能实现联网功能,随后出现的RS485解决了这个问题。
RS-485又名TIA-485-A, ANSI/TIA/EIA-485或TIA/EIA-485。
RS-485采用平衡发送和差分接收,因此具有抑制共模干扰的能力。
RS-485标准专门弥补RS-232通讯距离短、速率低等缺点而产生。RS-485标准只规定了平衡发送器和接收器的特性。而没有规定接插件、传输电缆和应用层通讯协议。 RS-485有两线制和四线制两种接线,四线制只能实现点对点的通讯方式,现很少采用,多采用两线制接线方式。这种接线方式为总线式拓朴结构在同一总线上最多可以挂线32–128个结点。在RS-485通信网络中一般采用的是主从通信方式,即一个主机带多个从机。通讯协议采用按照设备地址查询的方式,其通讯的效率很低,不适合高速传输系统。一般速率不超过19200bps。波特率为9600Bps、1200Bps。RS-485标准的最大传输距离约为1219米,最大传输速率为10Mbps。

二、RS-232、485和TTL电平

1.RS-232电平

和串口一样,每一个byte,都有起始位和停止位。起始位1,停止位0,但注意是反逻辑。每个byte,是从低位向高位逐位传输,也就是LSB先传,依次传输到MSB。
全双工(逻辑1:-15V–5V 逻辑0:+3V–+15V)。是电子工业协会制定的异步传输标准接口,同时对应着电平标准和通信协议(时序),其电平标准:+3V~+15V对应“0”,-3V~-15V对应“1”。RS232 的逻辑电平和TTL 不一样但是协议是一样的。

2.485

RS485:A,B信号之间正电平在+2+6V表示“0”;A,B信号之间负电平在-2-6V表示“1”;使能端起作用和其他状态时为高阻态
RS485:半双工这里的电平指AB两线间的电压差。RS485是一种串口接口标准,为了长距离传输采用差分方式传输,传输的是差分信号,即通过AB两根线的电压差作为电平信号。差分信号能有效地抵御外界因素的干扰,因为干扰对两根线影响是一样的,两根线的电压差不变,信号传递也就不会受干扰。与TTL、RS232只能一对一连接不同,RS-485在总线上是允许连接多达128个收发器。

3.TTL电平

TTL:输出高电平>2.4V,低电平<0.4V;输入高电平>=2.0V,输入低电平<=0.8V,噪声容限是0.4V。
TTL :全双工 (5V系统,逻辑1: 2.4V–5V 逻辑0: 0V–0.5V)。TTL指双极型三极管逻辑电路,市面上很多“USB转TTL”模块,实际上是“USB转TTL电平的串口”模块。这种信号0对应0V,1对应3.3V或者5V,与单片机、SOC的IO电平兼容。我们进行串口通信的时候从单片机直接出来的基本上都是TTL电平。

4.区别

  1. RS232、RS485、TTL是指电平标准(电信号)
  2. TTL电平标准 是 低电平为0,高电平为1(对地,标准数字电路逻辑)。
  3. RS232电平标准 是 正电平为0,负电平为1(对地,正负6-15V皆可,甚至可以用高阻态)。
  4. RS485与RS232类似,但是采用差分信号逻辑,更适合长距离、高速传输。

三、USB/TTL转232

这里我们以CH340为例

1.CH340

CH340 是一个USB 总线的转接芯片,实现USB 转串口、USB 转IrDA 红外或者USB 转打印口。
在串口方式下,CH340 提供常用的MODEM联络信号,用于为计算机扩展异步串口,或者将普通的串口设备直接升级到USB 总线。在红外方式下,CH340 外加红外收发器即可构成USB 红外线适配器,实现SIR 红外线通讯。
USB转串口即实现计算机USB接口到物理串口之间的转换。可以为没有串口的计算机或其他USB主机增加串口,使用USB转串口设备等于将传统的串口设备变成了即插即用的USB设备

2.发送接收

串口发送
串口应用发送数据->USB串口驱动获取数据->驱动将数据经过USB通道发送给USB串口设备->USB串口设备接收到数据通过串口发送

串口接收
USB串口设备接收串口数据->将串口数据经过USB打包后上传给USB主机->USB串口驱动获取到通过USB上传的串口数据->驱动将数据保存在串口缓冲区提供给串口应用读取

3.USB转RS-232

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

四、完成一个STM32的USART串口通讯程序

1.题目要求

  • 设置波特率为115200,1位停止位,无校验位;
  • STM32系统给上位机(win10)连续发送“hello windows!”。win10采用“串口助手”工具接收。
  • 在没有示波器条件下,可以使用Keil的软件仿真逻辑分析仪功能观察管脚的时序波形,更方便动态跟踪调试和定位代码故障点。 请用此功能观察第1题中3个GPIO端口的输出波形,和第2题中串口输出波形,并分析时序状态正确与否,高低电平转换周期(LED闪烁周期)实际为多少。

2.准备工作

  • 硬件准备
    STM32F103C8T6最小核心板
    USB转TTL

  • 软件准备
    CH340驱动
    串口调试助手
    Keil uVision5

3.CH340驱动安装

点开从网上找到的exe文件,进行安装。


点击安装,显示驱动安装成功(如果安装失败,可能是以前安装过,点击卸载后在安装就可以了)

  • 驱动安装成功后,我们即可将STM32核心板和USB连线,然后插上电脑
    转接口选择:GND、RXD、TXD、3V3
    STM32核心板选取端口:GND、3v3、A9、A10
    对应连接:GND-GND;3V3-3V3;RXD-A9;TXD-A10

五、实验过程及结果

1.创建工程

这里我们选择用STM32CubeMx来创建工程
点开STM32CubeMx,然后点击ACCESS TO MCU SELECTOR
选择STM32F103C8,然后点击Start Project
选择Connectivity下的USART1,然后Mode选择Asynchronous.


然后选择NVIC Settings,勾选Enabled

点开Project Manager下的Project,选择自己的名字和路径,然后将IDE改成MDK-ARM,后面改成V5


然后点击Code Generator,如下进行勾选,然后点击右上角的GENERATE CODE

2.程序写入及编译

在STM32CubeMx中选择open project则会跳到keil,我们将在keil中写入代码


在main.c程序文件中的定义后,新加一句定义需要给上位机发送的消息
uint8_t hello[20]="hello windows!\n";

然后在main.c中定义一个延时函数,来设置发送的时间间隔

void  Delay_wxc( volatile  unsigned  int  t)
{unsigned  int  i;while(t--)for (i=0;i<800;i++);
}

在main函数中的while循环中调用查询,并调用延时函数

 while (1){HAL_UART_Transmit(&huart1,hello,20,100000);Delay_wxc(3500); //这里每个人电脑不一样发送的间隔时延需要自己调整尝试/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}


这些都弄完后,即可进行编译

这里编译完成,0 error和0 warning
如果发现出现
*** Target ‘chuankou’ uses ARM-Compiler ‘Default Compiler Version 5’ which is not available.
*** Please review the installed ARM Compiler Versions:
‘Manage Project Items - Folders/Extensions’ to manage ARM Compiler Versions.
‘Options for Target - Target’ to select an ARM Compiler Version for the target.
*** Rebuild aborted.
则是需要点开小魔法棒,将ARM Compiler改成V6.18即可成功编译

3.Stm32最小核心板运行

3.1 用flymcu进行烧录

先将板子按照上面连接好,插上电脑,然后打开flymcu
选择之前编译后生成的hex文件,然后搜索串口找到我们的串口


然后将STM32最小核心板上的boot0置1,boot1置0


然后按下板子上的复位按钮,点击flymcu的开始编程

3.2 用串口调试助手查看

将booto和boot1重新置为0,然后按下复位按钮

打开串口调试助手,查看环境


点击打开串口,即可收到“hello windows!",运行结果正确

六、用Keil观察串口波形

1.环境搭建

点击小魔法棒,找到debug,在下面勾选Use SimlatorRun to main(),然后将两个Dialog Dll分别改成DARMSTM.DLLTARMSTIM.DLL,然后将两者后面的Parameter改成-pSTM32F103C8.

环境搭建完成后,点击调试按钮,然后选择逻辑分析仪

逻辑分析仪窗口跳出来后,点击Set up,然后点击右上角红叉旁边的正方形
添加一个USART1_SR的地址,然后将模式改为git,最后点击close(只有点了close才会保存)

2.波形分析

点击run按钮或者按F5

我们在一个间隔里放一个参照,在下一个地方观察
发现低电平持续时间约为86.875 us

同时观察到高电平持续时间约为3.5 us

重做上一个LED流水灯作业,直接按照上一个博客一步一步做即可
上一次博客


总结

此文章主要了解了一些串口协议和RS-232、485标准,以及RS232、485电平与TTL电平的区别;了解"USB/TTL转232"模块(以CH340芯片模块为例)的工作原理,并依靠STM32cubemx完成一个STM32的USART串口通讯程序(查询方式即可,暂不要求采用中断方式),STM32系统给上位机(win10)连续发送“hello windows!”。win10采用“串口助手”工具接收。并使用keil观察波形。

参考链接:
https://blog.csdn.net/ssj925319/article/details/111984002
https://blog.csdn.net/vic_to_ry/article/details/110451036
https://blog.csdn.net/qq_43279579/article/details/112233696
https://blog.csdn.net/qq_43279579/article/details/112213196

了解串口协议,及完成STM32的USART串口通讯程序,并用keil观察波形相关推荐

  1. STM32的USART串口通讯程序

    文章目录 一.STM32 USART串口通信 1.串口通信简介 1.1.物理层 1.2.协议层 2.STM32 的 USART 简介 二.STM32的USART串口通讯程序 1.创建项目 2.添加.s ...

  2. STM32的USART串口通信小程序

    文章目录 前言 一.串口协议和RS-232.485标准 1.串口通信协议的概念 2.常用协议 2.1 RS-232 2.2 RS-485 3.RS232.485电平与TTL电平的区别 二.STM32的 ...

  3. STM32的USART串口通讯程序(查询方式)

    STM32的USART串口通讯程序(查询方式) 文章目录 STM32的USART串口通讯程序(查询方式) 一.USART介绍 1.异步通信: 2.同步通信: 二.CubeMX创建项目 1.点击ACCE ...

  4. 在 stm32CubeMX下生成程序完成流水灯以及完成STM32的USART串口通讯程序实现STM32系统给上位机(win10)连续发送“hello windows”

    目录 一.STM32CubeMX简介及安装 二.利用STM32CubeMX生成代码 1.创建项目 2.配置芯片 3.导出项目 ​ 三.Keil中补充代码完善功能 四.在Keil中观察实验波形 五.US ...

  5. STM32的USART串口通讯

    STM32的USART串口通讯 STM32的USART串口通讯 一,寄存器与固件库 二,STM32的串口通讯准备工作 三,操作步骤 一,寄存器与固件库 基于寄存器与基于固件库的stm32 LED流水灯 ...

  6. 【嵌入式系统开发11】串口通讯“小试牛刀”——完成一个STM32的USART串口通讯程序

    本文目的是主要介绍通过STM32F103C8T6完成一个STM32的USART串口通讯程序,在没有示波器条件下,使用Keil的软件仿真逻辑分析仪功能观察管脚的时序波形. 文章目录 前言 (一)需求分析 ...

  7. STM32的USART串口通信

    1.简介 (1)串口协议 串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式,因为它简单便捷,大部分电子设备都支持该通讯方式,电子工程师在调试设备时也经常使用该通讯 ...

  8. 串口通信-STM32的USART串口通讯程序

    目录 一.原理介绍 1.串口协议 2.常用协议标准 1)RS-232 2)RS-485 3.RS232.485电平与TTL电平的区别 1)RS232电平 2)RS485电平 3)TTL电平 4)RS2 ...

  9. 基于STM32的USART串口通讯程序

    文章目录 一.串口协议和RS-232.485标准,以及RS232.485电平与TTL电平的区别,USB/TTL转232模块的工作原理 1.串口协议 2.RS-232.RS-485标准 3.RS232. ...

最新文章

  1. Percona XtraBackup备份到恢复记录
  2. 图片流量节省大杀器:基于CDN的sharpP自适应图片技术实践
  3. 基于SSM实现在线聊天系统
  4. 《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #3 如何编写内核模块
  5. Python连接DM8数据库
  6. hp 导出日志 远程管理卡_惠普服务器远程管理卡安装详解
  7. CSS3移动应用程序企业网站模板
  8. 优质淘宝产品描述页模板框架PSD分层模板,美工实用素材
  9. Docker搭建RabbitMQ
  10. 巴斯勒相机外部触发接线_PLC控制柜的设计原理,电装布局、接线图和原理图
  11. 【相机标定系列】标定工具仓库
  12. Functional JavaScript: 使用 Transducer 提升函数式性能
  13. php submit执行函数,jQuery.submit() 函数详解
  14. 国网项目汇总(ECP)
  15. 见微智著 - 从一个小例子看Python中的单元测试
  16. 解决mac idea2020打开闪退问题
  17. java并发编程艺术——基础篇
  18. okio篇 1.Buffer
  19. 学校举办朗诵比赛,邀请了 10 位评委为每一名参赛选手的表现打分。假设列表 lst_score
  20. 基于Multisim的声光控制路灯电路设计

热门文章

  1. URDF语法详解03_joint
  2. HDC.Cloud 华为开发者大会2021.04.24 学习记录
  3. 2.MySQL查询字段为NULL的数据
  4. 炼石荣登“中国信创500强”榜单
  5. 未来十年,互联网行业到底需要什么样的运营?
  6. 带薪“看片”?继阿里后微信也公开招聘“鉴黄师”!
  7. Python学习6:地球数据计算
  8. [课程复习] 软件工程导论之经典题目回顾 (一)选择题、填空题1
  9. 滨州智能dcs系统推荐_几种主流DCS系统对比分析
  10. Js二代身份证号码正则验证