ADS1255是一款高精度、低噪声的24位模拟-数字转换器(ADC),通常用于工业自动化、医疗仪器和传感器测量等领域。它具有多通道输入、低功耗和内置的PGA(可编程增益放大器)等特点,适用于需要高精度信号采集的应用。
当涉及到ADS1256时,一些重要的特性包括:
1. **高分辨率**:ADS1256具有24位的分辨率,可提供极高的精度,适用于需要准确测量小信号的应用。
2. **低噪声**:它采用了一系列降低噪声的技术,包括内部可编程增益放大器和数字滤波器,以确保输出数据的精确性和稳定性。
3. **多通道输入**:ADS1256可以同时采集多个通道的信号,这使得它非常适用于需要同时监测多个传感器或信号源的系统。
4. **SPI接口**:它通过SPI(Serial Peripheral Interface)与微控制器或其他数字设备通信,这种接口简单而灵活,易于集成到各种系统中。
5. **低功耗**:ADS1256设计为低功耗,这使得它适用于需要长时间运行或依赖于电池供电的应用。
6. **内部参考电压**:它内置了基准电压源,可以提供稳定的参考电压,以确保采集到的数据精确无误。
这些特性使得ADS1256成为许多需要高精度信号采集的应用的理想选择。
在阅读Datasheet后,首先配置SPI,SPI可用软件高低电平模拟,或者有硬件入口时直接用cubemx配置,根据数据手册配置增益和传输速率:
typedef enum
{
ADS1255_GAIN_1 = (0),
ADS1255_GAIN_2 = (1),
ADS1255_GAIN_4 = (2),
ADS1255_GAIN_8 = (3),
ADS1255_GAIN_16 = (4),
ADS1255_GAIN_32 = (5),
ADS1255_GAIN_64 = (6),
ADS1255_GAIN_MAX = (7), /* 7 ch */
}ADS1255_GAIN_E;
typedef enum
{
ADS1255_30000SPS = 0,
ADS1255_15000SPS,
ADS1255_7500SPS,
ADS1255_3750SPS,
ADS1255_2000SPS,
ADS1255_1000SPS,
ADS1255_500SPS,
ADS1255_100SPS,
ADS1255_60SPS,
ADS1255_50SPS,
ADS1255_30SPS,
ADS1255_25SPS,
ADS1255_15SPS,
ADS1255_10SPS,
ADS1255_5SPS,
ADS1255_2d5SPS,
ADS1255_DRATE_MAX
}ADS1255_DRATE_E;
配置寄存器地址以及命令指令
enum
{
REG_STATUS = 0, // x1H
REG_MUX = 1, // 01H
REG_ADCON = 2, // 20H
REG_DRATE = 3, // F0H
REG_IO = 4, // E0H
REG_OFC0 = 5, // xxH
REG_OFC1 = 6, // xxH
REG_OFC2 = 7, // xxH
REG_FSC0 = 8, // xxH
REG_FSC1 = 9, // xxH
REG_FSC2 = 10, // xxH
};
enum
{
CMD_WAKEUP = 0x00, // Completes SYNC and Exits Standby Mode 0000 0000 (00h)
CMD_RDATA = 0x01, // Read Data 0000 0001 (01h)
CMD_RDATAC = 0x03, // Read Data Continuously 0000 0011 (03h)
CMD_SDATAC = 0x0F, // Stop Read Data Continuously 0000 1111 (0Fh)
CMD_RREG = 0x10, // Read from REG rrr 0001 rrrr (1xh)
CMD_WREG = 0x50, // Write to REG rrr 0101 rrrr (5xh)
CMD_SELFCAL = 0xF0, // Offset and Gain Self-Calibration 1111 0000 (F0h)
CMD_SELFOCAL= 0xF1, // Offset Self-Calibration 1111 0001 (F1h)
CMD_SELFGCAL= 0xF2, // Gain Self-Calibration 1111 0010 (F2h)
CMD_SYSOCAL = 0xF3, // System Offset Calibration 1111 0011 (F3h)
CMD_SYSGCAL = 0xF4, // System Gain Calibration 1111 0100 (F4h)
CMD_SYNC = 0xFC, // Synchronize the A/D Conversion 1111 1100 (FCh)
CMD_STANDBY = 0xFD, // Begin Standby Mode 1111 1101 (FDh)
CMD_RESET = 0xFE, // Reset to Power-Up Values 1111 1110 (FEh)
};
static const uint8_t s_tabDataRate[ADS1255_DRATE_MAX] =
{
0xF0,
0xE0,
0xD0,
0xC0,
0xB0,
0xA1,
0x92,
0x82,
0x72,
0x63,
0x53,
0x43,
0x33,
0x20,
0x13,
0x03
};
static const float s_PGA_Rate[ADS1255_GAIN_MAX] =
{
1.0,
2.0,
4.0,
8.0,
16.0,
32.0,
64.0,
};
编写BSP_ADS1255_ReadDanAdc()函数获取返回的数据,再进行处理。