登录/注册

ad7794程序

更多

以下是针对AD7794芯片(24位Σ-Δ ADC)的中文程序开发指南:


核心编程步骤

  1. 初始化SPI接口

    // 伪代码示例(STM32 HAL库)
    void SPI_Init() {
    hspi.Instance = SPI1;
    hspi.Init.Mode = SPI_MODE_MASTER;
    hspi.Init.Direction = SPI_DIRECTION_2LINES;
    hspi.Init.DataSize = SPI_DATASIZE_8BIT;  // 使用8位数据传输
    hspi.Init.CLKPolarity = SPI_POLARITY_LOW;
    hspi.Init.CLKPhase = SPI_PHASE_1EDGE;
    hspi.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_256; // 低速模式
    HAL_SPI_Init(&hspi);
    }
  2. 硬件复位(可选)

    // 拉低RESET引脚至少4μs
    HAL_GPIO_WritePin(RESET_GPIO_Port, RESET_Pin, GPIO_PIN_RESET);
    HAL_Delay(1);  // 1ms延时确保复位
    HAL_GPIO_WritePin(RESET_GPIO_Port, RESET_Pin, GPIO_PIN_SET);
    HAL_Delay(10); // 等待稳定
  3. 读写寄存器函数

    
    // 写寄存器函数
    void AD7794_WriteReg(uint8_t reg, uint8_t size, uint32_t data) {
    uint8_t txBuf[4];
    txBuf[0] = 0x00 | (reg << 3);  // 写命令 | 寄存器地址
    
    // 数据打包(MSB优先)
    for (int i = 1; i <= size; i++) 
    txBuf[i] = (data >> (8 * (size - i))) & 0xFF;
    
    HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_RESET);
    HAL_SPI_Transmit(&hspi, txBuf, size + 1, 100);
    HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_SET);
    }

// 读寄存器函数 uint32_t AD7794_ReadReg(uint8_t reg, uint8_t size) { uint8_t txBuf[4] = {0}; uint8_t rxBuf[4] = {0}; txBuf[0] = 0x40 | (reg << 3); // 读命令 | 寄存器地址

HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_RESET); HAL_SPI_Transmit(&hspi, txBuf, 1, 100); HAL_SPI_Receive(&hspi, rxBuf, size, 100); // 接收数据 HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_SET);

// 数据解包 uint32_t result = 0; for (int i = 0; i < size; i++) result = (result << 8) | rxBuf[i]; return result; }


