STM32 RS232通信开发全解析 | 零基础入门STM32第五十九步

news2025/3/15 7:27:29
主题内容教学目的/扩展视频
RS232串口电路原理,跳线设置,驱动程序。与超级终端通信。了解电路原理和RS232协议。

师从洋桃电子,杜洋老师


📑文章目录

    • 一、RS232通信系统架构
    • 二、RS232核心原理与硬件设计
      • 2.1 电气特性对比
      • 2.2 典型电路设计
    • 三、USART3驱动代码解析
      • 3.1 关键初始化代码(usart.c)
      • 3.2 数据收发实现
    • 四、通信测试方法
      • 4.1 自发自收测试
      • 4.2 外设连接测试
    • 五、DB9接口标准线序
      • 5.1 引脚定义(DTE设备)
      • 5.2 线缆类型选择
    • 六、进阶应用:Modbus RTU实现
      • 6.1 协议帧格式
      • 6.2 校验算法实现
    • 七、常见问题排查
    • 八、相关资源
    • 总结


(图1:开发板与RS232通讯连接示意图)
(图2:RS232通讯测试示意图)

一、RS232通信系统架构

+------------------+       +------------------+       +------------------+
|   STM32控制器    |       | 电平转换芯片     |       | RS232设备        |
| (USART3 PB10/11) |<----->| (SP3232/Max3232) |<----->| (DB9/DB25接口)   |
+------------------+       +------------------+       +------------------+
        ↑                                          
+------------------+                               
|  触摸按键输入     |                                
| (矩阵/电容式按键) |                               
+------------------+                               

二、RS232核心原理与硬件设计

2.1 电气特性对比

参数TTL电平RS232电平
逻辑00V+3V ~ +15V
逻辑13.3V/5V-3V ~ -15V
传输距离<1m可达15m
抗干扰能力

2.2 典型电路设计

         STM32
          │
          ├──PB10(TX)──► SP3232_TXIN ────► DB9_TX
          │
          ├──PB11(RX)◄──SP3232_RXOUT ◄─── DB9_RX
          │
          └──GND─────────SP3232_GND ────── DB9_GND

三、USART3驱动代码解析

3.1 关键初始化代码(usart.c)

void USART3_Init(u32 BaudRate){
    // GPIO配置
    GPIO_InitTypeDef GPIO_InitStructure;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
    // TX(PB10) 推挽输出
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &GPIO_InitStructure);
    // RX(PB11) 浮空输入
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOB, &GPIO_InitStructure);

    // USART参数配置
    USART_InitTypeDef USART_InitStructure;
    USART_InitStructure.USART_BaudRate = BaudRate;
    USART_InitStructure.USART_WordLength = USART_WordLength_8b;
    USART_InitStructure.USART_StopBits = USART_StopBits_1;
    USART_InitStructure.USART_Parity = USART_Parity_No;
    USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;
    USART_Init(USART3, &USART_InitStructure);
    USART_Cmd(USART3, ENABLE);
}

配置要点

  • 波特率匹配:115200bps
  • 数据格式:8位数据位、无校验、1停止位
  • GPIO模式:TX推挽输出,RX浮空输入

3.2 数据收发实现

主程序 USART3 SP3232 DB9 USART3_printf('A') 发送TTL电平 转换为RS232电平 接收RS232信号 转换回TTL电平 USART_ReceiveData() 主程序 USART3 SP3232 DB9

四、通信测试方法

4.1 自发自收测试

// 内部短接测试
void SelfTest(void){
    USART3_printf("Test String\r\n");
    if(USART_GetFlagStatus(USART3, USART_FLAG_RXNE)){
        u8 data = USART_ReceiveData(USART3);
        OLED_Display(data); // 显示接收数据
    }
}

操作步骤

  1. 将PB10(TX)与PB11(RX)短接
  2. 发送测试数据
  3. 验证接收数据一致性

4.2 外设连接测试

