ADS1118的初始化问题
您好,我采用的是ADS1118采集外部传感器的数据给MCU,MCU是STM32,请给我一个ADS1118这个IC的初始化代码,谢谢
你可以下载ADS1118EVM Source Code
不过这个不是STM32的,你看着参考一下吧,按照数据手册上的时序要求的寄存器描述,这个芯片不复杂的
您好,您刚我把那个程序贴出来我看一下 可以把 ,我的电脑上完全打不开,电脑限制装软件,谢谢
好的
6746.sbac117.zip
这个好像不是用C写的,你参考下边这个吧
2438.ADS1118_Grace.zip
您好,那是用什么软件打开的,可以把那个软件发我嘛 谢谢
那个是用labview写的吧,我这里没有这个软件的,你可以百度一下
您好,我在网上找了一个程序修改了一下,用printf函数打印到串口上,数据一直是0,不知道什么原因,麻烦看一下,谢谢
void ADS1118_ADS_Config(unsigned int temp_config_value)
{
unsigned int Config_Value;
Config_Value = temp_config_value;
CS_L; // Set CS low
delay_us(1600); // Wait for slave to initialize
ADS1118_WriteSPI(Config_Value,1);
delay_us(1600); // Wait for slave to initialize
CS_H; // Set CS high
}
/*ת»»(дÈëconfig¼Ä´æÆ÷)*/
void ADS1118_WriteSPI(uint config,unsigned char mode)
{
uint temp;
uchar bit_ctr;
CS_L;
// MOSI_L;//DINÀµÍ,µ½clkΪ¸ß(µÍ)ʱÊäÈë
if(mode==1)temp = config | 0x8000;//mode==1,¶ÁÊý¾Ý²¢¿ªÊ¼Ï´Îת»»(OSλÖøß)
// __delay_cycles(20);//µÈ´ýOSÖøߺóÊý¾ÝµÄת»»(860sps)
// temp &=0x7FFF;//OSÖÃ0ת»»Íê³É
for(bit_ctr=0;bit_ctr<16;bit_ctr++) // 16λÅäÖÃÈëconfig,DINºó¿ªÊ¼×ª»»
{
SCLK_L; // ..then set SCK low again
delay_us(50);
if(temp&0x8000)
MOSI_H;
else
MOSI_L;
SCLK_H; // Set SCK high..
delay_us(50);
temp = (temp << 1);
// if(MISO) temp++;
}
SCLK_L;
delay_us(200);
CS_H;
delay_us(200);
}
/*½«Êý¾Ý¶Á³ö£¨DOUT)*/
uint ADS1118_ADS_Read(void)
{
unsigned int Data=0;
int i;
int a[16];
uint Config_Value;
ADS1118_WriteSPI(0x75EA,1);
CS_H;//????
delay_us(200);//ÑÓʱµÈ´ý
CS_L;
delay_us(1600);
SCLK_H;
if(!MISO)
{//Èç¹ûDRDYΪµÍ,ת»»Íê³É,Ôò¿ªÊ¼¶ÁÈ¡
for(i=0;i<16;i++)
{
SCLK_L;
delay_us(50);//clk¸ßÑÓʱ
if(MISO) a[i]=1;
else a[i]=0;
SCLK_H;
delay_us(50);//clkµÍÑÓʱ
Data=Data*2+a[i];
}
}
delay_us(1600);
CS_H;
return Data;
}
主函数main中是这样的
u8 value;
u8 Volt_Value;
delay_init(72); //ÑÓʱ³õʼ»¯
NVIC_Configuration();
uart_init(9600);
SPIx_Init();
SPIx_SetSpeed(8);
ADS1118_ADS_Config(0x85eb);
while(1)
{
delay_ms(800);
value = ADS1118_ADS_Read(); //0.512V
printf("value = %d\n\r",value);
Volt_Value = value*0.512/32768;
printf("Volt_Value %f\n\r\n\r",Volt_Value);
}