ADS8685驅動,添加到工程即可使用,親測無誤!
單片機源程序如下:
- #include "ads8685.h"
- #include "delay.h"
- void Ads8685_RESET(void)
- {
- ADS8685_RST=0;
- delay_ms(30);
- ADS8685_RST=1;
- delay_ms(30);
- }
- void Ads8685_WriteData(u8 data)
- {
- u8 index=0;
- ADS8685_SCLK =0;
- delay_us(2);
- for(index=0;index<8;index++)
- {
- if(data&0x80)
- {
- ADS8685_SDI=1;
- }
- else
- {
- ADS8685_SDI=0;
- }
- ADS8685_SCLK =1;
- delay_us(2);
- ADS8685_SCLK =0;
- delay_us(2);
- data=data<<1;
- }
- ADS8685_SCLK =0;
- delay_us(2);
- }
- void Ads8685_WriteReg(u8 reg,u16 data)
- {
- u16 retry=0;
- ADS8685_CS=0;
- while(ADS8685_RVS)//此引腳為低電平才可以操作ADS8685
- {
- retry++;
- if(retry>=0xfffe)
- {
- break;
- }
- }
- Ads8685_WriteData(0xd0);//input command ,datesheet P43
- Ads8685_WriteData(reg);
- Ads8685_WriteData(data>>8);//寫高8位
- Ads8685_WriteData((u8)(data&0xff));//寫低8位
- ADS8685_CS=1;
- }
- void Ads8685_Init(void)
- {
-
- GPIO_InitTypeDef GPIO_InitStructure;
-
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能PB,PE端口時鐘
-
- GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
-
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9; //LED0-->PB.5 端口配置
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽輸出
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度為50MHz
- GPIO_Init(GPIOB, &GPIO_InitStructure); //根據設定參數初始化GPIOB.5
-
-
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5; //LED0-->PB.5 端口配置
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉輸入
- GPIO_Init(GPIOB, &GPIO_InitStructure);
-
- ADS8685_SCLK=0;
- ADS8685_RST=0;
- Ads8685_RESET();
- Ads8685_WriteReg(0x14,0x000b);//使用內部參考電壓源并且設置輸入電壓范圍為0~5.12V 1.5*Vref 內部參考電壓4.096V
- }
- u16 Ads8685_Readdata(void)
- {
- u16 retry=0;
- u8 index=0;
- u32 read_data=0;
- delay_us(10);
-
- ADS8685_CS=1;
- retry=0;
- while(!ADS8685_RVS)
- {
- retry++;
- if(retry>=0xfffe)
- {
- break;
- }
- }
-
- ADS8685_CS=0;
- retry=0;
- while(ADS8685_RVS)
- {
- retry++;
- if(retry>=0xfffe)
- {
- break;
- }
- }
-
- for(index=0;index<32;index++)
- {
- delay_us(2);
- ADS8685_SCLK=1;
- delay_us(2); //時間大于15ns即可
-
- read_data = read_data << 1;
- if(ADS8685_SDO_0) //串行通信 數據輸出0 讀SD0_0,如果有數據1,則加到read_data末尾
- {
- read_data=read_data+1;
- }
- ADS8685_SCLK=0;
- delay_us(1);
- }
- delay_us(2);
- ADS8685_CS=1;
-
- return (read_data>>16);
- }
復制代碼
所有資料51hei提供下載:
ads8685驅動.zip
(1.64 KB, 下載次數: 78)
2019-12-8 19:46 上傳
點擊文件名下載附件
ads8685驅動 下載積分: 黑幣 -5
|