+ADS1115在msp430下的使用
ADS1115是高精度的16位AD,号称电赛必备的芯片,可以通过I2C总线与MCU相连,ADS1115的引脚图见附件。

ADS1115和MCU连接图如下

程序如下
void I2CforADS1115_NOACK(void) { SDA_OUT; SCL_OUT; SDA_H; _NOP(); _NOP(); SCL_H; SCL_L; _NOP(); _NOP(); SDA_L; } /**************起始信号***************/ void I2CforADS1115_Start() { SDA_L; SCL_H; SDA_H; SDA_L; SCL_L; } /*************终止信号*************/ void I2CforADS1115_Stop() { SDA_L; SCL_H; SDA_H; } /*************向I2C总线发送一个字节************/ void I2CforADS1115_WriteByte(uchar wData) { uchar i; SDA_OUT; for(i=0;i<8;i++) { if((wData<<i) & 0x80) SDA_H; else SDA_L; SCL_H; SCL_L; } SDA_H; SCL_H; SCL_L; } /**************读取一个字节**************/ uchar I2CforADS1115_ReadByte() { uchar temp=0,i; SDA_IN; for(i=0;i<8;i++) { temp=temp<<1; SCL_L; SCL_H; if(SDA_VAL) { temp|=0x01; } } SCL_L; SDA_L; SCL_H; SCL_L; SDA_H; return temp; }
void Configure_ADS1115()
{
uchar i=0;
Init_Data[0] =0x90; // 地址 + 写命令(写地址0x90,读地址0X91)
Init_Data[1] =0x01; // 指向配置寄存器
Init_Data[2] =0xc0; // 配置字高字节,采用-4.096到+4.096,选择AINp0输入,AINPn为GND
Init_Data[3] =0x83; // 配置字低字节,选择转换速率即通信速率
SCL_H;
I2CforADS1115_Start();
for(i=0;i<4;i++)
{
I2CforADS1115_WriteByte(Init_Data[i]);
_NOP();
}
I2CforADS1115_Stop();
}
/************指向转换结果寄存器***************/
void PointRegister_ADS115(void)
{
uchar i=0;
Init_Data[0] =0x90; // 地址 + 写命令
Init_Data[1] =0x00; // 指向转换结果寄存器
SDA_OUT;
SCL_H;
I2CforADS1115_Start();
for(i=0;i<2;i++)
{
I2CforADS1115_WriteByte(Init_Data[i]);
}
I2CforADS1115_Stop();
}
/**************读取转换结果***************/
uint32 ReadData_ADS1115(void)
{
uchar ResultL,ResultH;
uint32 Result;
SCL_H;
I2CforADS1115_Start();
I2CforADS1115_WriteByte(0x91);
ResultH=I2CforADS1115_ReadByte();
I2CforADS1115_NOACK();//非应答一定要,表示我还要数据
ResultL=I2CforADS1115_ReadByte();
I2CforADS1115_NOACK();
I2CforADS1115_Stop();
Result=ResultH*256+ResultL;
return Result;
}
/***********模拟量采集转化为数字量***********/
uint32 GetData_ADS1115()
{
uint32 ResultValue;
Configure_ADS1115();
PointRegister_ADS115();
ResultValue=ReadData_ADS1115(); //结果存储AD转化值
return ResultValue;
}
您好,请问ADS1115以及其他型号的AD芯片中,SCL和CLK都必须有电平驱动吗,如图中的VDD?另外,您用过ADS1245吗,它的CLK推荐频率为2.4576MHz,请问如何获得?
SCL是I2C的时钟,CLK是系统时钟,430就能实现2.4576MHz
您好!我现在遇到了一个问题,单个通道采集没有问题,但是两个通道交替采集时,出来的数据是一样的,请问一下怎么解决,谢谢!
