STM32C5开发IIS2ICLX(2)----IIC获取加速度计数据
STM32C5开发IIS3DWB10IS.2--IIC获取加速度计数据概述视频教程样品申请源码下载硬件准备参考程序串口配置通信模式IIC设置CS设置生成项目导入STM32CubeIDE设置工程编码添加头文件printf 重定向参考程序CMake设置初始化管脚获取ID配置工作参数轮询读取数据平放与垂直摆放测试概述IIS2ICLX 是意法半导体推出的一款高精度、低功耗双轴数字加速度传感器特别适用于倾角测量。该器件具有低噪声、良好的温度稳定性和重复性支持 ±0.5/±1/±2/±3 g 可选量程并提供 IICI²C和 SPI 数字通信接口可应用于设备调平、结构健康监测及工业自动化等领域。本章介绍如何通过 IIC 接口驱动 IIS2ICLX实现器件识别、初始化配置以及 X、Y 两轴加速度和温度数据的读取。程序通过轮询数据就绪标志获取原始数据完成单位换算后通过串口输出为后续的倾角计算、零偏校准和滤波处理奠定基础。需要样片的可以加qun申请925643491 / 615061293 。视频教程https://www.bilibili.com/video/BV1dYhe6iEhR/样品申请https://www.wjx.top/vm/OhcKxJk.aspx#源码下载https://download.csdn.net/download/qq_24312945/93485139硬件准备首先需要准备一个开发板这里我准备的是自己绘制的开发板需要的可以进行申请。主控为STM32C542CC振动传感器为IIS2ICLX。参考程序https://github.com/CoreMaker-lab/STM32C542CC_IIS2ICLXhttps://gitee.com/CoreMaker/STM32C542CC_IIS2ICLX串口配置查看原理图PA9和PA10设置为开发板的串口。在左侧 Peripherals 中选择 Connectivity → USART1Mode 选择 Async表示配置为异步串口模式Function used by the component 显示为 UART说明 USART1 在异步模式下使用 UART HAL 驱动串口参数配置为115200 波特率、8 位数据位、无校验、1 位停止位、收发模式GPIO TxUSART1_TX 选择 PA9GPIO RxUSART1_RX 选择 PA10PA9 / PA10 均配置为 Alternate 复用功能模式Pull 选择 No pull-up and no pull-downOutput type 选择 Push pullSpeed 选择 Low通信模式对于IIS2ICLX可以使用SPI或者IIC进行通讯。本文使用的板子原理图如下所示。IIC设置IIS2ICLX 通过 IIC 接口与 STM32C542CCT6 进行通信。传感器的 SPC/SCL 和 SDI/SDO/SDA 分别连接到 STM32C542CCT6 的 PB6 和 PB7对应 I2C_SCL 时钟信号和 I2C_SDA 数据信号。SCL 和 SDA 均通过 4.7 kΩ 电阻上拉至 3.3 V。原理图通过 0 Ω 电阻实现 SPI 与 I3C 接口切换。使用 IIC 时应焊接R7、R10 和 R12 不焊接 R8、R11 和 R13。首先在 STM32CubeMX2 中进入 Peripherals 外设配置页面在 Connectivity 分类中选择 I2C1并将 I2C1 外设使能。如图所示本实验的 I2C1 配置步骤如下点击左侧 Peripherals 外设配置入口在 Connectivity 分类中选择 I2C1将 I2C1 Mode 设置为 I2C并确认 I2C1 显示为 ActiveSpeed frequency 设置为 Fast mode plus - 1 MHz确认 I2C1 的 GPIO 引脚映射SCL 为 PB6SDA 为 PB7CS设置IIS2ICLX 的 CS 引脚连接到 STM32C542CCT6 的 PB0SDO/TA0 引脚通过板上的 SA0 信号连接到 PA1。在 STM32CubeMX 的 Pinout 页面中选中PA1和 PB0在右侧勾选 GPIO并将状态设置为 Configured作为 IIS2ICLX 的 CS 控制引脚。进入左侧 GPIO 配置页面展开PA1和 PB0将信号标签设置为SA0和 CS。引脚配置为输出模式Output。生成项目修改配置后左下角会提示 Click to save需要先保存当前工程配置点击左侧 Project settings进入工程生成设置页面在 IDE Project Generation 中选择工程格式和工具链本例选择 CMake GCC然后点击 Generate IDE project 生成工程导入STM32CubeIDE打开 STM32CubeIDE点击菜单栏 File选择 Import…准备导入 STM32CubeMX2 生成的 CMake 工程在 Import 窗口中展开 Import STM32 Project选择 STM32 CMake Project点击 Next进入 CMake 工程路径选择页面Project name填写导入到 STM32CubeIDE 中显示的工程名称Source directory选择 STM32CubeMX2 生成的 CMake 工程目录点击 Next继续完成工程导入Toolchain选择 MCU ARM GCC表示使用 ARM GCC 工具链进行编译MCU确认芯片型号为 STM32C542CCTx与前面 STM32CubeMX2 中选择的 MCU 保持一致CPU/Core确认内核为 Cortex-M33Core 为 0点击 Finish完成 CMake 工程导入设置工程编码在 Project Explorer 中选中当前工程点击菜单栏 Project选择 Properties进入工程属性设置在工程属性中选择 ResourceText file encoding 选择 Other编码格式输入 GBK点击 Apply and Close 保存设置添加头文件在 main.c 中添加头文件。#includemx_usart1.h#includestdio.h#includestring.hprintf 重定向为了让 printf() 输出到 USART1需要重写 _write() 函数。GCC 工程中printf() 底层会调用 _write() 输出字符因此只需要在 _write() 中调用 HAL_UART_Transmit()就可以把 printf() 的内容通过串口发送出去。int_write(intfile,char*ptr,intlen){hal_uart_handle_t*huart1mx_usart1_uart_gethandle();if(huart1!NULL){HAL_UART_Transmit(huart1,ptr,len,1000);}returnlen;}参考程序https://github.com/STMicroelectronics/iis2iclx-pid/tree/master添加对应驱动程序。CMake设置把iis2iclx_reg.c 加入 CMake 编译 。#Stubs to be able to add compiler flag overrides,e.g.-Ostarget_sources(${CMAKE_PROJECT_NAME}PRIVATE#Add additional source files hereiis2iclx_reg.c)printf 输出浮点数需要额外开启 float printf 支持。CMake 官方说明 target_link_options() 就是给可执行目标添加 linker options 的命令。target_link_options(${CMAKE_PROJECT_NAME}PUBLIC#Add additional linker flags here-u _printf_float)初始化管脚IIS2ICLX 的 IIC 片选信号 CS 为高电平有效。系统初始化完成后先将 CS 引脚置为高电平。所以使能CS为高电平配置为IIC模式。配置SA0为低电平。printf(HELLO\n);HAL_GPIO_WritePin(CS_PORT,CS_PIN,HAL_GPIO_PIN_SET);HAL_GPIO_WritePin(SA0_PORT,SA0_PIN,HAL_GPIO_PIN_RESET);变量定义/* Private macro -------------------------------------------------------------*/#defineBOOT_TIME20//ms/* Private variables ---------------------------------------------------------*/staticint16_tdata_raw_acceleration[2];staticint16_tdata_raw_temperature;staticfloat_tacceleration_mg[2];staticfloat_ttemperature_degC;staticuint8_twhoamI,rst;staticuint8_ttx_buffer[1000];/* Extern variables ----------------------------------------------------------*//* Private functions ---------------------------------------------------------*//* * WARNING: * Functions declare in this section are defined at the end of this file * and are strictly related to the hardware platform used. * */staticint32_tplatform_write(void*handle,uint8_treg,constuint8_t*bufp,uint16_tlen);staticint32_tplatform_read(void*handle,uint8_treg,uint8_t*bufp,uint16_tlen);staticvoidtx_com(uint8_t*tx_buffer,uint16_tlen);staticvoidplatform_delay(uint32_tms);staticvoidplatform_init(void);获取ID我们可以向WHO_AM_I (0Fh)获取固定值判断是否为0x6B。对应的获取ID驱动程序,如下所示。stmdev_ctx_tdev_ctx;/* Initialize mems driver interface */dev_ctx.write_regplatform_write;dev_ctx.read_regplatform_read;dev_ctx.mdelayplatform_delay;dev_ctx.handleSENSOR_BUS;/* Init test platform */platform_init();/* Wait sensor boot time */platform_delay(BOOT_TIME);/* Set Bus mode */iis2iclx_bus_mode_set(dev_ctx,IIS2ICLX_SEL_BY_HW);/* Check device ID */iis2iclx_device_id_get(dev_ctx,whoamI);printf(IIS2ICLX0x%x,id0x%x\n,IIS2ICLX_ID,whoamI);if(whoamI!IIS2ICLX_ID)while(1);配置工作参数首先复位当前加速度计恢复默认状态。/* Restore default configuration */iis2iclx_reset_set(dev_ctx,PROPERTY_ENABLE);do{iis2iclx_reset_get(dev_ctx,rst);}while(rst);将加速度计量程设置为 ±2 g。IIS2ICLX 支持 ±0.5 g、±1 g 、±2 g和 ±3 g 三种量程。本例选择 ±2 g。传感器设置为连续数据更新输出频率为52Hz。/* Enable Block Data Update */iis2iclx_block_data_update_set(dev_ctx,PROPERTY_ENABLE);/* Set Output Data Rate */iis2iclx_xl_data_rate_set(dev_ctx,IIS2ICLX_XL_ODR_52Hz);/* Set full scale */iis2iclx_xl_full_scale_set(dev_ctx,IIS2ICLX_2g);/* Configure filtering chain(No aux interface) * Accelerometer - LPF1 LPF2 path */iis2iclx_xl_hp_path_on_out_set(dev_ctx,IIS2ICLX_LP_ODR_DIV_100);iis2iclx_xl_filter_lp2_set(dev_ctx,PROPERTY_ENABLE);随后配置 INT2 引脚将加速度数据就绪和温度数据就绪信号映射到 INT2 。 当新的加速度数据产生时传感器可通过 INT2 输出加速度数据就绪信号当新的温度数据产生时也可通过 INT2 输出温度数据就绪信号。需要注意只有INT2才知道加速度数据就绪和温度数据就绪的信号映射INT1不支持温度温度数据就绪的信号映射iis2iclx_pin_int2_route_tint2_route{0};int2_route.int2_ctrl.int2_drdy_xl1;int2_route.int2_ctrl.int2_drdy_temp1;iis2iclx_pin_int2_route_set(dev_ctx,int2_route);轮询读取数据进入主循环后程序不断读取 IIS2ICLX 的数据状态判断是否产生了新的加速度或温度数据。加速度 ODR 设置为 52Hz循环打印与ODR保持一致。while(1){uint8_treg0;/* Read output only if new xl value is available */iis2iclx_xl_flag_data_ready_get(dev_ctx,reg);if(reg){/* Read acceleration field data */memset(data_raw_acceleration,0x00,2*sizeof(int16_t));iis2iclx_acceleration_raw_get(dev_ctx,data_raw_acceleration);acceleration_mg[0]iis2iclx_from_fs2g_to_mg(data_raw_acceleration[0]);acceleration_mg[1]iis2iclx_from_fs2g_to_mg(data_raw_acceleration[1]);printf(Acceleration [mg]:%4.2f\t%4.2f\r\n,acceleration_mg[0],acceleration_mg[1]);}reg0;iis2iclx_temp_flag_data_ready_get(dev_ctx,reg);if(reg){/* Read temperature data */memset(data_raw_temperature,0x00,sizeof(int16_t));iis2iclx_temperature_raw_get(dev_ctx,data_raw_temperature);temperature_degCiis2iclx_from_lsb_to_celsius(data_raw_temperature);printf(Temperature [degC]:%6.2f\r\n,temperature_degC);}}平放与垂直摆放测试将 IIS2ICLX 传感器板分别进行平放和垂直摆放测试串口输出结果如下。这部分差值主要来自传感器的零偏。IIS2ICLX 数据手册中的 Off 参数表示加速度零重力偏移常规MSL3处理焊机后在常温下的表现。规格表给出的零偏精度为 ± 8mg同时零偏还会随温度变化。如规格表的Off_acc参数就代表在85摄氏度、85百分比湿度情况下的零重力偏移规格表给出的零偏精度为 ± 2.5mg。平放测试数据。垂直摆放测试。