测试设备接线方式预期结果
PC串口直连线双向通信正常
工业PLC交叉线协议交互成功
条码扫描枪适配器转换数据实时接收

五、DB9接口标准线序

5.1 引脚定义(DTE设备)

引脚信号说明
1CD载波检测
2RXD接收数据
3TXD发送数据
4DTR数据终端就绪
5GND信号地
6DSR数据设备就绪
7RTS请求发送
8CTS清除发送
9RI振铃指示

5.2 线缆类型选择

线缆名称实际连接方式适用场景
交叉线TXD↔RXD, RXD↔TXD, GND↔GNDDTE↔DTE (如PC↔STM32)
直连线TXD↔RXD, RXD↔TXD, GND↔GNDDTE↔DCE (如PC↔Modem)
(图3:RS232接口不同连接方式示意图)

关键规则
无论线缆类型如何命名,必须确保 发送端(TXD)与接收端(RXD)交叉连接,即:

  • 设备A的TXD ➔ 设备B的RXD
  • 设备A的RXD ➔ 设备B的TXD
  • GND直连

六、进阶应用:Modbus RTU实现

6.1 协议帧格式

// Modbus RTU帧示例
uint8_t modbusFrame[] = {
    0x01,       // 设备地址
    0x03,       // 功能码(读保持寄存器)
    0x00, 0x01, // 起始地址
    0x00, 0x02, // 寄存器数量
    0xCRC_H, 0xCRC_L // CRC校验
};

6.2 校验算法实现

uint16_t CRC16(uint8_t *buf, int len){
    uint16_t crc = 0xFFFF;
    for(int pos=0; pos<len; pos++){
        crc ^= (uint16_t)buf[pos];
        for(int i=8; i!=0; i--){
            if(crc & 0x0001){
                crc >>= 1;
                crc ^= 0xA001;
            }else{
                crc >>= 1;
            }
        }
    }
    return crc;
}

七、常见问题排查

故障现象检测点解决方案
无数据收发SP3232供电电压确保VCC在3.0-5.5V范围
数据乱码波特率设置校验双方波特率一致性
偶发丢包接地不良加强GND连接
传输距离短线缆质量使用屏蔽双绞线

八、相关资源

[1] 洋桃电子B站课程-STM32入门100步
[2] STM32F103xx官方数据手册
[3] STM32F103X8-B数据手册(中文)
[4] STM32F103固件函数库用户手册(中文)
[5] SP3232数据手册(英文)
[6] RS232通信测试程序


总结

本文实现了基于STM32的RS232通信系统,关键技术点包括:

  1. 电平转换:SP3232实现TTL与RS232电平转换
  2. 驱动配置:USART3的GPIO与参数设置
  3. 数据收发:查询方式实现可靠通信
  4. 协议扩展:Modbus RTU工业协议集成

开发建议:

  • 长距离传输时增加终端电阻(120Ω)
  • 使用示波器验证信号质量
  • 关键数据添加校验机制

通过本文的驱动框架,开发者可快速构建工业控制、仪器仪表等领域的串口通信系统,实现设备间可靠的数据交互。


💬 技术讨论(请在评论区留言~)

📌 下期预告:下一期将探讨RS485总线,欢迎持续关注!

点击查阅🔍往期【STM32专栏】文章

版权声明:本文采用[CC BY-NC-SA 4.0]协议,转载请注明来源
实测开发版:洋桃1号开发版(基于STM32F103C8T6)
更新日志

  • v1.0 初始版本(2025-03-09)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2315323.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C# net deepseek RAG AI开发 全流程 介绍

deepseek本地部署教程及net开发对接 步骤详解&#xff1a;安装教程及net开发对接全流程介绍 DeepSeekRAG 中的 RAG&#xff0c;全称是 Retrieval-Augmented Generation&#xff08;检索增强生成&#xff09;&#xff0c;是一种结合外部知识库检索与大模型生成能力的技术架构。其…

