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

基于STM32的AD7190四通道不连续采集模式实现代码

一、硬件连接与初始化

1. 硬件连接
STM32引脚AD7190引脚功能说明
PA0CS片选信号(低电平有效)
PA1SCLKSPI时钟
PA2DIN串行数据输入
PA4DOUT串行数据输出
3.3VVDD/VREF+电源与参考电压
GNDGND
2. 寄存器配置
// AD7190寄存器地址定义#defineAD7190_COMM_REG0x00// 通信寄存器#defineAD7190_MODE_REG0x01// 模式寄存器#defineAD7190_CONFIG_REG0x02// 配置寄存器#defineAD7190_DATA_REG0x03// 数据寄存器#defineAD7190_ID_REG0x04// ID寄存器// 关键寄存器配置值#defineMODE_CONTINUOUS0x00// 连续模式#defineMODE_DISCONTINUOUS0x04// 不连续模式#defineCONFIG_CH0_1_2_30x80// 使能通道0-3(差分输入)#defineCONFIG_GAIN_1280x07// 增益128倍

二、核心代码实现

1. SPI通信函数
// SPI写寄存器函数voidAD7190_WriteReg(uint8_tregAddr,uint32_tdata){HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_RESET);// CS拉低HAL_SPI_Transmit(&hspi1,&regAddr,1,100);// 发送寄存器地址HAL_SPI_Transmit(&hspi1,(uint8_t*)&data,3,100);// 发送24位数据HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_SET);// CS拉高}// SPI读寄存器函数uint32_tAD7190_ReadReg(uint8_tregAddr){uint32_tdata=0;HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_RESET);// CS拉低HAL_SPI_Transmit(&hspi1,&regAddr,1,100);// 发送寄存器地址(读模式)HAL_SPI_Receive(&hspi1,(uint8_t*)&data,3,100);// 接收24位数据HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_SET);// CS拉高returndata;}
2. 初始化配置
voidAD7190_Init(void){// 1. 复位AD7190HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_RESET);for(inti=0;i<50;i++){HAL_SPI_Transmit(&hspi1,(uint8_t*)0xFF,1,100);HAL_Delay(1);}HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_SET);HAL_Delay(1);// 2. 配置模式寄存器(不连续模式)AD7190_WriteReg(AD7190_MODE_REG,0x040000|MODE_DISCONTINUOUS);// 使能不连续模式// 3. 配置通道(差分输入,增益128)AD7190_WriteReg(AD7190_CONFIG_REG,CONFIG_CH0_1_2_3|CONFIG_GAIN_128);// 4. 设置不连续组(4通道分1组)AD7190_WriteReg(AD7190_COMM_REG,0x00);// 选择模式寄存器AD7190_WriteReg(AD7190_MODE_REG,0x040000|MODE_DISCONTINUOUS|0x00000F);// 组大小=4}
3. 数据采集函数
floatAD7190_ReadChannel(uint8_tchannel){uint32_trawValue;floatvoltage;// 1. 触发单次转换AD7190_WriteReg(AD7190_COMM_REG,0x00);// 选择数据寄存器HAL_Delay(1);// 等待转换完成(根据时钟调整)// 2. 读取数据rawValue=AD7190_ReadReg(AD7190_DATA_REG);// 3. 数据转换(单极性模式)voltage=(rawValue*3.3f)/0xFFFFFF;// 24位数据转换returnvoltage;}// 四通道轮询采集示例voidAD7190_MultiRead(float*results){for(inti=0;i<4;i++){results[i]=AD7190_ReadChannel(i);// 依次读取通道0-3HAL_Delay(10);// 通道切换延时}}

三、关键参数说明

  1. 不连续模式配置

    • MODE_DISCONTINUOUS:使能不连续转换模式。

    • 组大小通过MODE_REG0x00000F位设置(0x04表示4通道一组)。

  2. 数据格式

    • 单极性模式:V = (Data × VREF) / 2²⁴

    • 双极性模式:V = (Data × VREF) / 2²⁴ - VREF/2

  3. 采样率控制

    • 通过MODE_REGFILTER位设置输出数据速率(如4.8kHz时需配置滤波器参数)。

四、调试与优化

1. 常见问题解决
  • 数据异常

    • 检查CS时序(低电平有效,空闲高电平)。

    • 验证SPI时钟频率(建议≤5MHz)。

  • 噪声干扰

    • 增加参考电压滤波电容(如10μF电解电容+0.1μF陶瓷电容)。

    • 在软件中添加移动平均滤波。

2. 性能优化
  • 多通道同步

    // 同时触发多通道转换(需配置通道序列器)AD7190_WriteReg(AD7190_COMM_REG,0x00);// 选择模式寄存器AD7190_WriteReg(AD7190_MODE_REG,0x040000|MODE_DISCONTINUOUS|0x0000FF);// 4通道同步
  • 校准功能

    // 零点校准AD7190_WriteReg(AD7190_COMM_REG,0x00);// 选择模式寄存器AD7190_WriteReg(AD7190_MODE_REG,0x040000|MODE_ADJUST_ZERO);// 进入校准模式HAL_Delay(100);// 等待校准完成

参考代码 AD7190四通道不连续采集模式STM32代码www.youwenfan.com/contentcsr/115731.html

五、完整工程示例

  1. CubeMX配置

    • SPI模式:全双工,时钟极性CPOL=0,相位CPHA=0。

    • 引脚配置:PA0(CS)、PA1(SCLK)、PA2(DIN)、PA4(DOUT)。

  2. 中断处理(可选):

    voidSPI1_IRQHandler(void){HAL_SPI_IRQHandler(&hspi1);if(__HAL_SPI_GET_FLAG(&hspi1,SPI_FLAG_RXNE)){// 数据接收完成处理}}

六、参考资料

  1. AD7190数据手册(ADI官网)

  2. STM32 HAL库SPI驱动源码

  3. 中的寄存器操作示例

  4. 中的中断处理实现

http://www.jsqmd.com/news/377872/

相关文章:

  • 408真题解析-2010-39-计算机网络-拥塞窗口/滑动窗口
  • 横评后发现!万众偏爱的降AIGC软件 —— 千笔·降AI率助手
  • 基于java的移动端数据可视化系统设计与实现毕设源码
  • 基于java的在线教育平台课程管理系统研究毕设源码
  • 基于java的区块链技术实现数字货币交易系统毕设
  • 基于java的企业资源计划(ERP)系统开发与改进毕设
  • 毕业论文神器 8个AI论文工具测评:专科生高效写作+格式规范全攻略
  • 律师咨询|基于java+ vue律师咨询系统(源码+数据库+文档)
  • 2026年靠谱的数码印花法兰绒/素色法兰绒公司口碑推荐哪家靠谱 - 品牌宣传支持者
  • 2026年重庆口碑好的古奥标识文旅景区标识设计公司推荐 - myqiye
  • 2026必备!降AIGC软件 千笔·降AI率助手 VS WPS AI,继续教育首选
  • 测完这批工具 8个AI论文平台测评:专科生毕业论文+开题报告高效写作指南
  • 基于电池二阶等效模型的SOC观测器设计
  • 详细介绍:ZooKeeper
  • 激关相关的模型,视频 增材制造.mph 激光焊接.mph run- 激光熔覆-可行.mph 激...
  • 不踩雷! 10个一键生成论文工具测评:专科生毕业论文+开题报告写作全攻略
  • 环保型精密轧机价格多少,靠谱供应商推荐 - 工业设备
  • 前方道路拥堵,但您仍在最优路线上
  • Nodejs+vue+ElementUI的教务选课考试成绩系统的设计与实现express-mysql
  • 说说靠谱的工业散热器源头厂家,哪家性价比高 - 工业品牌热点
  • 【保姆级教程】Claude Code 进阶指南:用 Everything Claude Code 打造更有“记忆”的 AI 程序员
  • 单片机仿真∶电流电压检测系统 可完成(1)电网参数监测,包括电流、电压。 (2)监测参数的显示
  • 2026年商用咖啡机厂家发布:以广东大正咖啡集团为代表的标杆企业深度解析 - 十大品牌推荐
  • 河北龙鹏注塑尼龙油壬价格贵吗,客户认可情况怎么样 - 工业推荐榜
  • 计算机教培 —— 如何写简历 —— 2026年入坑程序员请注意:千万别碰这几个即将被计算机行业淘汰的编程语言!Java/python/golang/C/C++/C#/开发/测试运维/后端/码士集团
  • 完整教程:Github/Gitee和Git实践
  • 从“问卷迷宫”到“智能灯塔”:书匠策AI如何照亮教育科研问卷设计新航路
  • 互联网大厂Java面试:从核心技术到微服务场景的逐步解析
  • 盘点2026年景区山地火车设计服务商,口碑前十的有哪些 - myqiye
  • 2026/2/12