登录/注册

stm32 ads1247

更多

好的,针对 STM32 微控制器ADS1247 高精度 24 位 ADC(模数转换器) 的应用,以下是关键信息的中文说明:

核心概念:

  1. 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 等微控制器通信的标准串行接口。
  2. 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) 中读取数据,提高效率。

硬件连接要点:

  1. 电源 (Power):

    • 为 ADS1247 提供极其纯净、稳定的模拟电源 (AVDD, AVSS) 和数字电源 (DVDD)。通常建议使用 LDO 稳压器。
    • 模拟地和数字地 (AGND, DGND) 在靠近芯片处单点连接。
    • 旁路电容至关重要:在 AVDD/AVSSDVDD/DGND 引脚靠近芯片处放置高质量的陶瓷去耦电容(如 0.1μF 和 10μF)。
  2. 基准电压 (Reference Voltage - VREF):

    • 这是 ADS1247 精度的心脏。必须使用超低噪声、低温漂、高稳定性的基准电压源芯片(如 REF5025, REF5040)。
    • 基准电压的稳定性和噪声直接影响 ADC 的精度。确保 REF+REF- 引脚连接正确,并靠近芯片放置合适的滤波电容。
  3. SPI 接口 (SPI Interface):

    • 连接 STM32 的 SPI 引脚到 ADS1247:
      • SCLK (SPI 时钟) -> STM32 SPI SCK
      • DIN (数据输入,STM32 -> ADS1247) -> STM32 SPI MOSI
      • DOUT (数据输出,ADS1247 -> STM32) -> STM32 SPI MISO
      • CS (片选) -> STM32 任意 GPIO (用作软件片选)
    • 注意电平匹配:确保 STM32 和 ADS1247 的 I/O 电压 (DVDD) 兼容(通常都使用 3.3V)。
  4. 数据就绪信号 (DRDY / DOUT):

    • DRDY / DOUT 引脚在数据转换完成后会拉低(电平变化)。强烈建议将此引脚连接到 STM32 的一个外部中断 (EXTI) 引脚和一个GPIO 输入引脚。EXTI 用于高效通知转换完成,GPIO 用于读取 DOUT 状态(如果复用为数据输出)或轮询 DRDY
  5. 复位引脚 (RESET):

    • 连接到 STM32 的一个 GPIO 输出引脚。在硬件上电或需要强制复位 ADC 时,STM32 可以拉低此引脚一段时间 (>40ns) 来复位 ADS1247。
  6. 模拟输入 (Analog Inputs - AINPx, AINNx):

    • 连接你的传感器信号。确保传感器信号的地与 ADS1247 的 AGND 正确连接。
    • 对于高阻抗源或长导线,考虑输入滤波(RC 低通滤波)和适当的防护/屏蔽措施以减少噪声。

软件驱动要点 (STM32 侧):

  1. 初始化:

    • 配置 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:配置内部基准缓冲器使能/旁路等。
      • ... (根据具体应用需求配置)
  2. 读取转换数据 (常用方法):

    • 中断驱动法 (推荐):
      1. 启动连续转换模式 (发送 START 命令 0x08 或配置为连续转换)。
      2. 等待 DRDY 下降沿触发 STM32 EXTI 中断。
      3. DRDY 中断服务程序 (ISR) 中:
        • 拉低 CS 片选。
        • 发送 RDATA 命令 (0x12)。
        • 连续读取 3 个字节 (24 位数据)。注意字节顺序 (通常是 MSB 先出)。
        • 拉高 CS
        • 将读取的 3 个字节组合成一个 24 位整数。
        • 处理符号位: ADS1247 输出的是二进制补码格式。24 位最高位 (MSB) 是符号位。需要将其转换为有符号的 32 位整数(符号扩展)。
        • 存储或处理数据(可能需要滤波、单位转换等)。
    • 轮询法:
      1. 启动转换 (单次 START 命令或连续)。
      2. 在主循环中轮询查询 DRDY 引脚状态 (配置为输入)。
      3. 当检测到 DRDY 变低时,执行与中断法中相同的读取数据流程 (CS 低 -> RDATA -> 读 3 字节 -> CS 高 -> 组合 -> 符号处理)。
  3. 数据处理:

    • 符号扩展: 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:实际施加在 ADS1247 REF+REF- 引脚之间的基准电压(伏特)。
      • 2^23:因为最高位是符号位,有效位是 23 位 +/- 满量程。
    • 考虑 PGA 增益: 如果使用了 PGA (GAIN > 1),计算公式为:Voltage (V) = (raw_value * V_ref) / (GAIN * (2^(23) - 1))注意:输入电压范围被缩小了 GAIN 倍。
    • 工程单位转换: 根据传感器特性(如应变计的灵敏度系数、热电偶的分度表、RTD 的电阻-温度关系)将计算出的电压转换为最终需要的物理量(力、温度等)。