建筑管理(2): 施工承包模式,工程监理,质量监督

文章目录 一. 施工承包模式1. 施工总承包模式1.1 施工总承包的特点1.2 施工总承包模式中的承包方 2. 平行承包模式3. 联合体与合作体承包模式 二. 工程监理1. 强制实行监理的工程范围1.1 国家重点建设工程1.2 大中型公用事业工程(重点)1.3 成片开发建设的住宅小区工程1.4 必须实…

最节省服务器,手搓电子证书查询系统

用户预算150元&#xff0c;想要一个最简单证书查询系统。前台能查询证书、后台管理员能登录能修改密码&#xff0c;证书能够手动输入修改删除、批量导入导出删除数据、查询搜索。能够兼容苹果、安卓、PC三端浏览器&#xff0c;最后帮忙部署到云服务器上。 用户预算不多&#xf…

STM32F407 IIC通信

1、IIC 介绍 IIC(Inter-Integrated Circuit)总线是一种由数据线 SDA 和时钟线 SCL 构成的两线式串行总线,可发送和接收数据,常用于 MPU/MCU 与外部设备连接通信、数据传输。每个连接到总线的设备都有一个独立的地址,主机可以通过该地址来访问不同设备。因为 IIC 协议比较简单…

jupyter无法转换为PDF,HTMLnbconvert failed: Pandoc wasn‘t found.

无法转为PDF 手动下载工具 https://github.com/jgm/pandoc/releases/tag/3.6.3 似乎跟我想的不大一样&#xff0c;还有新的报错 https://nbconvert.readthedocs.io/en/latest/install.html#installing-tex 不知道下的啥玩意儿 sudo apt-get install texlive-xetex texlive-fon…

使用 Excel 实现绩效看板的自动化

引言 在日常工作中&#xff0c;团队的绩效监控和管理是确保项目顺利进行的重要环节。然而&#xff0c;面临着以下问题&#xff1a; ​数据分散&#xff1a;系统中的数据难以汇总&#xff0c;缺乏一个宏观的团队执行情况视图。​看板缺失&#xff1a;系统本身可能无法提供合适…

vue3怎么和大模型交互?

引言 平时我们都是用的在线的AI工具&#xff0c;直接输入问题&#xff0c;然后AI回答我们&#xff0c;那么怎么把AI接入项目中呢&#xff1f; 这个问题问得好。 方案一&#xff1a;引入第三方已封装好的UI库方案二&#xff1a;自己写 对于方案一&#xff0c;市面上已有一些…

【网络编程】HTTP网络编程

13.1 HTTP 简介 HTTP(Hyper Text Transfer Protocol,超文本传输协议)是用于从万维网(WWW:World Wide Web) 服务器(简称Web 服务器)传输超文本到本地浏览器的传送协议&#xff0c;基于TCP/IP 通信协 议来传递数据 (HTML 文件、图片文件、查询结果等)。 13.2 HTTP 的工作原理 …

【Qt】QWidget属性介绍

&#x1f3e0;个人主页&#xff1a;Yui_ &#x1f351;操作环境&#xff1a;Qt Creator &#x1f680;所属专栏&#xff1a;Qt 文章目录 前言1. enabled属性2.geometry属性2.1 改变控件位置2.2 女神表白程序2.3 知识补充——window frame 3. windowsTitle属性4. windowIcon属性…

『Rust』Rust运行环境搭建

文章目录 rust编译工具rustupVisual Studio VS Code测试编译手动编译VSCode编译配置 参考完 rust编译工具rustup https://www.rust-lang.org/zh-CN/tools/install 换源 RUSTUP_DIST_SERVER https://rsproxy.cn RUSTUP_UPDATE_ROOT https://rsproxy.cn修改rustup和cargo的安…

vue/react/vite前端项目打包的时候加上时间最简单版本,防止后端扯皮

