BSRR=GPIO_Pin_0;}//置“1”#defineAD7606_CS_L(){GPIOB->BRR=GPIO_Pin_0;}//置“0”#defineAD7606_CLK_H(){GPIOB->BSRR=GPIO_Pin_13;}#defineAD7" />

STM32控制AD7606 进行16位数据采集


#include "stm32f10x_lib.h"
#include "main.h"

#define AD7606_CS_H() {GPIOB->BSRR = GPIO_Pin_0;} // 置 “1”
#define AD7606_CS_L() {GPIOB->BRR = GPIO_Pin_0;} // 置 “0”

#define AD7606_CLK_H() {GPIOB->BSRR = GPIO_Pin_13;}
#define AD7606_CLK_L() {GPIOB->BRR = GPIO_Pin_13;}

#define AD7606_OS0_H() {GPIOE->BSRR = GPIO_Pin_9;}
#define AD7606_OS0_L() {GPIOE->BRR = GPIO_Pin_9;}

#define AD7606_OS1_H() {GPIOE->BSRR = GPIO_Pin_8;}
#define AD7606_OS1_L() {GPIOE->BRR = GPIO_Pin_8;}

#define AD7606_OS2_H() {GPIOB->BSRR = GPIO_Pin_2;}
#define AD7606_OS2_L() {GPIOB->BRR = GPIO_Pin_2;}

#define AD7606_Reset_ON() {GPIOB->BSRR = GPIO_Pin_1;} // ___|ˉˉˉˉˉ (0 -> 1) >= 50ns
#define AD7606_Reset_OFF() {GPIOB->BRR = GPIO_Pin_1;} // ˉˉˉˉ|_____ (1 -> 0)

#define AD7606_CONVT_ON() {GPIOB->BRR = GPIO_Pin_6;} // ˉˉˉˉ|____ (1 -> 0) 开始转换/脉冲
#define AD7606_CONVT_OFF() {GPIOB->BSRR = GPIO_Pin_6;} // ___|ˉˉˉˉ (0 -> 1) >= 25ns

/*******************************************************************************
* Function Name : AD7606_Int
* Description : ADC7606 Int
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void AD7606_Int(void)
{
AD7606_OS0_L();
AD7606_OS1_L();
AD7606_OS2_L(); // 无过采样

AD7606_CLK_H();

AD7606_Reset_ON();
AD7606_Reset_ON();
AD7606_Reset_ON();

AD7606_Reset_OFF();
AD7606_Reset_OFF();
AD7606_Reset_OFF();

}

/*******************************************************************************
* Function Name : AD7606_Read
* Description : ADC7606 Data Get
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void AD7606_Read(void)
{
u8 i,ii;
u16 data;

AD7606_CS_L();

AD7606_CONVT_ON();

AD7606_CONVT_OFF();


AD7606_CLK_L();
data=0;

while((GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_14)) == 0){ // 等待 BUSY 信号变低
for(i=0;i<8;i++){ // 采集8个通道数据,每通道16个脉冲
for(ii=16;ii>0;ii--){
data <<= 1;
data |= (GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_5));
AD7606_CLK_H();
AD7606_CLK_H();
AD7606_CLK_L();
AD7606_CLK_L();

}
ADC_buf[i]=data;
}
break;
}

AD7606_CS_H();
}




相关文档
最新文档