AD7689的驱动程序
和之前AD5648的驱动程序想法类似,直接放代码了,之后想起啥再补啥吧
#ifndef _Driver_AD7689_H
#define _Driver_AD7689_H
enum AD7689_CH{
IN0=(0x3C41<<2),IN1=(0x3CC1<<2),IN2=(0x3D41<<2),IN3=(0x3DC1<<2),IN4=(0x3E41<<2),IN5=(0x3EC1<<2),IN6=(0x3F41<<2),IN7=(0x3FC1<<2)};
typedef struct AD7689_TAGE
{
Port SCK;
Port CNV;
Port DIN;
Port SDO;
unsigned short (*SPI_Service) (struct AD7689_TAGE *,enum AD7689_CH);
float RefVoltage;
} AD7689_Config,* p_AD7689_Config;
/*******************************************
接口
********************************************/
extern u8 AD7689_Chip_Count;
extern AD7689_Config AD7689_Config_chip[];
void AD7689_GPIO_Init(void);
extern u16 AD7689_SPI(p_AD7689_Config p,enum AD7689_CH DataToAD7689);
extern u16 AD7689_Average_Value(p_AD7689_Config p,enum AD7689_CH DataToAD7689);
extern u32 AD7689_MDP_Read(p_AD7689_Config p,enum AD7689_CH channel);
float AD7689_fvalue(p_AD7689_Config p,enum AD7689_CH channel);
#include "include_headfiles.h"
#define AD7689_SCK_H GPIO_SetBits(p->SCK.IO_Group,p->SCK.IO_Pin)
#define AD7689_SCK_L GPIO_ResetBits(p->SCK.IO_Group,p->SCK.IO_Pin)
#define AD7689_CNV_H GPIO_SetBits(p->CNV.IO_Group,p->CNV.IO_Pin)
#define AD7689_CNV_L GPIO_ResetBits(p->CNV.IO_Group,p->CNV.IO_Pin)
#define AD7689_DIN_H GPIO_SetBits(p->DIN.IO_Group,p->DIN.IO_Pin)
#define AD7689_DIN_L GPIO_ResetBits(p->DIN.IO_Group,p->DIN.IO_Pin)
#define AD7689_SDO GPIO_ReadInputDataBit(p->SDO.IO_Group,p->SDO.IO_Pin)
#define AD7689_SPI_DELAY 6
static void AD7689_delay(u8 time);
stat