当前位置: 首页 > news >正文

CubeMax配置串口通讯

串口基础知识

问:什么是串口通讯?

答:
串口通讯(Serial Communication)是一种按位(bit)逐次发送和接收数据的通信方式,仅需少量信号线(如 TX、RX、GND)即可实现设备间数据传输。

特点:

  • 异步传输:无需共享时钟信号(CLK),依靠波特率(Baud Rate)同步。

  • 数据帧结构:由起始位(Start Bit)数据位(5-9 bit)校验位(可选)停止位(Stop Bit)组成。

  • 简单可靠:适合低速、长距离通信(如工业控制、传感器数据采集)。


问:串口通讯协议有哪些?

答:
串口通信协议可分为物理层标准(硬件接口+电平规范)协议层规范(数据帧格式+校验规则)两类。

1. 物理层标准(硬件接口+电平规范)
标准电平特性传输方式传输距离典型应用
TTL0V(逻辑0) / 3.3V或5V(逻辑1)单端信号<1m单片机、嵌入式设备
RS-232±3V~±15V(逻辑1:-3V~-15V,逻辑0:+3V~+15V)单端信号<15m旧电脑串口、工业设备
RS-485差分信号(A/B线电压差表示逻辑)差分信号≤1200m工业自动化(Modbus)
CAN差分信号(CAN_H/CAN_L)差分信号≤40m(1Mbps)汽车电子、工业控制
2. 协议层规范(数据帧格式+校验规则)
协议传输方式特点典型应用
UART异步无时钟信号,需约定波特率单片机调试、传感器
USART同步/异步比UART多同步模式(如SPI)高速通信(如STM32)
Modbus基于UART/RS-485主从架构,支持多设备工业自动化
CAN协议同步(带位仲裁)多主机、错误检测、高可靠汽车电子

问:RS232、USART、UART、CAN、RS485的区别?

答:

特性UARTUSARTRS-232RS-485CAN
传输方式异步同步/异步异步异步/同步同步
电平标准TTL(0V/3.3V/5V)TTL±3V~±15V差分(±1.5V~±5V)差分(±2V)
通信距离<1m(TTL)<1m(TTL)<15m≤1200m≤40m(1Mbps)
抗干扰极强
拓扑结构点对点点对点点对点多点(总线)多点(总线)
典型应用调试接口高速通信旧电脑外设工业Modbus汽车电子

总结:

  • UART/USART:协议层,定义数据格式(USART支持同步)。

  • RS-232/RS-485:物理层,定义电平与接口(RS-485更先进)。

  • CAN:高可靠总线协议,适用于复杂环境。


补充关键点

  1. 波特率(Baud Rate):每秒传输的符号数(如9600、115200bps),需收发双方一致。

  2. 校验方式:奇校验、偶校验、无校验,用于检测数据错误。

  3. 全双工 vs 半双工

    • 全双工(如UART):TX、RX可同时收发。

    • 半双工(如RS-485):同一时间只能发送或接收。

       

以STM32F103VGT6为例,用STM32CubeMX配置串口

基础配置:

       1. 高速时钟配置成外部晶振

        2.Debug模式选择Serial Wire

       3.时基资源选择 TIM5(如果使用Free RTOS,否则默认Systick即可)

其中RCC的三个操作的含义是

1. Master Clock Output 1/2 的含义

作用
Master Clock Output(MCO)引脚允许微控制器将内部时钟信号(如HSE、HSI、PLL等)输出到外部设备,例如:

                1.为其他芯片(如传感器、通信模块、音频编解码器)提供同步时钟。

                2.调试时监测内部时钟频率

2. Audio Clock Input (I2S_CKIN) 的含义

作用:这是用于音频接口(I2S协议)的外部时钟输入引脚,允许外部音频设备(如CODEC)提供主时钟信号,确保音频数据传输的同步性。

2. 何时选择 Master Clock Output?

需要选择的情况

        1.外部设备需要时钟同步:例如,连接外部ADC、DAC、FPGA或其他需要精确时钟的器件。

        2.多设备时钟共享:避免为每个设备单独设计时钟电路,简化硬件设计。

        3.调试或测试:通过输出内部时钟到示波器,验证时钟频率是否正确。

无需选择的情况

        1.外部设备自带振荡器(如晶振)或不需要主时钟同步。

        2.系统无时钟共享需求,或仅使用内部时钟。

4.何时选择 Audio Clock Input (I2S_CKIN)

        1.使用外部音频设备(如数字麦克风、音频编解码器)且需由外部提供时钟时启用。

        2.内部时钟无法满足音频精度要求(如高保真音频需低抖动时钟)

串口配置

UART和USART有区别,所以在CubeMX上配置时,UART相较USART的模式选项,少了一个SmartCard,同时少了一个RS232硬件协议的选择.

通信模式(Mode)选项介绍:

1、Asynchronous(异步模式)

        含义:数据以不定时的方式传输,依赖起始位和停止位同步,无需共享时钟信号(如UART)。

        作用:简化硬件设计,适应不同速率的设备通信。

        何时使用:

                常见的串口通信(如调试日志、传感器数据读取)。

                设备间时钟不同步或距离较远(如GPS模块与MCU)。

2、Synchronous(同步模式)

        含义:数据通过共享时钟信号(如SCLK)严格同步传输(如SPI、I2C)。

        作用:提高传输速率和可靠性。

        何时使用:

                高速或实时性要求高的场景(如显示屏刷新、高速ADC采样)。

                主从设备需严格同步(如EEPROM读写)。

3、Single Wire (Half-Duplex)(单线半双工)

        含义:单根线分时双向传输数据,同一时间只能发送或接收。

        作用:节省引脚资源。

        何时使用:

                引脚有限的场景(如单总线协议DS18B20温度传感器)。

