stm32 ads1247
好的,针对 STM32 微控制器 与 ADS1247 高精度 24 位 ADC(模数转换器) 的应用,以下是关键信息的中文说明:
核心概念:
-
ADS1247 是什么?
- 德州仪器 (TI) 生产的一款高精度、低噪声、24 位分辨率的 Delta-Sigma (ΔΣ) 型模数转换器 (ADC)。
- 主要设计用于低频、高精度测量应用,如:
- 工业过程控制(温度、压力、称重传感器)
- 医疗仪器
- 科学仪器
- 精密电源监控
- 任何需要精确测量微弱直流或低频信号 (<10Hz) 的场合。
- 关键特性:
- 24 位分辨率:提供极高的测量精度。
- 低噪声:极低的 RMS 噪声(在低增益和低数据速率下可达纳伏级)。
- 可编程增益放大器 (PGA):增益可选 1, 2, 4, 8, 16, 32, 64, 128 倍,能直接放大微小信号(如热电偶、应变片)。
- 低功耗:有多种省电模式。
- 集成式:包含激励电流源 (IDACs)、低噪声 PGA、内部振荡器、基准电压缓冲器、温度传感器等,减少外部元件需求。
- 灵活输入:4 路差分输入或 7 路单端输入(通过多路复用器 MUX 选择)。
- SPI 接口:与 STM32 等微控制器通信的标准串行接口。
-
STM32 的角色:
- 主控制器 (Master):STM32 是整个系统的核心,负责控制 ADS1247 的操作和数据采集。
- 通过 SPI 通信:STM32 使用其内置的 SPI 外设 (如 SPI1, SPI2, SPI3) 与 ADS1247 连接和通信。
- 配置寄存器:STM32 通过 SPI 向 ADS1247 写入命令和数据,配置其工作模式(数据速率、增益、输入通道、激励电流等)。
- 读取转换数据:STM32 通过 SPI 从 ADS1247 读取转换完成的 24 位数字量。
- 数据处理与计算:STM32 接收到的原始 ADC 数据需要经过处理(如补码转换、缩放、滤波、校准)才能转换成有物理意义的工程单位(如 mV, °C, g)。
- 触发转换:STM32 可以控制转换的启动/停止。
- 中断处理:通常连接 ADS1247 的
DRDY(Data Ready) 引脚到 STM32 的一个外部中断 (EXTI) 引脚,当转换完成时触发 STM32 中断,STM32 在中断服务程序 (ISR) 中读取数据,提高效率。
硬件连接要点:
-
电源 (Power):
- 为 ADS1247 提供极其纯净、稳定的模拟电源 (
AVDD,AVSS) 和数字电源 (DVDD)。通常建议使用 LDO 稳压器。 - 模拟地和数字地 (
AGND,DGND) 在靠近芯片处单点连接。 - 旁路电容至关重要:在
AVDD/AVSS和DVDD/DGND引脚靠近芯片处放置高质量的陶瓷去耦电容(如 0.1μF 和 10μF)。
- 为 ADS1247 提供极其纯净、稳定的模拟电源 (
-
基准电压 (Reference Voltage -
VREF):- 这是 ADS1247 精度的心脏。必须使用超低噪声、低温漂、高稳定性的基准电压源芯片(如 REF5025, REF5040)。
- 基准电压的稳定性和噪声直接影响 ADC 的精度。确保
REF+和REF-引脚连接正确,并靠近芯片放置合适的滤波电容。
-
SPI 接口 (SPI Interface):
- 连接 STM32 的 SPI 引脚到 ADS1247:
SCLK(SPI 时钟) -> STM32 SPISCKDIN(数据输入,STM32 -> ADS1247) -> STM32 SPIMOSIDOUT(数据输出,ADS1247 -> STM32) -> STM32 SPIMISOCS(片选) -> STM32 任意 GPIO (用作软件片选)
- 注意电平匹配:确保 STM32 和 ADS1247 的 I/O 电压 (
DVDD) 兼容(通常都使用 3.3V)。
- 连接 STM32 的 SPI 引脚到 ADS1247:
-
数据就绪信号 (
DRDY/DOUT):DRDY/DOUT引脚在数据转换完成后会拉低(电平变化)。强烈建议将此引脚连接到 STM32 的一个外部中断 (EXTI) 引脚和一个GPIO 输入引脚。EXTI 用于高效通知转换完成,GPIO 用于读取DOUT状态(如果复用为数据输出)或轮询DRDY。
-
复位引脚 (
RESET):- 连接到 STM32 的一个 GPIO 输出引脚。在硬件上电或需要强制复位 ADC 时,STM32 可以拉低此引脚一段时间 (>40ns) 来复位 ADS1247。
-
模拟输入 (Analog Inputs -
AINPx,AINNx):- 连接你的传感器信号。确保传感器信号的地与 ADS1247 的
AGND正确连接。 - 对于高阻抗源或长导线,考虑输入滤波(RC 低通滤波)和适当的防护/屏蔽措施以减少噪声。
- 连接你的传感器信号。确保传感器信号的地与 ADS1247 的
软件驱动要点 (STM32 侧):
-
初始化:
- 配置 SPI 外设:
- 模式:主机模式 (Master)。
- 时钟极性 (CPOL) 和时钟相位 (CPHA):ADS1247 要求 Mode 1 (CPOL=0, CPHA=1)。务必确认!
- 数据大小 (Data Size):设置为 8 位 (SPI 通常按字节传输)。
- 时钟速率 (Baud Rate):参考 ADS1247 手册的最大 SPI 时钟限制 (通常可达 5MHz 或更高)。
- 片选 (NSS):设置为软件管理 (Software NSS Management),使用 GPIO 控制
CS线。
- 配置 GPIO:
CS引脚:配置为推挽输出,初始置高。DRDY引脚:配置为带上拉或下拉(根据 ADS1247 的默认状态)的输入,并使能其 EXTI 中断。RESET引脚:配置为推挽输出,初始置高。
- 复位 ADS1247 (可选但推荐): 拉低
RESET引脚一段时间 (如 1ms),然后释放。 - 发送初始化命令序列 (
RESET命令): 发送0x06复位命令。 - 延时等待稳定: 复位后或上电后,给 ADC 内部电路足够的稳定时间(手册有说明)。
- 配置寄存器: 通过
WREG(写寄存器) 命令配置关键寄存器(按需):MUX0:选择输入通道和增益 (AINP,AINN,PGA增益)。SYS0:选择数据速率 (DR)、传感器烧断检测电流使能、内部温度传感器使能等。IDAC0,IDAC1:配置电流源输出 (如果用于激励传感器如 RTD)。VBIAS:配置偏置电压发生器 (如果用于共模电压偏移)。MUX1:配置内部基准缓冲器使能/旁路等。- ... (根据具体应用需求配置)
- 配置 SPI 外设:
-
读取转换数据 (常用方法):
- 中断驱动法 (推荐):
- 启动连续转换模式 (发送
START命令0x08或配置为连续转换)。 - 等待
DRDY下降沿触发 STM32 EXTI 中断。 - 在
DRDY中断服务程序 (ISR) 中:- 拉低
CS片选。 - 发送
RDATA命令 (0x12)。 - 连续读取 3 个字节 (24 位数据)。注意字节顺序 (通常是 MSB 先出)。
- 拉高
CS。 - 将读取的 3 个字节组合成一个 24 位整数。
- 处理符号位: ADS1247 输出的是二进制补码格式。24 位最高位 (MSB) 是符号位。需要将其转换为有符号的 32 位整数(符号扩展)。
- 存储或处理数据(可能需要滤波、单位转换等)。
- 拉低
- 启动连续转换模式 (发送
- 轮询法:
- 启动转换 (单次
START命令或连续)。 - 在主循环中轮询查询
DRDY引脚状态 (配置为输入)。 - 当检测到
DRDY变低时,执行与中断法中相同的读取数据流程 (CS低 ->RDATA-> 读 3 字节 ->CS高 -> 组合 -> 符号处理)。
- 启动转换 (单次
- 中断驱动法 (推荐):
-
数据处理:
- 符号扩展:
int32_t raw_value = ((int32_t)(adc_data[0] << 16) | (adc_data[1] << 8) | adc_data[2]) >> 8;(适用于 MSB 对齐左移的 24 位数据)。更安全的方式是判断符号位后再扩展。 - 电压计算:
Voltage (V) = (raw_value * V_ref) / (2^(23) - 1)或(raw_value * V_ref) / (2^(23))(取决于你如何考虑满量程)。raw_value:转换后的有符号 32 位整数。V_ref:实际施加在 ADS1247REF+和REF-引脚之间的基准电压(伏特)。2^23:因为最高位是符号位,有效位是 23 位 +/- 满量程。
- 考虑 PGA 增益: 如果使用了 PGA (
GAIN> 1),计算公式为:Voltage (V) = (raw_value * V_ref) / (GAIN * (2^(23) - 1))。注意:输入电压范围被缩小了GAIN倍。 - 工程单位转换: 根据传感器特性(如应变计的灵敏度系数、热电偶的分度表、RTD 的电阻-温度关系)将计算出的电压转换为最终需要的物理量(力、温度等)。
- 符号扩展:
重要注意事项:
- 数据手册为王: 务必仔细阅读 STM32 参考手册 (关于 SPI、GPIO、EXTI 配置) 和 ADS1247 数据手册 (关于时序、寄存器定义、电气特性、布局建议)。这是开发的基础。
- 电源和接地: 这是高精度 ADC 应用成败的关键。糟糕的电源和接地会引入噪声,显著降低实际性能。务必使用 LDO、大量高质量去耦电容、遵循星型接地或单点接地原则。
- 基准电压: 选择与精度要求匹配的高质量基准源。
- 布局: 模拟部分(输入信号、基准源、电源)和数字部分(SPI、STM32)的布局要分开。避免数字信号线跨越模拟区域。使用铺铜地平面。缩短模拟信号走线。
- 输入滤波: 在 ADC 输入端添加合适的 RC 低通滤波器 (截止频率略高于关心的信号频率) 可以滤除高频噪声。
- 校准: 为了实现最高精度,需要考虑零漂 (Offset) 和增益误差 (Gain Error) 的校准。ADS1247 内部有校准寄存器 (
OFC,FSC),STM32 可以控制校准流程 (SYS0寄存器相关位) 并存储校准系数。 - SPI 时序: 严格遵循 ADS1247 手册规定的 SPI 时序图 (片选建立/保持时间、数据建立/保持时间、时钟高低电平时间)。STM32 SPI 配置要与之匹配。逻辑分析仪是调试 SPI 通信的利器。
DRDY处理: 使用 EXTI 中断是最有效率的方式,避免主循环忙等。- 数据有效性: 在读取数据后,可以检查状态寄存器 (
STATUS命令0x24) 以确认数据是否有效(没有上溢、下溢、ADC 是否准备好等)。
总结:
使用 STM32 驱动 ADS1247 的核心在于:
- 正确的硬件连接 (纯净电源、优质基准、匹配 SPI、
DRDY连接)。 - 精确的 SPI 配置 (Mode 1, 8位传输)。
- 遵循 ADC 的通信协议 (命令字、寄存器读写时序、读取 3 字节数据)。
- 合理的数据处理 (24 位组合、二进制补码转换、基于基准电压和增益的工程值计算)。
- 严谨的 PCB 布局和电源设计。
如果你有 STM32 和 SPI 的基础知识,结合 ADS1247 的数据手册,仔细编写和调试代码,就能实现高精度的数据采集功能。祝你成功!如果有具体问题(如某个寄存器配置、调试遇到的问题),可以进一步提问。
如何给ADS1247发送指令,才能让它开始转换温度?
最新在使用ADS1247测量PT100,MCU51模拟SPI访问ADS1247,可以读写所有的寄存器。但是无法测量温度,DOUT交永远是低电平,而且差分电压也总是0.000V。想请问,应当如何给
如何使ADS1247功耗降低?
请问如何使ADS1247功耗降低,我用CC2530控制1247,现在整体功耗在休眠时候是5V0.45mA,但是1247说明上有一句说是:在睡眠
ADS1246、ADS1247和ADS1248模数转换器(ADC)数据表
电子发烧友网站提供《ADS1246、ADS1247和ADS1248模数转换器(ADC)数据表.pdf》资料免费下载
资料下载
陈存楼
2024-07-26 09:51:38
基于ADS1247的PT100测温设计
基于ADS1247的PT100测温设计总结前言本人做嵌入式开发,之前很多资源都是从博客上看到,本次因为工作项目涉及到ADS1247设计的温度采集,需要设计硬件开发,网上找了很多资料走了不少弯了,现在
资料下载
佚名
2022-01-13 11:16:51
ADS1247的SPI最高速率是多少?
您好!ADS1247的SPI最高速率是多少?目前我使用AVR的单片机控制ADS1247,SPI的速率为4M时,可以读出采集的24位数据,但是用数据转换的电压值与实际值相差很大?
求助,关于ADS1247/ADS1248参考电压选择疑问求解
最近在使用ADS1247进行新产品设计,ADC的DVDD和AVDD均为3.3V,目前基准源采用REF3430 3.0V基准源,设备能够正常采样工作,精度也基本满足设计要求,但是在ADS1247产品
ADS1247 SPI如何验证通讯是否正常?
目前我是写一个寄存器就读该寄存器的值,利用示波器查看,单片机SPI有发送数据给ADS1247,但是ADS1247发回的数据都为0xFF,那样表明通讯不正常,请问有无其他比较好的方法去验证是否通讯正常?SPI总线通讯
如何去实现一种基于ADS1247的PT100测温设计
基于ADS1247的PT100测温设计总结前言本人做嵌入式开发,之前很多资源都是从博客上看到,本次因为工作项目涉及到ADS1247设计的温度采集,需要设计硬件开发,网上找了很多资料走了不少弯了,现在
请问ADS1247的SPI最高速率是多少?
您好!ADS1247的SPI最高速率是多少?目前我使用AVR的单片机控制ADS1247,SPI的速率为4M时,可以读出采集的24位数据,但是用数据转换的电压值与实际值相差很大?
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- dtmb信号覆盖城市查询
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- amoled屏幕和oled区别
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机
- 元宇宙概念龙头股一览