91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 3KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2021-06-04
  • 語言: 其他
  • 標(biāo)簽: ADS8688??高速AD??stm32??

資源簡介

TI公司的高速AD芯片,ADS8688模擬到數(shù)據(jù)的解決方案。網(wǎng)上找不到驅(qū)動資料,我自己寫的驅(qū)動stm32驅(qū)動代碼,希望能給大家?guī)韼椭x謝!

資源截圖

代碼片段和文件信息

#include?“ADS8688.H“
#include?“spi.h“

//初始化ADS8688,并且檢驗讀入寄存器數(shù)據(jù)和寫入的是否一樣
//返回TURE則說明初始化正常,否則錯誤
bool?ADS8688_Init(void)
{
u8?i?=?0;
GPIO_InitTypeDef?GPIO_InitStructure;
??
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC?ENABLE?);

GPIO_InitStructure.GPIO_Pin?=?GPIO_Pin_4; //PA4->ADS8688CS
GPIO_InitStructure.GPIO_Mode?=?GPIO_Mode_AF_PP;??//復(fù)用推挽輸出
GPIO_InitStructure.GPIO_Speed?=?GPIO_Speed_50MHz;
GPIO_Init(GPIOA?&GPIO_InitStructure);
GPIO_SetBits(GPIOAGPIO_Pin_4);

GPIO_InitStructure.GPIO_Pin?=?GPIO_Pin_4; //PC4->ADS8688RST
GPIO_InitStructure.GPIO_Mode?=?GPIO_Mode_AF_PP;??//復(fù)用推挽輸出
GPIO_InitStructure.GPIO_Speed?=?GPIO_Speed_50MHz;
GPIO_Init(GPIOC?&GPIO_InitStructure);
GPIO_SetBits(GPIOCGPIO_Pin_4);

SPI1_Init(); //初始化SPI1
Enter_RESET_MODE();
ADS8688_Write_Program_Register(0X010XF0);
i?=?ADS8688_READ_Program_Register(0X01);
if?(i==0XF0)
return?TRUE;
else?return?FALSE;
}

void?ADS8688_Reset(void) //hardware?reset
{
u8?i=5;
ADS8688RST?=?0;
while?(i--);
ADS8688RST?=?1;
}

void?ADS8688_PWRDN(void) //hardware?power-down
{
u8?i=50;
ADS8688RST?=?0;
while?(i--);
}

void?ADS8688_PWRUP(void) //power-down
{
ADS8688RST?=?1;
}

void?ADS8688_WriteCommandReg(u16?command)//寫ADS8688命令寄存器
{
ADS8688CS?=?0;
SPI1_ReadWriteByte(command>>8?&?0XFF);
SPI1_ReadWriteByte(command?&?0XFF);
ADS8688CS?=?1;
}

void?Enter_RESET_MODE(void) //軟件復(fù)位模式,復(fù)位?program?registers
{
ADS8688_WriteCommandReg(RST);
}

//進入STDBY模式,且命令發(fā)送后CS立刻置高,不讀數(shù)據(jù)幀;
//退出此模式需執(zhí)行AUTO_RST或者MAN_CH_n命令,且需要等待至少20us以保證正常數(shù)據(jù)的AD轉(zhuǎn)換
void?Enter_STANDBY_MODE?(void)
{
ADS8688_WriteCommandReg(STDBY);
}

//進入PWR_DN模式,且命令發(fā)送后CS立刻置高,不讀數(shù)據(jù)幀;
//退出此模式需執(zhí)行AUTO_RST或者MAN_CH_n命令,且需要等待至少15ms以保證正常數(shù)據(jù)的AD轉(zhuǎn)換
void?Enter_POWERDOWN_MODE?(void) //此為軟件方式進入PWR_DN模式,與硬件方式區(qū)別是不改變?program?registers
{
ADS8688_WriteCommandReg(PWR_DN);
}

void?AUTO_RST_Mode(void) //進入自動掃描模式
{
ADS8688_WriteCommandReg(AUTO_RST);
}

//讀取掃描通道序列的AD轉(zhuǎn)換數(shù)據(jù)code到變量數(shù)組中
void?Get_AUTO_RST_Mode_Data(u16*?outputdata?u8?chnum)
{
u8?i=0datal=0datah=0;
u16?data=0;
for?(i=0;?i {
ADS8688CS?=?0;
SPI1_ReadWriteByte(0X00);
SPI1_ReadWriteByte(0X00);
datah?=?SPI1_ReadWriteByte(0XFF);
datal?=?SPI1_ReadWriteByte(0XFF);
ADS8688CS?=?1;

data?=?datah<<8?|?datal; //高位在前,低位在后
*(outputdata+i)?=?data;
}
}

void?MAN_Ch_n_Mode(u8?ch) //手動模式
{
ADS8688_WriteCommandReg(ch);
}

//讀取手動通道的AD轉(zhuǎn)換數(shù)據(jù)code
u16?Get_MAN_Ch_n_Mode_Data(void)
{
u8?datah=0datal=0;
ADS8688CS?=?0;
SPI1_ReadWriteByte(0X00);
SPI1_ReadWriteByte(0X00);
datah?=?SPI1_ReadWriteByte(0XFF);
datal?=?SPI1_ReadWriteByte(0XFF);
ADS8688CS?=?1;

return?(datah<<8?|?datal);
}

//Program?Register寫操作
void?ADS8688_Write_Program_Register(u8?Addru8?data)
{
ADS8688CS?=?0;
SPI1_ReadWriteByte(Addr<<1?|?WRITE);
SPI1_ReadWriteByte(data);
ADS8688CS?=?1;
}

//Program?Register讀操作
u8?ADS8688_READ_Program_Register(u8?Addr)
{
u8?data?=

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2016-02-02?15:59??ADS8688\
?????文件????????3757??2016-01-21?10:20??ADS8688\ADS8688.c
?????文件????????2529??2016-01-21?10:21??ADS8688\ADS8688.h

評論

共有 條評論