重要注意事项:

  1. 数据手册为王: 务必仔细阅读 STM32 参考手册 (关于 SPI、GPIO、EXTI 配置) 和 ADS1247 数据手册 (关于时序、寄存器定义、电气特性、布局建议)。这是开发的基础。
  2. 电源和接地: 这是高精度 ADC 应用成败的关键。糟糕的电源和接地会引入噪声,显著降低实际性能。务必使用 LDO、大量高质量去耦电容、遵循星型接地或单点接地原则。
  3. 基准电压: 选择与精度要求匹配的高质量基准源。
  4. 布局: 模拟部分(输入信号、基准源、电源)和数字部分(SPI、STM32)的布局要分开。避免数字信号线跨越模拟区域。使用铺铜地平面。缩短模拟信号走线。
  5. 输入滤波: 在 ADC 输入端添加合适的 RC 低通滤波器 (截止频率略高于关心的信号频率) 可以滤除高频噪声。
  6. 校准: 为了实现最高精度,需要考虑零漂 (Offset) 和增益误差 (Gain Error) 的校准。ADS1247 内部有校准寄存器 (OFC, FSC),STM32 可以控制校准流程 (SYS0 寄存器相关位) 并存储校准系数。
  7. SPI 时序: 严格遵循 ADS1247 手册规定的 SPI 时序图 (片选建立/保持时间、数据建立/保持时间、时钟高低电平时间)。STM32 SPI 配置要与之匹配。逻辑分析仪是调试 SPI 通信的利器。
  8. DRDY 处理: 使用 EXTI 中断是最有效率的方式,避免主循环忙等。
  9. 数据有效性: 在读取数据后,可以检查状态寄存器 (STATUS 命令 0x24) 以确认数据是否有效(没有上溢、下溢、ADC 是否准备好等)。

总结:

使用 STM32 驱动 ADS1247 的核心在于:

  1. 正确的硬件连接 (纯净电源、优质基准、匹配 SPI、DRDY 连接)。
  2. 精确的 SPI 配置 (Mode 1, 8位传输)。
  3. 遵循 ADC 的通信协议 (命令字、寄存器读写时序、读取 3 字节数据)。
  4. 合理的数据处理 (24 位组合、二进制补码转换、基于基准电压和增益的工程值计算)。
  5. 严谨的 PCB 布局和电源设计

如果你有 STM32 和 SPI 的基础知识,结合 ADS1247 的数据手册,仔细编写和调试代码,就能实现高精度的数据采集功能。祝你成功!如果有具体问题(如某个寄存器配置、调试遇到的问题),可以进一步提问。

如何给ADS1247发送指令,才能让它开始转换温度?

最新在使用ADS1247测量PT100,MCU51模拟SPI访问ADS1247,可以读写所有的寄存器。但是无法测量温度,DOUT交永远是低电平,而且差分电压也总是0.000V。想请问,应当如何给

2025-01-22 06:25:12

ADS1247转换值不对的原因?

求帮助ADS1247的

2025-01-16 08:15:49

如何使ADS1247功耗降低?

请问如何使ADS1247功耗降低,我用CC2530控制1247,现在整体功耗在休眠时候是5V0.45mA,但是1247说明上有一句说是:在睡眠

2025-01-10 07:58:04

ADS1246、ADS1247ADS1248模数转换器(ADC)数据表

电子发烧友网站提供《ADS1246、ADS1247和ADS1248模数转换器(ADC)数据表.pdf》资料免费下载

资料下载 陈存楼 2024-07-26 09:51:38

基于ADS1247的PT100测温设计

基于ADS1247的PT100测温设计总结前言本人做嵌入式开发,之前很多资源都是从博客上看到,本次因为工作项目涉及到ADS1247设计的温度采集,需要设计硬件开发,网上找了很多资料走了不少弯了,现在

资料下载 佚名 2022-01-13 11:16:51

STM32关于ADS1120驱动程序资料

STM32关于ADS1120驱动程序资料

资料下载 nan123456789 2022-01-07 14:20:32

基于STM32ADS1115使用例程

基于STM32的ADS1115使用例程

资料下载 131594 2021-12-02 20:51:11

DC1247A-设计文件

DC1247A-设计文件

资料下载 张国厚 2021-06-15 19:18:09

ADS1247的SPI最高速率是多少?

您好!ADS1247的SPI最高速率是多少?目前我使用AVR的单片机控制ADS1247,SPI的速率为4M时,可以读出采集的24位数据,但是用数据转换的电压值与实际值相差很大?

2025-01-07 06:27:00

ADS1247的VREFOUT引脚无输出电压,为什么?

ADS1247的VREFOUT 引脚无输出电压

2024-12-23 06:06:11

求助,关于ADS1247/ADS1248参考电压选择疑问求解

最近在使用ADS1247进行新产品设计,ADC的DVDD和AVDD均为3.3V,目前基准源采用REF3430 3.0V基准源,设备能够正常采样工作,精度也基本满足设计要求,但是在ADS1247产品

2024-12-11 06:01:42

ADS1247 SPI如何验证通讯是否正常?

目前我是写一个寄存器就读该寄存器的值,利用示波器查看,单片机SPI有发送数据给ADS1247,但是ADS1247发回的数据都为0xFF,那样表明通讯不正常,请问有无其他比较好的方法去验证是否通讯正常?SPI总线通讯

2024-12-10 08:41:14

ADS1247 FIR的优点是什么?

ADS1247 FIR的优点是?

2024-08-13 08:08:10

如何去实现一种基于ADS1247的PT100测温设计

基于ADS1247的PT100测温设计总结前言本人做嵌入式开发,之前很多资源都是从博客上看到,本次因为工作项目涉及到ADS1247设计的温度采集,需要设计硬件开发,网上找了很多资料走了不少弯了,现在

2022-02-25 06:20:41

请问ADS1247的SPI最高速率是多少?

您好!ADS1247的SPI最高速率是多少?目前我使用AVR的单片机控制ADS1247,SPI的速率为4M时,可以读出采集的24位数据,但是用数据转换的电压值与实际值相差很大?

2019-06-18 09:58:33
7天热门专题 换一换
相关标签