资源简介

STM32适用于AD7124-4和AD7124-8 已验证测试
可见帖子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


评论

共有 条评论

相关资源