101 lines
5.4 KiB
Markdown
101 lines
5.4 KiB
Markdown
<!--
|
||
* @Author: mypx
|
||
* @Email: mypx_coder@163.com
|
||
* @Date: 2025-06-23 10:56:41
|
||
* @LastEditors: mypx mypx_coder@163.com
|
||
* @Description:
|
||
-->
|
||
## AD7792与AD7793的核心区别总结
|
||
|
||
---
|
||
|
||
### 🔍 **核心差异概览**
|
||
| **参数** | **AD7792** | **AD7793** | **说明** |
|
||
|------------------------|--------------------|--------------------|--------------------------------------------------------------------------|
|
||
| **分辨率** | 16位 | 24位 | AD7793有效分辨率高达23位,适合更高精度测量。 |
|
||
| **输出数据范围** | 0–65535 (16位) | 0–16,777,215 (24位) | 24位分辨率提供更精细的量化级别。 |
|
||
| **噪声水平** | 较高(同增益下) | 更低(40nV RMS @4.17Hz) | 低噪声设计使AD7793在微弱信号检测中表现更优。 |
|
||
| **有效分辨率** | ≤16位 | 最高23位 | 实际可用分辨率受噪声限制,AD7793在低速率下更接近理论值。 |
|
||
| **典型应用场景** | 一般工业控制 | 高精度测量(如医疗、实验室) | 热电偶、RTD测温等场景优先选用AD7793。 |
|
||
|
||
---
|
||
|
||
### ⚙️ **功能与性能细节**
|
||
1. **模拟前端一致性**
|
||
- **相同点**:
|
||
- 均支持3路差分输入,内置可编程增益放大器(PGA,增益1–128)。
|
||
- 集成激励电流源(10μA/210μA/1mA)和偏置电压发生器。
|
||
- 供电电压范围均为2.7V–5.25V,功耗典型值400μA。
|
||
- **差异点**:
|
||
- AD7793的输入缓冲器噪声更低,直接支持小信号输入(如PT100测温)。
|
||
|
||
2. **动态性能优化**
|
||
- **数据速率**:两者均支持4.17Hz–470Hz可调输出速率。
|
||
- **滤波能力**:AD7793在低速率下(如4.17Hz)通过数字滤波实现更优的50Hz/60Hz工频抑制。
|
||
|
||
3. **基准电压与校准**
|
||
- 均支持内部带隙基准(1.17V)或外部差分基准(如2.5V)。
|
||
- **校准模式**:两款芯片均提供内部/系统零点和满量程校准寄存器。
|
||
|
||
---
|
||
|
||
### 📊 **选型建议**
|
||
- **AD7792适用场景**:成本敏感型应用,如工业过程控制、便携仪器仪表,对分辨率要求≤16位即可满足。
|
||
- **AD7793适用场景**:
|
||
- 高精度传感器测量(如RTD测温精度达0.2℃)。
|
||
- 微弱信号采集(如气体分析、血液检测)。
|
||
- 需23位有效分辨率的系统(如实验室设备)。
|
||
|
||
---
|
||
|
||
### 💎 **总结**
|
||
AD7793在分辨率、噪声控制和有效位数上全面优于AD7792,但成本更高;
|
||
AD7792则以更低成本覆盖中精度需求场景。
|
||
若系统要求分辨率≤16位且预算有限,选AD7792;反之,追求极限精度或微弱信号检测,必选AD7793。
|
||
|
||
---
|
||
|
||
## 通信寄存器用法
|
||
|
||
通信寄存器在AD7793中起到控制数据传输方向和指定目标寄存器的作用。它是SPI通信接口的核心控制寄存器,用于告诉AD7793后续的操作是读还是写,以及操作的目标寄存器是哪一个。
|
||
|
||
### 通信寄存器的作用
|
||
1. **读写控制**:通过设置`RW`位(bit6)来区分是读操作还是写操作。
|
||
2. **寄存器选择**:通过`RS2-RS0`位(bits5-3)来指定要操作的目标寄存器。
|
||
3. **连续读模式**:通过设置`CREAD`位(bit2)可以启用连续读模式,用于连续读取数据寄存器。
|
||
|
||
### 是否每个寄存器操作前都需要设置通信寄存器?
|
||
是的,在每次操作AD7793的寄存器之前,都需要先通过通信寄存器指定操作类型(读/写)和目标寄存器。这是因为AD7793采用的是串行接口,需要通过通信寄存器来告知器件接下来要进行的操作。
|
||
|
||
### 通信寄存器的操作流程
|
||
1. **构建通信命令**:根据要操作的目标寄存器和操作类型(读/写),构建通信寄存器的值。
|
||
2. **发送通信命令**:将构建好的通信命令发送给AD7793。
|
||
3. **执行数据传输**:根据通信命令的指示,进行数据的读写操作。
|
||
|
||
### 代码示例
|
||
以下是一个写寄存器的示例,展示了如何使用通信寄存器:
|
||
|
||
```c
|
||
bool ad7793_write_reg(uint8_t reg, uint8_t *data, uint16_t len)
|
||
{
|
||
uint8_t cmd = 0;
|
||
|
||
/* Build communication command: WEN=0, R/W=0(write), register address */
|
||
cmd = (reg & 0x07) << 3; // 设置RS2-RS0位,指定目标寄存器
|
||
cmd &= ~COMM_RW; // 清除RW位,设置为写操作
|
||
cmd &= ~COMM_WEN; // 清除WEN位(默认值)
|
||
|
||
ad7793.hw_if.gpio_set(ad7793.cs_pin, false); // 使能片选
|
||
ad7793_spi_transfer(cmd, data, NULL, len); // 发送通信命令和数据
|
||
ad7793.hw_if.gpio_set(ad7793.cs_pin, true); // 禁用片选
|
||
|
||
return true;
|
||
}
|
||
```
|
||
|
||
### 注意事项
|
||
1. **通信命令字节**:通信寄存器的设置是通过发送一个专门的命令字节来实现的,而不是直接写入通信寄存器的地址。
|
||
2. **连续操作**:在连续操作同一个寄存器时,不需要每次都重新设置通信寄存器,除非操作类型或目标寄存器发生变化。
|
||
3. **数据寄存器的特殊处理**:数据寄存器(REG_DATA)在读模式下有特殊的连续读功能,可以通过设置`CREAD`位来启用。
|
||
|
||
理解通信寄存器的工作原理对于正确操作AD7793至关重要,它是实现与器件通信的基础。 |