資源簡介
STM32適用于AD7124-4和AD7124-8 已驗證測試
可見帖子https://www.amobbs.com/forum.php?mod=viewthread&tid=5728545&page=1#pid11230725
也可以稍微修改用于其他平臺 沒用官方的庫 看著修改費勁
可見帖子https://www.amobbs.com/forum.php?mod=viewthread&tid=5728545&page=1#pid11230725
也可以稍微修改用于其他平臺 沒用官方的庫 看著修改費勁

代碼片段和文件信息
#include“stm32f10x_conf.h“
/*代碼說明
*參考代碼基于STM32F103XX主頻為72MHz
*代碼使用IO模擬SPI,僅與四個IO有關
*Delay(100);的延時長度約為25us
*寄存器操作邏輯描述:首先寫入通信寄存器,指示讀取或寫入、所操作寄存器地址,隨后讀取或寫入1Byte或3Byte數據。
*/
#define?AD7124_8_CS_H?GPIO_SetBits(GPIODGPIO_Pin_0)
#define?AD7124_8_CS_L?GPIO_ResetBits(GPIODGPIO_Pin_0)
#define?AD7124_8_SCLK_H?GPIO_SetBits(GPIODGPIO_Pin_1)
#define?AD7124_8_SCLK_L?GPIO_ResetBits(GPIODGPIO_Pin_1)
#define?AD7124_8_DIN_H?GPIO_SetBits(GPIODGPIO_Pin_2)
#define?AD7124_8_DIN_L?GPIO_ResetBits(GPIODGPIO_Pin_2)
#define?AD7124_8_DOUT?GPIO_ReadInputDataBit(GPIODGPIO_Pin_4)
void?RCC_Configuration(void);?
void?GPIO_Configuration(void);
void?NVIC_Configuration(void);?
void?Delay(vu32?nCount);
void?AD7124_8_Reset(void);
void?LED_TEST(void);//AD7124_8的?PSW?上連接的LED,控制LED閃爍
void?read_reg(void);//讀取配置寄存器與模式寄存器值,結果存于全局變量conf_reg[3]、mode_reg[3]中
void?AD7124_8_INIT(void);
void?AD7124_8_INIT1(void);//多通道配置
void?AD7124_8_Write(uint8_t?Data);
uint32_t?AD7124_8_Read(void);//讀取結果函數,返回uint32_t?類型結果
uint8_t?AD7124_8_Read_Byte(void);//字節讀取函數
uint8_t?AD7124_8_ID;//復位值為0x12或0x14;
uint32_t?Data;
float?data_tempVol;
float?VolM[8];
uint8_t?DATA_STATUS;
??int?main(void)?
{?
??RCC_Configuration();
??GPIO_Configuration();
??NVIC_Configuration();
??
??AD7124_8_Reset();//復位AD7190數字接口
??Delay(100);
??
??/*
??AD7124_8_CS_L;
??Delay(10);
??AD7124_8_Write(0x45);//讀取ID寄存器
??AD7124_8_ID=AD7124_8_Read_Byte();//讀取AD7124-8?ID?=?0x12/0x14
??AD7124_8_CS_H;
??*/
??AD7124_8_INIT();
??while?(1)?
??{
????//LED_TEST();
????while(AD7124_8_DOUT);//低電平時數據就緒
????Data=AD7124_8_Read();//Data采集結果
????data_temp=Data;
????Vol=(data_temp-0x800000)/0x800000*2.5;
????
??}?
}?
void?AD7124_8_INIT(void)//單通道配置
{
??AD7124_8_CS_L;
??Delay(100);
??AD7124_8_Write(0x09);//寫入通道寄存器0??CHANNEL_0??(datasheet?Page?86)
??AD7124_8_Write(0x80);//使能通道,當有多個通道被使能時,自動按順序轉換;使用CONFIG_0配置當前通道。ADC鏈接與AIN0與AIN1
??AD7124_8_Write(0x01);
??AD7124_8_Write(0x19);//寫入配置寄存器0?CONFIG_0;(datasheet?Page?88)
??AD7124_8_Write(0x09);//選擇雙極型模式、關閉檢測電流源、使能REF?BUF與AIN?BUF,選擇內部基準源,增益配置為+-2.5V;
??AD7124_8_Write(0xf0);
??
??AD7124_8_Write(0x21);//寫入濾波寄存器寄存器,FILTER_0?(datasheet?Page?89)
??AD7124_8_Write(0x06);//使用SINC4?濾波器
??AD7124_8_Write(0x00);
??AD7124_8_Write(0x80);//FS=128因此數據輸出速率?=?614.4K/(32*128)=?150Hz
??
??AD7124_8_Write(0x01);//寫入ADC控制寄存器,ADC_CONTROL?(datasheet?Page?78)
??AD7124_8_Write(0x09);//使能連續讀取,使能內部基準,全功率模式,使用內部614.4kHz時鐘源,連續工作模式。
??AD7124_8_Write(0xC0);
}
void?AD7124_8_INIT1(void)//多通道配置
{
??AD7124_8_CS_L;
??Delay(100);
??AD7124_8_Write(0x09);//寫入通道寄存器0??CHANNEL_0??(datasheet?Page?86)
??AD7124_8_Write(0x80);//使能通道,當有多個通道被使能時,自動按順序轉換;使用CONFIG_0配置當前通道。ADC鏈接與AIN0與AIN1
??AD7124_8_Write(0x01);
??AD7124_8_Write(0x0A);//寫入通道寄存器1??CHANNEL_1?
??AD7124_8_Write(0x80);//使能通道,當有多個通道被使能時,自動按順序轉換;使用CONFIG_1配置當前通道。ADC鏈接與AIN2與AIN3
??AD7124_8_Write(0x43);
??AD7124_8_Write(0x0B);//寫入通道寄存器2??CHANNEL_2?
??AD7124_8_Write(0x80);//使能通道,當有多個通道被使能時,自動按順序轉換;使用CONFI
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????8662??2019-10-26?23:59??多通道參考程序\main.c
?????文件???????8506??2019-10-26?23:57??單通道參考程序\main.c
?????目錄??????????0??2019-10-27?00:00??多通道參考程序
?????目錄??????????0??2019-10-27?00:00??單通道參考程序
-----------?---------??----------?-----??----
????????????????17168????????????????????4
- 上一篇:頭像上傳裁剪整合php
- 下一篇:html+php+mysql留言板功能的實現
評論
共有 條評論