相关新闻

GSD-2 扩展模式行为(Mode Behavior)全解析:在交互 / RPC / JSON / Print 四种模式下安全使用 UI

GSD-2 扩展模式行为(Mode Behavior)全解析:在交互 / RPC / JSON / Print 四种模式下安全使用 UI

人工智能AI Agent代码智能体Agent 编排CLIAI 应用 【免费下载链接】gsd-2 A powerful meta-prompting, context engineering and spec-driven development system that enables agents to work for long periods of time autonomously without losing track of the big picture…

2026/10/12 23:32:51 阅读更多 →
Metro UI CSS 时间选择器(TimePicker)组件完全指南:滚轮式时分秒选择、API 与样式定制

Metro UI CSS 时间选择器(TimePicker)组件完全指南:滚轮式时分秒选择、API 与样式定制

前端UI组件 【免费下载链接】Metro-UI-CSS A progressive front-end framework for creating high-performance responsive reactive web applications! 项目地址: https://gitcode.com/gh_mirrors/me/Metro-UI-CSS 点击查看 免费下载 Metro UI CSS 的 TimePicker …

2026/10/12 23:48:35 阅读更多 →
AlgoNote「算法通关手册」题解:LeetCode 0336 回文对(Palindrome Pairs)——字典树加速的字符串配对难题