4. **关键配置(初始化)**
```c
void AD7794_Init() {
  // 1. 配置模式寄存器(单极性、无缓冲、增益=1)
  AD7794_WriteReg(0x01, 2, 0x000A);  // Mode: 连续转换模式,10Hz输出速率

  // 2. 配置IO寄存器(使能激励电流源)
  AD7794_WriteReg(0x03, 1, 0x02);     // IO: IOUT1=10μA, IOUT2=OFF

  // 3. 配置寄存器(通道1、差分输入、外部参考)
  AD7794_WriteReg(0x02, 2, 0x10C0);   // Conf: Ch1,增益=1,双极性,缓冲使能
}
  1. 读取ADC数据

    int32_t AD7794_ReadData() {
    // 等待转换完成(轮询状态寄存器)
    uint8_t status;
    do {
    status = AD7794_ReadReg(0x00, 1); // 读状态寄存器
    } while (status & 0x80);           // RDY=1表示转换未完成
    
    // 读取24位数据寄存器
    uint32_t data = AD7794_ReadReg(0x04, 3);  // 数据寄存器地址=0x04
    return (int32_t)(data << 8) >> 8;          // 符号扩展为32位有符号数
    }

关键注意点

  1. 时序要求

    • 片选(CS)拉低后等待>500ns再发SPI信号
    • 连续写命令间隔至少>100ns
  2. 校准操作

    // 执行内部零刻度校准
    AD7794_WriteReg(0x01, 2, 0x080A);  // Mode: CAL_ZERO_SCALE
    while (AD7794_ReadReg(0x00, 1) & 0x80); // 等待校准完成
  3. 通道切换

    // 切换至通道2(AIN2+ / AIN3-)
    AD7794_WriteReg(0x02, 2, 0x20C0); 
    HAL_Delay(50); // 等待建立时间

典型应用场景

  1. 热电偶测温

    • 使用差分输入通道
    • 配合恒流源激励(通过IO寄存器配置)
  2. 电桥测量

    • 启用缓冲器减小输入误差
    • 双极性模式配置
  3. 电池供电设备

    • 空闲时切至关断模式:
      AD7794_WriteReg(0x01, 2, 0x0020); // 关断模式

调试建议

  1. 用逻辑分析仪抓取SPI波形,检查时序
  2. 先验证寄存器读写(如读取器件ID)
  3. 测试短路输入时零刻度读数(应为0x800000附近)
  4. 使用外部基准源时确保电压稳定

实际开发时请根据具体硬件连接调整引脚定义和SPI参数(时钟相位等)。

深入剖析AD7794/AD7795:高精度ADC的卓越之选

深入剖析AD7794/AD7795:高精度ADC的卓越之选 在电子设计领域,高精度模拟 - 数字转换至关重要。AD7794/AD7795作为一款6通道、低噪声、低功耗的24/16位∑ - Δ ADC

2026-04-02 14:10:12

国产ADC可替换AD7794在电量测量中的应用

国产ADC可替换AD7794在电量测量中的应用

2024-06-18 09:54:00

AD7794芯片发烫烧坏,问题出在哪?

两个月前发过一个帖子,提了下AD7794烧坏的问题。一开始烧坏好几块片子,当时也没做了什么改变,自己就都好了,结果也很稳定,在120°高温下测试温漂也很小。 现在根据实际需要,改版了,但基本原理

2023-12-22 07:14:17

瑞盟MS5194兼容替代AD7794

瑞盟MS5194兼容替代AD7794

资料下载 jf_23120647 2022-12-07 15:41:48

AD7794/AD7795: 6通道、低噪声、低功率24/16位

AD7794/AD7795: 6通道、低噪声、低功率24/16位Σ-Δ型ADC

资料下载 允治永 2022-03-22 14:39:54

AD7794评估软件

AD7794评估软件

资料下载 梅利号 2021-06-06 16:25:39

EVAD7794 AD7794 评估板

EVAL-AD7794EBZ是用于AD7794的全功能评估板。该评估板可通过标准的USB接口连接到PC。用户通过随附的软件可以对ADC的性能执行详尽分析。请注意:该评估软件无法在Windows 8或Windows 1

资料下载 佚名 2021-05-28 14:08:16

AD7794参考代码

AD7794参考代码

资料下载 佚名 2021-03-18 09:38:28

引起AD7794烧坏的原因?

采用AD7794做五路测温。采用四线制接法如图,我的原理图与下图的区别只是没有模拟输入端串联的2个1K电阻,以及并联的3个电容。测试时,IOUT1输出为210uA。将RTD的1,2脚短接,3,4脚短

2023-12-22 06:34:10

2片AD7794能否直接和STM32F103C8的SPI口直接相连?

ADI专家,求助关于AD7794的应用问题,用于采集热电偶信号的。 1、有没有AD7794的应用参考电路? 2、2片AD7794能否直接和S

2023-12-21 06:29:01

致使AD7794停止工作的原因有哪些?

我们使用AD7794BRUZ遇到些问题,请协助查找原因。谢谢。 用AD7794测量四路压力和一路重量,正常时电流50mA,在将砝码挂到称重计上时(砝码和称重计接触,其他金属物品也会出

2023-12-20 06:57:47

AD7794死机问题怎么处理?

最接在使用AD7794的时候,遇到一个奇怪的问题,我电路设计中主要用于采集问题和输出电流,两个供电源相互独立,当用万用表测量输出电流的一瞬间的时候,有时候AD7794会出现死机,

2023-12-08 06:19:06

AD7794

AD7794 - Low Power, 24-Bit Sigma-Delta ADC with In-Amp and Embedded Reference (6 Channel) - Analog Devices

2022-11-04 17:22:44

高精度A/D转换芯片AD7794的特点是什么,怎么使用?

AD7794的功能及技术特性是什么AD7794的应用电路设计AD7794的实验和实测效果

2021-04-25 07:09:19

模数转换器AD7794相关资料分享

模数转换器AD7794资料下载内容主要介绍了:AD7794引脚功能排列AD7794内部方框图

2021-03-31 06:12:15
7天热门专题 换一换
相关标签