糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > 基于stm32L0系列的AD7682驱动程序

基于stm32L0系列的AD7682驱动程序

时间:2019-08-02 16:50:33

相关推荐

基于stm32L0系列的AD7682驱动程序

基于stm32L0系列的AD7682驱动程序

//调用u16 AD7682(u8 adINx),即可切换通道,得到返回的ADC值。实测程序可用,ADC值为0-65535

//CFG_COM=[13:0]#define CFG 1 //bit13 覆盖寄存器内容#define INCC 6 //bit10-12#define adIN0 0 //bit7-9#define adIN1 1 //bit7-9#define BW 1 //bit6#define REF 1 //REF=4.096V bit3-5#define SEQ 0 //禁用序列器 bit1-2#define RB 1 //不回读当前配置内容 bit0#define ADC_CS_H LL_GPIO_SetOutputPin(GPIOA, LL_GPIO_PIN_15) #define ADC_CS_L LL_GPIO_ResetOutputPin(GPIOA, LL_GPIO_PIN_15) #define ADC_SCK_H LL_GPIO_SetOutputPin(GPIOB, LL_GPIO_PIN_3) #define ADC_SCK_L LL_GPIO_ResetOutputPin(GPIOB, LL_GPIO_PIN_3) #define ADC_MOSI_H LL_GPIO_SetOutputPin(GPIOA, LL_GPIO_PIN_12) #define ADC_MOSI_L LL_GPIO_ResetOutputPin(GPIOA, LL_GPIO_PIN_12) #define ADC_MISO_H LL_GPIO_SetOutputPin(GPIOA, LL_GPIO_PIN_11) #define ADC_MISO_L LL_GPIO_ResetOutputPin(GPIOA, LL_GPIO_PIN_11) void AD7682_GPIO_Init(void);void AD7682_ADC16_Init2(void);u16 AD7682(u8 adINx);void AD7682_GPIO_Init(void)//STM32L0----SPI1{LL_GPIO_InitTypeDef GPIO_InitStruct = {0};LL_IOP_GRP1_EnableClock(LL_IOP_GRP1_PERIPH_GPIOA);//GPIOA的时钟使能LL_IOP_GRP1_EnableClock(LL_IOP_GRP1_PERIPH_GPIOB);//GPIOB的时钟使能GPIO_InitStruct.Pin=LL_GPIO_PIN_11;GPIO_InitStruct.Mode=LL_GPIO_MODE_INPUT;GPIO_InitStruct.Speed=LL_GPIO_SPEED_FREQ_VERY_HIGH;GPIO_InitStruct.Pull=LL_GPIO_PULL_UP;//设置PA11为上拉LL_GPIO_Init(GPIOA, &GPIO_InitStruct);//PA11初始化---MISOGPIO_InitStruct.Pin=LL_GPIO_PIN_12;GPIO_InitStruct.Mode=LL_GPIO_MODE_OUTPUT;GPIO_InitStruct.Speed=LL_GPIO_SPEED_FREQ_VERY_HIGH;GPIO_InitStruct.OutputType=LL_GPIO_OUTPUT_PUSHPULL;GPIO_InitStruct.Pull=LL_GPIO_PULL_UP;//设置PA12为上拉LL_GPIO_Init(GPIOA, &GPIO_InitStruct);//PA12初始化---MOSIADC_MOSI_L;//LL_GPIO_ResetOutputPin(GPIOA, PDADC_MOSI_Pin) GPIO_InitStruct.Pin=LL_GPIO_PIN_15;GPIO_InitStruct.Mode=LL_GPIO_MODE_OUTPUT;GPIO_InitStruct.Speed=LL_GPIO_SPEED_FREQ_HIGH;GPIO_InitStruct.OutputType=LL_GPIO_OUTPUT_PUSHPULL;GPIO_InitStruct.Pull=LL_GPIO_PULL_UP;//设置PA15为上拉LL_GPIO_Init(GPIOA, &GPIO_InitStruct);//PA15初始化---CNV---CSADC_CS_L;GPIO_InitStruct.Pin=LL_GPIO_PIN_3;GPIO_InitStruct.Mode=LL_GPIO_MODE_OUTPUT;GPIO_InitStruct.Speed=LL_GPIO_SPEED_FREQ_VERY_HIGH;GPIO_InitStruct.OutputType=LL_GPIO_OUTPUT_PUSHPULL;GPIO_InitStruct.Pull=LL_GPIO_PULL_UP;//设置PB3为上拉LL_GPIO_Init(GPIOB, &GPIO_InitStruct);//PB3初始化---SCKADC_SCK_L;//LL_GPIO_ResetOutputPin(GPIOB, PDADC_SCK_Pin)}void AD7682_ADC16_Init2(void){AD7682_GPIO_Init();AD7682(adIN0);//EOC 测试通道:adIN0delay_ms(100);AD7682(adIN0);//EOC 测试通道:adIN0}u16 AD7682(u8 adINx){u16 CFG_COM=0;u16 data=0;CFG_COM = (CFG<<13)|(INCC<<10)|(adINx<<7)|(BW<<6)|(REF<<3)|(SEQ<<1)|RB;CFG_COM <<=2; ADC_SCK_L;ADC_CS_L;delay_us(6);ADC_CS_H;delay_us(6);ADC_CS_L;delay_us(1);for(u8 i=0; i<16; i++){if(CFG_COM&0x8000) ADC_MOSI_H;else ADC_MOSI_L;CFG_COM<<=1;ADC_SCK_H; data<<=1;if(LL_GPIO_IsInputPinSet(GPIOA, LL_GPIO_PIN_11)==1) data|=1;//读取MISO脚的寄存器值ADC_SCK_L;}delay_us(1);//ADC_SCK_L;ADC_CS_H;delay_us(20);return data;}

如果觉得《基于stm32L0系列的AD7682驱动程序》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。