AlgoNote「算法通关手册」题解:LeetCode 0336 回文对(Palindrome Pairs)——字典树加速的字符串配对难题

教程文档知识库 【免费下载链接】AlgoNote ⛽️「算法通关手册」:从零开始的「算法与数据结构」学习教程,200 道「算法面试热门题目」,1000 道「LeetCode 题目解析」,持续更新中! 项目地址: https://gitcod…

2026/10/12 23:49:04 阅读更多 →

最新新闻

Simulink自抗扰控制(ADR)工程实现:ESO设计与参数整定

Simulink自抗扰控制(ADR)工程实现:ESO设计与参数整定

简介:本资源是一套基于Simulink实现自抗扰控制器(ADRC)的完整仿真工程包,面向自动化、控制工程方向的本科生、研究生及工业控制工程师,解决复杂系统中模型不确定性与外部扰动抑制难的问题。包内共36个文件,…

2026/10/13 23:47:37 阅读更多 →
校园活动签到数据看板开发实战:从数据清洗到可视化全流程

校园活动签到数据看板开发实战:从数据清洗到可视化全流程

这周课题下来的时候,说实话有点意外。“2026 SMU week2”——三门课合在一起布置的第二个实训周,要求不是交一篇报告就完事,而是要跑出一个能用的东西。SMU是我们课程项目的一个统一代号,没有任何特指含义,第二周轮到我…

