STM32串口通信入门

本文介绍了串口协议的基础概念,RS-232信号线的连接,USB/TTL转232的转换,以及通过STM32进行串口通信的实验,包括与Windows的交互和使用Keil的逻辑分析。实验展示了如何在嵌入式开发中实现基本的串口控制功能。
摘要由CSDN通过智能技术生成


一、串口协议

串口是显控设备与信号处理板之间通信的主要接口,也是显控设备与其他设备、设备与设备之间的协议数据帧通信传输的重要接口。串口通讯 (Serial Communication)是一种设备间非常常用的串行通讯方式,电子工程师在调试设备时也经常使用该通讯方式输出调试信息。 通讯协议,我们以分层的方式来理解,最基本的是把它分为物理层和协议层。物理层规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输。协议层主要规定通讯逻辑,统一收发双方的数据打包、解包标准。协议规定了数据包的内容,内容包含了起始位、主体数据、校验位及停止位,双方需要约定一致的数据包格式才能正常收发数据的有关规范。串口通信协议是基于串口使得通信双方能够相互沟通信息的一种约定,其定义了双方遵循的协议数据帧格式和其传输方式。在串口通信中,常用的协议包括RS-232、RS-422和RS-485。

二、RS-232 信号线

在最初的应用中, RS-232 串口标准常用于计算机、路由与调制调解器 (MODEN ,俗称“猫”) 之间的通讯 ,在这种通讯系统中,设备被分为数据终端设备 DTE( 计算机、路由 ) 和 数据通讯设备 DCE( 调制调解器 ) 。我们以这种通讯模型讲解它们的信号线连接方式及各个信号线的作用。在旧式的台式计算机中一般会有 RS-232 标准的 COM 口 ( 也称 DB9 接口 )。

三、USB/TTL转232

(1)TTL与232串口互转:
单片机串口(TTL电平)想和电脑串口(232电平)通信,就需要使得他两的电平逻辑一样才可以通信。这时候,就需要用到转换TTL–232电平的芯片,常用的有MAX232、MAX3232、SP232、SP3232等。MAX232芯片是TTL电平与RS232电平的专用双向转换芯片,不同引脚实现TTL转RS-232或RS-232转TTL的功能。连接方式为:单片机串口—232芯片–串口
(2)USB转232串口:
USB经过PL2303转成了TTL串口,中间那四个窟窿可以引出,TTL再经由MAX232转换为RS-232电平,9针串口引出。

四、实验一

STM32系统给上位机(win10)连续发送“hello windows!”。win10采用“串口助手”工具接收

1.选择芯片,STM32F103C8
在这里插入图片描述
2.配置SYS
在这里插入图片描述

3.配置RCC
在这里插入图片描述
4.配置NVIC
在这里插入图片描述

5.配置USART
在这里插入图片描述
6.时钟设置
在这里插入图片描述
7.生成项目,打开main.c文件,再main函数中将while循环修改为如下

HAL_UART_Transmit(&huart1, (uint8_t *)"hello windows!\r\n", 16 , 0xffff);
HAL_Delay(1000);  

8.编译,使用串口烧录进芯片
在这里插入图片描述
编译成功,烧录成功
在这里插入图片描述
9.使用串口调试助手XCOM
在这里插入图片描述
可见,stm32向windows不停地发送“hello windows ”。

五、实验二

在完成以上任务基础,继续扩展功能:当上位机给stm32发送一个字符“#”后,stm32暂停发送“hello windows!”;发送一个字符“*”后,stm32继续发送
1.在实验一中生成的main函数中,将其修改为如下代码

    uint8_t receivedChar;  
    if (HAL_UART_Receive(&huart1, &receivedChar, 1, 0xffff) == HAL_OK) 
			{  
      switch (receivedChar) 
			{  
        case '#': // Pause sending message  
					HAL_UART_Transmit(&huart1, (uint8_t *)"stop", 16 , 0xffff);
          break;  
        case '*': // Resume sending message  
          HAL_UART_Transmit(&huart1, (uint8_t *)"hello windows!\r\n", 16 , 0xffff);  
          HAL_Delay(1000); //??1s  
          break;  
        default: // Continue sending message  
          HAL_UART_Transmit(&huart1, (uint8_t *)"hello windows!\r\n", 16 , 0xffff);  
          HAL_Delay(1000); //??1s  
          break;  
      }  
    }  

2.编译运行,烧录进芯片

3.XCOM串口调试
在这里插入图片描述

六、Keil的软件仿真逻辑分析仪

在没有示波器条件下,可以使用Keil的软件仿真逻辑分析仪功能观察串口输出波形,并分析时序状态正确与否,计算波特率实际为多少
1.点击调试,打开Keil仿真逻辑分析仪,选择USART1
在这里插入图片描述
在这里插入图片描述


总结

通过本次实验,我了解了串口协议和RS-232标准,以及RS232电平与TTL电平的区别;对于"USB/TTL转232"模块(以CH340芯片模块为例)的工作原理也初步了解;并且成功通过STM32CubeMX建立了简易的串口通信工程,在主函数中修改相关函数,实现了STM32芯片与windows之间的串口通信。虽然过程中也遇见诸多问题,诸如烧录时无法成功,串口调试的连接等等,但成功解决问题后,对相关知识的掌握也更加牢固。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值