如果你是vite项目&#xff0c;直接写一个vite的插件&#xff0c;通过这个插件可以动态注入环境变量&#xff0c;然后当打包的时候&#xff0c;自动注入这个时间到环境变量中&#xff0c;然后在项目中App.vue中或者Main.tsx中打印出来&#xff0c;这就知道是什么时候编译的项目了…

Cadence学习笔记3

设置 PCB 层叠 初始我们有一个两层板&#xff0c;如果需要添加层叠怎么办&#xff1f; 点击进入层叠设置 首先右击 TOP 层下面的空白&#xff0c;然后鼠标右键进行 add layer 然后选择 Plane(一般层就是这个&#xff09; 就好 然后 add就行 设置光标显示形式 在 setup ->…

Linux系统下如何部署svmspro平台

上传svmspro服务 rz回车后选择svmspro.zip上传如果提示rz命令未找到&#xff0c;请先运行 yum install -y lrzsz 安装将svmspro.zip解压出来&#xff0c;并拷贝到/usr/目录下&#xff0c;命令如下&#xff1a; unzip svmspro.zip//解压程序包cp svmspro /usr/ -r//将svmspro文件…

vue3:八、登录界面实现-忘记密码

一、页面效果 二、实现 1、视图层 <el-form-item class"flex flex-between"><el-checkbox label"记住密码" v-model"remember" /> </el-form-item> 参考 Checkbox 多选框 | Element Plus 2、逻辑层 首先设置记住密码的变…

el-table树形表格合并相同的值

el-table树形表格合并相同的值 el-table树形表格合并相同的值让Ai进行优化后的代码 el-table树形表格合并相同的值 <style lang"scss" scoped> .tableBox {/deep/ &.el-table th:first-child,/deep/ &.el-table td:first-child {padding-left: 0;} } …

Apache Tomcat漏洞,对其进行升级

我们付出一些成本&#xff0c;时间的或者其他&#xff0c;最终总能收获一些什么。 升级背景&#xff1a; 近日&#xff0c;新华三盾山实验室监测到 Apache 官方修复了一个远程代码执行漏洞 (CVE-2025-24813) &#xff0c;其CVSS3 漏洞评分为 7.5 。 影响范围 9.0.0.M1 ≤…

工程实践:如何使用SU17无人机来实现室内巡检任务

阿木实验室最近发布了科研开发者版本的无人机SU17&#xff0c;该无人机上集成了四目视觉&#xff0c;三维激光雷达&#xff0c;云台吊舱&#xff0c;高算力的机载计算机&#xff0c;是一个非常合适的平台用于室内外巡检场景。同时阿木实验室维护了多个和无人机相关的开源项目。…

OSPF-3 1类LSA Router LSA

前面两期我们介绍了OSPF的邻居与邻接建立的关系及失败因素和原因 这章我们来说说OSPF是如何通过不同的LSA去描述拓扑的信息以及路由信息 一、概述 OSPF通过不同的LSA来构成LSDB链路状态数据库,再通过SPF算法来计算出最优的最短路径 二、LSA的分类 类型名称描述传播范围1类…

【清华大学第七版】DeepSeek赋能家庭教育的实操案例(批改作文+辅助语文/数学/科学学习+制定学习计划)

我用夸克网盘分享了「DeepSeek完整资料合集」&#xff0c;点击链接即可保存。打开「夸克APP」&#xff0c;无需下载在线播放视频&#xff0c;畅享原画5倍速&#xff0c;支持电视投屏。 链接&#xff1a;https://pan.quark.cn/s/621259e4af15 近日&#xff0c;清华大学发布了《…

HCIA-ACL实验

前提条件&#xff1a;实现底层互通 转发层面 1、基本ACL ①要求PC3不能访问网段192.168.2.0的网段&#xff0c;PC4和客户端能正常访问服务器 ②AR2配置 acl 2000 rule deny source 192.168.1.1 0 匹配流量 int g 0/0/0 traffic-filter inbound acl 2000 接口调用…