2026/10/13 23:47:37 阅读更多 →
插件化知识工作流:从采集、整理到输出的效率实践

插件化知识工作流:从采集、整理到输出的效率实践

我电脑上常年挂着三类窗口:浏览器、笔记软件、编辑器。早上开工的第一步,永远是把昨天关掉的上下文再捞回来——某个调研标签页藏在几十个标签里,某个灵感写在手机备忘录里,某段引用的原文散在一篇 PDF 里。这种情况持续了很长时间…

2026/10/13 23:47:37 阅读更多 →
GPS三频组合观测量:原理、构造与工程应用实践

GPS三频组合观测量:原理、构造与工程应用实践

简介:这是国防科技大学卫星导航研发中心学者吕志成、刘增军、王飞雪撰写的一篇学术论文,聚焦GPS三频组合观测量的特征与应用,适合GPS定位系统开发、导航算法研究、测量测绘及高精度定位等专业人员。论文从GPS现代化引入L2C与L5民用信号讲起&a…

2026/10/13 23:47:37 阅读更多 →
AWQ量化实战:只保护1%权重,显存降60%推理提速3倍

AWQ量化实战:只保护1%权重,显存降60%推理提速3倍

大模型部署到实际业务里,最让人头疼的往往不是模型效果本身,而是显存和延迟这两座大山。一个70亿参数的模型,用FP16精度加载就要吃掉接近14GB显存,稍微上点并发或者上下文拉长一点,显存直接爆掉。更别提想在边缘设备、…

2026/10/13 23:47:37 阅读更多 →
Muse开源SDK:AI Agent走出屏幕囚笼,迈向物理世界执行

Muse开源SDK:AI Agent走出屏幕囚笼,迈向物理世界执行

1. 从 App Store 榜首到开源 SDK:一个被多数人忽略的硬件信号“Muse 登顶 App Store 并开源 SDK”——这行标题里藏着两个被大众媒体轻描淡写、却在技术一线引发连锁震动的动作。我盯着这个消息反复看了三遍,不是因为 Muse 多么惊艳,而是因为…

2026/10/13 23:46:36 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →