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

GPIO(通用输入输出)与LPUART(低功耗通用异步收发传输器)简述

GPIO(通用输入输出)与LPUART(低功耗通用异步收发传输器)在嵌入式系统中常结合使用,以下从关联、配置、使用场景及注意事项四方面展开说明:

一、GPIO与LPUART的关联

  1. 功能复用
    GPIO引脚可通过配置切换为LPUART的TX(发送)和RX(接收)引脚,实现串口通信。例如:
    • STM32L496的LPUART通信口可复用到PA2/PA3、PB10/PB11、PG7/PG8等引脚。
    • 树莓派3需关闭蓝牙占用后,才能将硬件串口分配给GPIO14/GPIO15。
  2. 硬件依赖
    LPUART需依赖GPIO的复用功能(AF模式)和正确电平配置(如推挽输出TX、浮空输入RX),同时需确保时钟和电源域使能。

二、配置步骤与示例

1. 硬件初始化
  • 时钟使能
    需开启GPIO端口和LPUART外设的时钟:

    // STM32示例:使能GPIOB和LPUART1时钟
    __HAL_RCC_GPIOB_CLK_ENABLE();
    __HAL_RCC_LPUART1_CLK_ENABLE();
  • 引脚配置
    设置GPIO为复用功能(AF模式),并指定引脚功能(如AF8对应LPUART1):

    GPIO_InitTypeDef GPIO_InitStruct = {0};
    GPIO_InitStruct.Pin = GPIO_PIN_10 | GPIO_PIN_11; // TX/RX引脚
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; // 复用推挽输出
    GPIO_InitStruct.Pull = GPIO_NOPULL; // 无上下拉
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; // 低速模式
    GPIO_InitStruct.Alternate = GPIO_AF8_LPUART1; // 复用功能选择
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
2. LPUART参数配置
  • 波特率与数据格式
    需根据时钟源设置波特率(如HSI最高46kbps,LSE最高9.6kbps):

    UART_HandleTypeDef huart1;
    huart1.Instance = LPUART1;
    huart1.Init.BaudRate = 115200; // 波特率
    huart1.Init.WordLength = UART_WORDLENGTH_8B; // 8位数据位
    huart1.Init.StopBits = UART_STOPBITS_1; // 1位停止位
    huart1.Init.Parity = UART_PARITY_NONE; // 无校验
    huart1.Init.Mode = UART_MODE_TX_RX; // 发送+接收模式
    HAL_UART_Init(&huart1);
  • 电源域配置(特殊场景)
    某些GPIO(如STM32的PG7/PG8)需额外配置电源域(如VDDIO2):

    __HAL_RCC_PWR_CLK_ENABLE();
    HAL_PWREx_EnableVddIO2(); // 使能VDDIO2电源域

三、使用场景

  1. 低功耗通信
    LPUART可在MCU停止模式下以极低功耗捕获数据帧,适用于电池供电设备(如智能手表、传感器节点)。

  2. 多速率兼容性
    通过切换时钟源(如HSI/LSE)和波特率,可适配不同速率需求:

    • HSI(高速内部时钟):适合高波特率(如115200bps)。
    • LSE(32.768kHz晶振):适合低功耗场景(波特率≤9600bps)。
  3. 硬件抽象
    LPUART支持DMA和硬件FIFO,可减轻CPU负担,适用于高速数据传输(如日志记录、传感器数据采集)。

四、常见问题与解决方案

  1. 无输出信号
    • 原因:GPIO复用配置错误、时钟未使能、波特率超出时钟范围。
    • 解决:检查引脚复用设置(如GPIO_AF8_LPUART1),确认时钟已使能,并验证波特率是否满足3×波特率 ≤ 时钟 ≤ 4096×波特率
  2. 数据接收异常
    • 现象:接收中断标志与奇偶校验标志顺序异常。
    • 解决:优先检查接收完成标志,再处理校验错误;中断模式下建议仅开启接收完成中断。
  3. 电源域冲突
    • 现象:PG7/PG8等引脚无信号。
    • 解决:使能VDDIO2电源域(如HAL_PWREx_EnableVddIO2()),并配置对应时钟。

五、总结

GPIO与LPUART的结合使用需关注:

  1. 复用功能配置:确保GPIO引脚切换至LPUART模式。
  2. 时钟与电源:根据场景选择时钟源,并使能相关电源域。
  3. 波特率验证:严格遵循时钟与波特率的约束关系。
  4. 中断处理:优化中断标志检查顺序,避免数据丢失。

通过合理配置,可实现低功耗、高可靠的串口通信,适用于物联网、可穿戴设备等场景。

相关文章:

  • 【案例篇】为什么设置了 ulimit 但 nofile 限制仍不生效?
  • SpringCloudGateway 自定义局部过滤器
  • Android屏幕刷新率与FPS(Frames Per Second) 120hz
  • 博科Brocade FC交换机常用操作命令
  • 具身智能之人形机器人核心零部件介绍
  • 本地部署drawDB结合内网穿透技术实现数据库远程管控方案
  • 判断是否是润年
  • 从0开始学习R语言--Day20--Wilcoxon秩和检验
  • 企业如何一键复制 DolphinScheduler 项目到新项目服务器?全套自动化方案来了!(企业不外传的实用工具)
  • Python网页自动化Selenium中文文档
  • 走进离线语音:安信可 VC‑01 智能模块全面拆解与 MCU 实战
  • 爬虫基础学习day2
  • Electron简介(附电子书学习资料)
  • day030-Shell自动化编程-函数
  • Electron 防脱壳转二进制 JSC 打包过程以及踩坑记录
  • 【向量库】Weaviate 搜索与索引技术:从基础概念到性能优化
  • 二维数组 行列混淆区分 js
  • 第十四届“中国软件杯”大学生软件设计大赛启幕,A9赛题解析会6月12日开课
  • MODBUS TCP转CANopen 技术赋能高效协同作业
  • NoSQL 之 Redis 集群
  • 建站平台塔山双喜/最好的免费信息发布平台
  • physon可以做网站/网站维护合同
  • 学完js了可以做哪些网站/佛山百度seo代理
  • 建设部网站水利设计资质/深圳网页设计公司
  • 有免费的微网站制作吗/优化设计数学
  • 新网域名官网/河南自助建站seo公司