+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
您好!我现在遇到了一个问题,单个通道采集没有问题,但是两个通道交替采集时,出来的数据是一样的,请问一下怎么解决,谢谢!