加载中...
Featured image of post HWT101 驱动

HWT101 驱动

基于HAL库串口空闲中断的HWT101的驱动

HWT101 陀螺仪模块移植指南

👇🏻源码下载

概述

本项目实现了对HWT101陀螺仪模块的驱动,支持获取偏航角度和角速度数据。HWT101是一款高精度的九轴姿态传感器,通过UART通信接口与MCU进行数据交换。

硬件配置要求

1. UART配置

  • 使用的UART: USART2 (huart2)
  • 波特率: 115200
  • 数据位: 8位
  • 停止位: 1位
  • 校验位: 无
  • 流控: 无
  • 模式: 发送+接收

2. DMA配置

需要为USART2配置DMA接收,以支持空闲中断接收:

  • DMA通道: DMA1_Stream5 (USART2_RX)
  • 传输方向: 外设到内存
  • 模式: 普通模式
  • 数据宽度: 字节

3. 引脚连接

请根据你的开发板配置USART2的引脚:

  • TX引脚: 通常为PA2
  • RX引脚: 通常为PA3
  • VCC: 3.3V或5V (根据模块规格)
  • GND: 接地

软件移植步骤

1. 复制必要的文件

将以下文件复制到你的项目中:

1
2
BSP/Inc/HWT101.h       # HWT101头文件
BSP/Src/HWT101.c       # HWT101源文件

2. 头文件包含

在你的项目配置文件中包含HWT101.h:

1
#include "HWT101.h"

3. UART配置修改

如果你使用的不是USART2,需要修改HWT101.h中的宏定义:

1
#define HWT101_UART &huart2  // 改为你使用的UART句柄

4. 中断处理函数

在你的中断处理文件中添加UART空闲中断处理:

1
2
3
4
5
6
7
8
void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
{
    if (huart == HWT101_UART)
    {
        HWT101_Handler(Size);
    }
    // 其他UART处理...
}

5. 初始化和使用

初始化

1
2
3
4
5
void Task_Init(void)
{
    // 其他初始化...
    HWT101_Init();  // 初始化HWT101模块
}

数据读取

1
2
3
4
5
6
7
8
void Task_IdleFunction(void)
{
    if (HWT_Ready_Flag == true)
    {
        HWT_Ready_Flag = false;
        HWT101_Read();  // 解析接收到的数据
    }
}

获取数据

1
2
3
4
5
// 全局变量,可直接使用
extern float HWT_Yaw_Angle;  // 偏航角度 (-180° ~ +180°)
extern float HWT_Y_Speed;    // Y轴角速度 (°/s)
extern float HWT_Z_Speed;    // Z轴角速度 (°/s)
extern bool HWT_Ready_Flag;  // 数据准备标志

模块特性

自动配置

模块初始化时会自动发送以下配置命令:

  • 关闭LED指示灯
  • 解锁寄存器
  • Z轴角度归零
  • 设置输出频率为500Hz
  • 设置波特率为115200
  • 保存配置并重启

数据解析

  • 角度数据: 当接收到0x55 0x53开头的数据包时解析偏航角
  • 角速度数据: 当接收到0x55 0x52开头的数据包时解析Y轴和Z轴角速度
  • 校验和验证: 每个数据包都会进行校验和验证确保数据完整性

通信协议

  • 数据包长度: 11字节
  • 包头: 0x55
  • 数据类型: 0x52(角速度) 或 0x53(角度)
  • 校验方式: 累加校验

注意事项

  1. DMA配置: 必须正确配置UART的DMA接收,否则无法正常接收数据
  2. 中断优先级: 确保UART中断优先级设置合理
  3. 初始化延时: 模块初始化时各命令间有延时,重启命令后需要500ms延时
  4. 数据更新: 数据以500Hz频率更新,建议在主循环中检查数据就绪标志
  5. 角度范围: 偏航角度范围为-180°到+180°
  6. 角速度范围: 角速度范围为±2000°/s

故障排除

  1. 无数据接收:

    • 检查UART配置和引脚连接
    • 确认DMA配置正确
    • 检查波特率设置
  2. 数据解析失败:

    • 检查校验和计算
    • 确认数据包格式
    • 验证通信时序
  3. 数据不稳定:

    • 检查电源供电
    • 确认模块安装牢固
    • 检查干扰源

示例代码

完整的使用示例请参考项目中的Task_App.c文件,其中展示了如何在OLED显示屏上显示陀螺仪数据。

版本信息

  • 支持的模块: HWT101
  • 通信接口: UART
  • 输出频率: 500Hz
  • 数据精度: 16位
本博客已稳定运行 小时 分钟
共发表 11 篇文章 · 总计 200.14 k 字
最近一次更新时间:2025-09-18 20:24