4、Multiprocessor Communication(多处理器通信)

        含义:支持多个设备共享总线,通过地址识别目标设备。

        作用:实现一主多从的通信架构。

        何时使用:

                多个MCU或外设需共用同一总线(如工业控制网络)。

5、IrDA(红外通信)

        含义:通过红外光传输数据,需编解码模块。

        作用:无线短距离通信。

        何时使用:

                红外遥控、医疗设备(如血氧仪)。

6、LIN(局域互联网络)

        含义:低成本车载通信协议,单线传输。

        作用:替代复杂CAN总线用于简单控制。

        何时使用:

                汽车电子中的次级网络(如车窗控制、座椅调节)。

7、SmartCard(智能卡模式)

        含义:支持ISO7816标准的智能卡接口。

        作用:安全身份验证或支付。

        何时使用:

                SIM卡、银行卡读卡器。

硬件流控(Hardware Flow Control)

1、Disable(禁用流控)

        含义:不启用硬件流控信号(CTS/RTS)。

        作用:简化接线,适用于低速率或可靠环境。

        何时使用:

                短距离通信或波特率较低(如9600bps以下)。

                设备间缓存足够(如MCU与PC串口调试)。

2、CTS Only(仅清除发送)

        含义:仅使用CTS信号,接收方控制发送方数据流。

        作用:防止接收方缓冲区溢出。

        何时使用:

                单向大数据量传输(如GPS模块持续输出数据)。

3、RTS Only(仅请求发送)

        含义:仅使用RTS信号,发送方请求接收方准备。

        作用:确保接收方就绪后再发送数据。

        何时使用:

                接收方处理能力有限(如低速MCU接收高速数据)。

4、CTS/RTS(全硬件流控)

        含义:同时启用CTS和RTS信号,双向控制数据流。

        作用:避免数据丢失,提高高波特率下的可靠性。

        何时使用:

                高速通信(如115200bps以上)或噪声环境(如工业现场)。

                设备间处理速度差异大(如MCU与4G模块通信)。

总结

①通信模式选择:

        根据协议要求(如UART/SPI)、设备数量(单设备/多设备)、传输方向(全双工/半双工)决定。

②硬件流控选择:

        根据波特率、传输距离、设备缓存能力决定是否启用CTS/RTS。

典型场景:

        异步+禁用流控:普通串口调试。

        同步+全流控:高速SPI连接ADC。

        LIN模式:汽车电子控制。

选择USART3的Asynchronous(异步模式)模式

一、参数配置

1.波特率的数值是自己输入

2.字长是选择的,8字长或9字长

3.奇偶校验处可以选择 无 、Even(奇)、Odd(偶)

4.停止位可以选择1、2位停止位

5.数据方向则是三个选项:收发、仅收、仅发

6.过样率(采样率):16 Samples 或者 8 Samples。其功能是选择每bit的采样次数,8就是每bit采样8次,16同理。高采样则数据准,但是传输数据会慢。

        在CubeMX中,选择 16x Oversampling 可显著降低115200bps下的误码率。

用户常量则是自定义宏

添加常量

        在界面点击 add → 输入 NAME 和 VALUE(如 PWM_FREQUENCY 1000)。

生成代码

工具会在 main.h 或 stm32xxxx_hal_conf.h 中生成:

        #define PWM_FREQUENCY 1000

NVIC设置(嵌套 向量 中断 控制 设置)

勾选上Enabled,也就是使能中断,而具体参数需要看到System Core中的NVIC进行配置抢占优先级(Preemption Priority)和响应优先级(Sub Priority)

http://www.lryc.cn/news/571468.html

相关文章:

  • 微信小程序:将搜索框和表格封装成组件,页面调用组件
  • Kafka 向 TDengine 写入数据
  • 游戏技能编辑器界面优化设计
  • Java + Spring Boot + MyBatis 枚举变量传递给XML映射文件做判断
  • node.js使用websockify代理VNC代理使用NoVNC进行远程桌面实现方案
  • docker问题排查
  • 【Python系列PyCharm实战】ModuleNotFoundError: No module named ‘sklearn’ 系列Bug解决方案大全
  • 使用Kotlin开发后端服务的核心方法
  • 【大模型:知识库管理】--MinerU本地部署
  • 最新整理【剑侠情缘龙雀修复BGU版】linux服务端带授权后台+详细教程+包进游戏
  • LangSmith 深度解析:构建企业级LLM应用的全生命周期平台
  • 【day51】复习日
  • conda 下载指定 python 版本安装,即 base 环境为指定的python版本
  • Unity Editor代码引用子场景物体,需要激活子场景
  • 【 FastJSON 】解析多层嵌套
  • 希尔脚本简介及常用命令代码整理
  • 20倍光学镜头怎么实现20+20倍数实现
  • Spring @OnApplicationEvent 典型用法
  • MacOS15.5 MySQL8 开启 mysql_native_password
  • 【入门级-基础知识与编程环境:计算机的历史和常见用途】
  • 【RocketMQ 生产者和消费者】- 消费者重平衡(2)- 分配策略
  • 338比特位技术
  • element ui el-table嵌套el-table,实现checkbox联动效果
  • 轻松搭建Linux开发环境:使用`build-essential`安装GCC编译器**
  • Flask设计网页截屏远程电脑桌面及切换运行程序界面
  • 软件体系结构-论述、设计、问答
  • C++---类和对象(中)
  • BERT介绍
  • 失业学习-前端工程化-webpack基础
  • 智慧城市-城市道路塌方检测数据集VOC+YOLO格式768张1类别