一、AD7124-8模塊簡(jiǎn)介
AD7124-8 是一款高精度、低功耗的 24 位模數(shù)轉(zhuǎn)換器(ADC),內(nèi)置多種模擬前端功能,專(zhuān)為高精度傳感器測(cè)量等應(yīng)用設(shè)計(jì)。它支持最多 8 路差分輸入,也可配置為最多 16 路偽差分輸入,適用于多通道數(shù)據(jù)采集。
產(chǎn)品特性
- 高精度低噪聲:內(nèi)置 24 位 Σ-Δ(Sigma-Delta)ADC,具備極低的輸入噪聲。可直接連接微弱信號(hào),無(wú)需額外前級(jí)放大。
- 靈活的功耗模式:提供三種功耗模式(低功耗、普通、全速),可根據(jù)需求權(quán)衡功耗、速度和噪聲性能。
- 豐富的濾波器和采樣配置:支持多種數(shù)字濾波器,包括可同時(shí)抑制 50Hz 和 60Hz 工頻干擾。低速采樣時(shí)抑制能力可超過(guò) 80 dB,適合工業(yè)信號(hào)處理。
- 集成度高:
- 多通道處理:內(nèi)置通道掃描功能(最多支持 16 通道),可以自動(dòng)輪詢(xún)采樣多個(gè)輸入通道;每個(gè)通道都可以分配不同的配置(增益、采樣率、濾波器、參考源等);
- 提供完整診斷功能:循環(huán)冗余校驗(yàn)(CRC)、信號(hào)鏈檢查和串行接口檢查。
二、模塊管腳說(shuō)明

其中,AVSS與GND相連。8路差分通道分別為AIN0-AIN1,AIN2-AIN3,AIN4-AIN5,AIN6-AIN7,AIN8-AIN9,AIN10-AIN11,AIN12-AIN13,AIN14-AIN15,AINx:x為偶數(shù),則正信號(hào)輸入,反之負(fù)信號(hào)輸入。
三、功能框圖和時(shí)序圖

信號(hào)轉(zhuǎn)換時(shí)序:
信號(hào)讀取時(shí)序:
四、主要寄存器說(shuō)明
- ADC_CONTROL寄存器(0x01):用于設(shè)置 ADC 的工作模式(如連續(xù)采樣)、功耗模式、參考電壓源、時(shí)鐘源等。其中,DATA_STATUS為狀態(tài)寄存器內(nèi)容傳輸?shù)氖鼓芪弧?梢詫顟B(tài)寄存器的內(nèi)容附加到AD7124-8的每次轉(zhuǎn)換結(jié)果。使能多個(gè)通道時(shí),此功能很有用,因?yàn)闋顟B(tài)寄存器可確定哪一通道與數(shù)據(jù)寄存器值對(duì)應(yīng)。每次輸出轉(zhuǎn)換結(jié)果時(shí),都會(huì)附加狀態(tài)寄存器的內(nèi)容。DATA_STATUS置1后,狀態(tài)寄存器的內(nèi)容將與每次從數(shù)據(jù)寄存器讀取的數(shù)據(jù)一同傳輸。


- IO_CONTROL_1寄存器(0x03):用于控制 I/O 引腳(如 PSW 開(kāi)關(guān)、REF 緩沖區(qū)、燒斷電流檢測(cè)等)。

- ID寄存器(0x05):讀取設(shè)備ID,SPI寫(xiě)入命令0x40為讀寄存器,讀ID為0x05,故寫(xiě)入0x45就可以讀出ID。

- CHANNEL通道寄存器(0x09~0x18):置通道(AINP輸入和AINM輸入),使能或禁用通道,以及選擇設(shè)置。設(shè)置可從用戶定義的8種不同選項(xiàng)中選擇。當(dāng)ADC轉(zhuǎn)換時(shí),它會(huì)自動(dòng)遍歷所有使能的通道。如果需要,用戶可以在一個(gè)序列中對(duì)某些通道多次采樣。此位,用戶還可以將診斷功能包括在序列之中。

- CONFIG配置寄存器(0x19~0x20):設(shè)置該通道對(duì)應(yīng)的:增益、基準(zhǔn)源、輸入緩沖等。


- FILTER濾波器寄存器(0x21~0x28):設(shè)置數(shù)字濾波器類(lèi)型(SINC3/SINC4等)、采樣速率(輸出數(shù)據(jù)速率)。

- 數(shù)據(jù)寄存器(0x02):用于存儲(chǔ)ADC的轉(zhuǎn)換結(jié)果,采樣結(jié)果在這里輸出。

采集信號(hào)流程的簡(jiǎn)要流程:1,2,3寄存器為初始化階段,配置ADC工作模式,4,5,6寄存器配置輸入通道階段,7寄存器讀取數(shù)據(jù)階段。
五、模擬信號(hào)輸入說(shuō)明
根據(jù)數(shù)據(jù)手冊(cè)描述,模擬輸入信號(hào)范圍是由基準(zhǔn)電壓源和增益決定。如2.5V內(nèi)部基準(zhǔn)電壓源,設(shè)置增益為1,則差分輸入信號(hào)范圍為±2.5V。其中,又因?yàn)锳INx輸入范圍要在[AVSS,AVDD]之間,板子是單電源輸入且看原理圖,AVDD接了3.3V,AVSS接了GND,即[AVSS,AVDD]=[0,3.3V],即AINx輸入信號(hào)要輸入正信號(hào)。
所以由模擬輸入信號(hào)范圍和AINx輸入信號(hào)范圍來(lái)決定AINx具體輸入電壓信號(hào)范圍。如差分輸入信號(hào)范圍為±2.5V,那么AINx輸入電壓信號(hào)要在[0V,2.5V]之間。測(cè)量最大正差分值+2.5V,則AIN0接2.5V,AIN1接0V,最大負(fù)差分值-2.5V,則AIN0接0V,AIN1接2.5V。
六、STM32F103驅(qū)動(dòng)AD7124采集信號(hào)
1. 準(zhǔn)備工作
STM32F103C8T6開(kāi)發(fā)板、AD7124采集模塊、USB轉(zhuǎn)TTL、輸入信號(hào)源。
2. 引腳接線
| STM32F103C8T6 | AD7124采集模塊 |
|---|---|
| 3.3V | VIN |
| GND | GND |
| PA0 | CS |
| PA1 | SCLK |
| PA2 | DIN |
| PA4 | DOUT |
| PA9 | USB轉(zhuǎn)TTL-Rx |
| PA10 | USB轉(zhuǎn)TTL-Tx |
AD7124-8 模塊程序說(shuō)明
- 讀取 AD7124-8 ID 結(jié)果為 0x1x,x 為硅版本,例如:0x12、0x14。新批次ID號(hào)為0x17。
- SYNC 為同步輸入,低電平有效,模塊單獨(dú)工作時(shí),應(yīng)確保 SYNC 為高電平或懸空。
- 寄存器操作邏輯描述:首先寫(xiě)入通信寄存器,指示讀取或?qū)懭搿⑺僮骷拇嫫鞯刂罚S后讀取或?qū)懭?1Byte 或 3Byte 數(shù)據(jù)。
- void LED_TEST(void)函數(shù)控制 AD7124-8 PSW 引腳連接的 LED,可用戶通信調(diào)試。使用該函數(shù)需要把通道初始化注釋掉。
- 參考程序基于 STM32F103X,時(shí)鐘為 72MHz。
3. 代碼示例
AD7124.c
#include "ad7124.h"
void RCC_Configuration(void)
{
ErrorStatus HSEStartUpStatus;
RCC_DeInit();
RCC_HSEConfig(RCC_HSE_ON);
HSEStartUpStatus = RCC_WaitForHSEStartUp();
if(HSEStartUpStatus == SUCCESS)
{
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
FLASH_SetLatency(FLASH_Latency_2);
RCC_HCLKConfig(RCC_SYSCLK_Div1);
RCC_PCLK2Config(RCC_HCLK_Div1);
RCC_PCLK1Config(RCC_HCLK_Div2);
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
RCC_PLLCmd(ENABLE);
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) { }
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
while(RCC_GetSYSCLKSource() != 0x08) { }
}
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO |RCC_APB2Periph_GPIOA, ENABLE);
}
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_1|GPIO_Pin_0;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
void NVIC_Configuration(void)
{
#ifdef VECT_TAB_RAM
NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
#else
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
#endif
}
void Delay(vu32 nCount)
{
for(; nCount != 0; nCount--);
}
#ifdef DEBUG
void assert_failed(u8* file, u32 line)
{
while (1) { }
}
#endif
void AD7124_8_Reset(void)
{
AD7124_8_CS_L;
AD7124_8_DIN_H;
for(uint8_t a=0;a< 65;a++)//提供大于64個(gè)寫(xiě)操作,復(fù)位AD7124-8
{
AD7124_8_SCLK_L;
Delay(10);
AD7124_8_SCLK_H;
Delay(10);
}
AD7124_8_CS_H;
}
void LED_TEST(void)//AD7124_8的 PSW 上連接的LED,控制LED閃爍
{
AD7124_8_CS_L;
Delay(10);
AD7124_8_Write(0x03);//寫(xiě)入 IO_CONTROL_1寄存器,復(fù)位值為0x000000
AD7124_8_Write(0x00);//寫(xiě)入3字節(jié) IO_CONTROL_1寄存器值
AD7124_8_Write(0x80);
AD7124_8_Write(0x00);
AD7124_8_CS_H;
Delay(1000000);//約0.5S延時(shí)
AD7124_8_CS_L;
Delay(10);
AD7124_8_Write(0x03);
AD7124_8_Write(0x00);
AD7124_8_Write(0x00);
AD7124_8_Write(0x00);
AD7124_8_CS_H;
Delay(1000000);
}
void AD7124_8_INIT(void)//單通道配置
{
AD7124_8_CS_L;
Delay(100);
AD7124_8_Write(0x09);//寫(xiě)入通道寄存器0 CHANNEL_0 (datasheet Page 86)
AD7124_8_Write(0x80);//使能通道,當(dāng)有多個(gè)通道被使能時(shí),自動(dòng)按順序轉(zhuǎn)換;使用CONFIG_0配置當(dāng)前通道。ADC鏈接與AIN0與AIN1
AD7124_8_Write(0x01);
AD7124_8_Write(0x19);//寫(xiě)入配置寄存器0 CONFIG_0;(datasheet Page 88)
AD7124_8_Write(0x09);//選擇雙極型模式、關(guān)閉檢測(cè)電流源、使能REF BUF與AIN BUF,選擇內(nèi)部基準(zhǔn)源,增益配置為+-2.5V;
AD7124_8_Write(0xf0);
AD7124_8_Write(0x21);//寫(xiě)入濾波寄存器寄存器,F(xiàn)ILTER_0 (datasheet Page 89)
AD7124_8_Write(0x06);//使用SINC4 濾波器
AD7124_8_Write(0x00);
AD7124_8_Write(0x80);//FS=128,因此數(shù)據(jù)輸出速率 = 614.4K/(32*128)= 150Hz
AD7124_8_Write(0x01);//寫(xiě)入ADC控制寄存器,ADC_CONTROL (datasheet Page 78)
AD7124_8_Write(0x09);//使能連續(xù)讀取,使能內(nèi)部基準(zhǔn),全功率模式,使用內(nèi)部614.4kHz時(shí)鐘源,連續(xù)工作模式。
AD7124_8_Write(0xC0);
}
void AD7124_8_INIT1(void)//多通道配置
{
AD7124_8_CS_L;
Delay(100);
AD7124_8_Write(0x09);//寫(xiě)入通道寄存器0 CHANNEL_0 (datasheet Page 86)
AD7124_8_Write(0x80);//使能通道,當(dāng)有多個(gè)通道被使能時(shí),自動(dòng)按順序轉(zhuǎn)換;使用CONFIG_0配置當(dāng)前通道。ADC鏈接與AIN0與AIN1
AD7124_8_Write(0x01);
AD7124_8_Write(0x0A);//寫(xiě)入通道寄存器1 CHANNEL_1
AD7124_8_Write(0x80);//使能通道,當(dāng)有多個(gè)通道被使能時(shí),自動(dòng)按順序轉(zhuǎn)換;使用CONFIG_1配置當(dāng)前通道。ADC鏈接與AIN2與AIN3
AD7124_8_Write(0x43);
AD7124_8_Write(0x0B);//寫(xiě)入通道寄存器2 CHANNEL_2
AD7124_8_Write(0x80);//使能通道,當(dāng)有多個(gè)通道被使能時(shí),自動(dòng)按順序轉(zhuǎn)換;使用CONFIG_2配置當(dāng)前通道。ADC鏈接與AIN4與AIN5
AD7124_8_Write(0x85);
AD7124_8_Write(0x0C);//寫(xiě)入通道寄存器3 CHANNEL_3
AD7124_8_Write(0x80);//使能通道,當(dāng)有多個(gè)通道被使能時(shí),自動(dòng)按順序轉(zhuǎn)換;使用CONFIG_3配置當(dāng)前通道。ADC鏈接與AIN6與AIN7
AD7124_8_Write(0xC7);
AD7124_8_Write(0x0D);//寫(xiě)入通道寄存器4 CHANNEL_4
AD7124_8_Write(0x81);//使能通道,當(dāng)有多個(gè)通道被使能時(shí),自動(dòng)按順序轉(zhuǎn)換;使用CONFIG_4配置當(dāng)前通道。ADC鏈接與AIN8與AIN9
AD7124_8_Write(0x09);
AD7124_8_Write(0x0E);//寫(xiě)入通道寄存器5 CHANNEL_5
AD7124_8_Write(0x81);//使能通道,當(dāng)有多個(gè)通道被使能時(shí),自動(dòng)按順序轉(zhuǎn)換;使用CONFIG_5配置當(dāng)前通道。ADC鏈接與AIN10與AIN11
AD7124_8_Write(0x4B);
AD7124_8_Write(0x0F);//寫(xiě)入通道寄存器6 CHANNEL_6
AD7124_8_Write(0x81);//使能通道,當(dāng)有多個(gè)通道被使能時(shí),自動(dòng)按順序轉(zhuǎn)換;使用CONFIG_6配置當(dāng)前通道。ADC鏈接與AIN12與AIN13
AD7124_8_Write(0x8D);
AD7124_8_Write(0x10);//寫(xiě)入通道寄存器7 CHANNEL_7
AD7124_8_Write(0x81);//使能通道,當(dāng)有多個(gè)通道被使能時(shí),自動(dòng)按順序轉(zhuǎn)換;使用CONFIG_7配置當(dāng)前通道。ADC鏈接與AIN14與AIN15
AD7124_8_Write(0xCF);
//注:在通道寄存器中可指定所使用的配置寄存器(或稱(chēng)設(shè)置寄存器),配置寄存器與濾波寄存器對(duì)應(yīng)關(guān)聯(lián)。
AD7124_8_Write(0x19);//寫(xiě)入配置寄存器0 CONFIG_0;(datasheet Page 88)
AD7124_8_Write(0x09);//選擇雙極型模式、關(guān)閉檢測(cè)電流源、使能REF BUF與AIN BUF,選擇內(nèi)部基準(zhǔn)源,增益配置為+-2.5V;
AD7124_8_Write(0xf0);
AD7124_8_Write(0x21);//寫(xiě)入濾波寄存器寄存器,F(xiàn)ILTER_0 (datasheet Page 89)
AD7124_8_Write(0x06);
AD7124_8_Write(0x00);
AD7124_8_Write(0x80);//FS=128,使用多通道序列器時(shí),轉(zhuǎn)換時(shí)間為建立時(shí)間的總和,建立時(shí)間大于轉(zhuǎn)換時(shí)間。
AD7124_8_Write(0x01);//寫(xiě)入ADC控制寄存器,ADC_CONTROL (datasheet Page 78)
AD7124_8_Write(0x0D);//使能連續(xù)讀取,使能內(nèi)部基準(zhǔn),全功率模式,使用內(nèi)部614.4kHz時(shí)鐘源,連續(xù)工作模式,使能 DATA_STATUS以輸出狀態(tài)寄存器,用于分辨通道數(shù)據(jù)
AD7124_8_Write(0xC0);
}
void AD7124_8_Write(uint8_t Data)
{
uint8_t data;
data=Data;
for(uint8_t i=0;i< 8;i++)
{
AD7124_8_SCLK_L;
if(data&0x80)
AD7124_8_DIN_H;
else
AD7124_8_DIN_L;
Delay(100);
AD7124_8_SCLK_H;
Delay(100);
data< <=1;
}
}
uint32_t AD7124_8_Read(void)
{
uint32_t DATA;
DATA=0;
for(uint8_t i=0;i< 24;i++)
{
DATA< <=1;
AD7124_8_SCLK_L;
Delay(50);
if(AD7124_8_DOUT)
DATA++;
AD7124_8_SCLK_H;
Delay(50);
}
Delay(100);
return DATA;
}
uint8_t AD7124_8_Read_Byte(void)
{
uint8_t DATA;
DATA=0;
for(uint8_t i=0;i< 8;i++)
{
DATA< <=1;
AD7124_8_SCLK_L;
Delay(100);
if(AD7124_8_DOUT)
DATA++;
AD7124_8_SCLK_H;
Delay(100);
}
Delay(100);
return DATA;
}
main.c
#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "Serial.h"
#include "ad7124.h"
uint8_t AD7124_8_ID;
uint32_t Data;
float data_temp,Vol;
float VolM[8];
uint8_t DATA_STATUS;
int main(void)
{
Serial_Init();
RCC_Configuration();
GPIO_Configuration();
NVIC_Configuration();
AD7124_8_Reset();//復(fù)位AD7190數(shù)字接口
Delay(100);
AD7124_8_CS_L;
Delay(10);
AD7124_8_Write(0x45);//讀取ID寄存器
AD7124_8_ID=AD7124_8_Read_Byte();//讀取AD7124-8 ID
AD7124_8_CS_H;
printf("AD7124_8_ID = 0x%xrn", AD7124_8_ID);
// AD7124_8_INIT(); //單通道讀取
AD7124_8_INIT1();
while (1)
{
//LED_TEST(); //使用該函數(shù)需要把通道初始化注釋掉
while(AD7124_8_DOUT);//低電平時(shí)數(shù)據(jù)就緒
Data=AD7124_8_Read();//Data采集結(jié)果
data_temp=Data;
// Vol=(data_temp-0x800000)/0x800000*2.5; //單通道讀取
// printf("Vol=%.3fVrn", Vol);
DATA_STATUS=AD7124_8_Read_Byte()&0x0F;
VolM[DATA_STATUS]=(data_temp-0x800000)/0x800000*2.5;
printf("CH%u: Volt = %.3fVrn", DATA_STATUS, VolM[DATA_STATUS]);
Delay_ms(1000);
}
}
4. 效果展示

采集2,3,4差分通道[AIN4:1.2V,AIN5:GND];[AIN6:GND,AIN7:1.5V];[AIN8:1.8V,AIN9:1.2V]。注意:AD7124 多通道采集時(shí)返回的數(shù)據(jù)的通道順序不是嚴(yán)格按通道編號(hào)順序返回的,而是由內(nèi)部通道序列器輪詢(xún)觸發(fā)、哪個(gè)通道先轉(zhuǎn)換完成就先輸出哪個(gè)通道的數(shù)據(jù)。
總結(jié)
AD7124-8 是一款高度集成的高性能 ADC,不僅具備出色的精度和靈活配置,還集成了豐富的診斷功能,特別適合用于:工業(yè)自動(dòng)化;儀器儀表;傳感器采集系統(tǒng)(如溫度、壓力、應(yīng)變等);低功耗便攜設(shè)備中的高精度數(shù)據(jù)采集等應(yīng)用場(chǎng)景。
審核編輯 黃宇
-
數(shù)據(jù)采集
+關(guān)注
關(guān)注
41文章
8038瀏覽量
120893 -
STM32F103
+關(guān)注
關(guān)注
34文章
495瀏覽量
67706 -
ADC
+關(guān)注
關(guān)注
0文章
226瀏覽量
16845
發(fā)布評(píng)論請(qǐng)先 登錄
高速采集卡丨AD 采集丨 多通道數(shù)據(jù)采集卡丨高速數(shù)據(jù)采集系統(tǒng)丨青翼科技FMC 子卡
多通道綜合數(shù)據(jù)采集儀:振弦、溫度與模擬信號(hào)一體采集 邊坡、隧道、橋梁與鐵路監(jiān)測(cè)
基于STM32F103驅(qū)動(dòng)ADS8688模塊 8通道SAR/ADC數(shù)據(jù)采集信號(hào)
坤馳科技——雙通道3GS/s高速數(shù)據(jù)采集卡
AD7124-8集成PGA和基準(zhǔn)電壓源的8通道、 低噪聲、低功耗24位Σ-Δ型ADC數(shù)據(jù)手冊(cè)
【BPI-CanMV-K230D-Zero開(kāi)發(fā)板體驗(yàn)】+ADC數(shù)據(jù)采集及尋找引腳的問(wèn)題
STM32F103驅(qū)動(dòng)LD3320語(yǔ)音識(shí)別模塊
基于STM32F103驅(qū)動(dòng)AD7124-8 24Bit 多通道ADC數(shù)據(jù)采集模塊采集信號(hào)
評(píng)論