标题:
单片机+ADS8685驱动程序
[打印本页]
作者:
ywb..
时间:
2019-12-8 19:48
标题:
单片机+ADS8685驱动程序
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
作者:
缘分天空2005
时间:
2020-4-21 17:18
非常好,谢谢分享
作者:
duhemayi
时间:
2021-7-20 13:54
正在研究,希望有用
作者:
WP_51
时间:
2021-7-25 10:38
亲测可用,只是模拟的spi不能完全利用芯片的采样速率
作者:
HQing1
时间:
2022-8-18 15:19
亲测可用,好铁
作者:
hhhwowudi
时间:
2024-6-21 10:29
请问有这个回读的波形么
作者:
735393435@qq
时间:
2025-5-9 19:33
不错,刚好要用这个
作者:
735393435@qq
时间:
2025-5-9 19:34
下载来看看如何
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1