STM32驱动AD7920
#ifndef __AD7920_H #define __AD7920_H #include "sys.h" //使用4线串行接口时使用 #define AD7920_SCLK PAout(6) #define AD7920_SDIN PCin(3) #define AD7920_CS PAout(4) //OLED控制用函数 u16 AD7920_RD_Halfword(void); void AD7920_Init(void); #endif void AD7920_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOC, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 ; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉 GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉 GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;//上拉 GPIO_Init(GPIOC, &GPIO_InitStructure);//初始化 AD7920_CS = 1; AD7920_SCLK = 1; } u16 AD7920_RD_Halfword() { u16 dat = 0 ; u16 i; AD7920_CS = 1; AD7920_SCLK = 1; delay_us(10); AD7920_CS = 0; delay_us(10); for(i=0;i<15;i++) { dat = dat <<1; AD7920_SCLK = 0; delay_us(20); AD7920_SCLK = 1; dat = dat + AD7920_SDIN; delay_us(20); } AD7920_CS = 1; return dat; }