您好,欢迎来到61ic! | [登录] [注册] 忘记密码 | 设为首页 帮助
 . 网站首页 . 业界新闻 . 设计中心 . 移动技术 . TI专栏 . ADI专栏 . FPGA专栏 . 代码工厂 . 官方商城 . 
 . 活动专区 . 新品快递 . 解决方案 . 前沿科技 . TI资源 . ADI资源 . FPGA资源 . 下载中心 . 产品展示 . 
加入收藏
付款方式
联系我们
您现在的位置: 61IC电子在线 >> TI专栏 >> TI Stellaris ARM >> LM3S Cortex-M3 >> 正文
  基于LM3S2965的ADS1115的驱动程序           ★★★ 【字体:
基于LM3S2965的ADS1115的驱动程序
作者:Free    文章来源:Free    点击数:    更新时间:2012-11-6    

注意的是,ADS1115可以选择差分输入方式。通过配置寄存器设置。datasheet的19页有详细说明。地址端ADDR接地,所以器件地址为0x90.好了附代码;
基准的设置是通过配置寄存器的PCA位,datasheet的13页表3有详细说明。如果需要改变采样通道,是需要对配置寄存器的12到14位重新设置的。
*#include "ads1115.h"
//ADS1115 GPIO 初始化
void ADSIOInit()
{
SysCtlPeripheralEnable(ADSCTLPERIPH);
GPIOPinTypeGPIOOutput(ADS_PORT_BASE,ADS_SCL_PIN);
GPIOPinTypeGPIOOutput(ADS_PORT_BASE,ADS_SDA_PIN);
ADS_SCL_H;
ADS_SDA_H;
}
//发送开始信号
void ADSSendStart()
{
ADS_SDA_H;
ADS_SCL_H;
ADS_SDA_L;
ADS_SCL_L;
}
//发送停止信号
void ADSSendStop()
{
ADS_SDA_L;
ADS_SCL_H;
ADS_SDA_H;
ADS_SCL_L;

}
//发送一个字节
void ADSSendByte(unsigned char cByte)
{
unsigned char i=0;

for(i=0;i<8;i++)
{
if(cByte&0x80)
ADS_SDA_H;
else
ADS_SDA_L;
cByte<<=1;
ADS_SCL_H;
ADS_SCL_L;
}
ADS_SDA_IN;
ADS_SCL_H;
ADS_SCL_L;
ADS_SDA_OUT;

}
//得到一个字节
unsigned char ADSGetByte()
{
unsigned char i=0;
unsigned char GetDAT=0;

ADS_SDA_IN;
for(i=0;i<8;i++)
{
GetDAT<<=1;
ADS_SCL_H;
if(ADS_SDA_DAT)
GetDAT|=1;
ADS_SCL_L;
}
ADS_SCL_H;
ADS_SCL_L;
ADS_SDA_OUT;
return GetDAT;
}
//差分通道设置,采样速率设置
//cChanel: 0x12,通道0,0X22通道1 ref=4.096; (datasheet 19页有对配置寄存器位详细说明)
void Confige1115A(unsigned char cChanel)
{
unsigned char i=0;
unsigned char Initdata[4]={0};

Initdata[0] =0x90; // 地址 + 写命令
Initdata[1] =0x01; // 指向配置寄存器
Initdata[2] =cChanel; // 配置字高字节 ref=4.096v,差分通道1,3
// Initdata[2] =0x44; // 配置字高字节 ref=2.048v
Initdata[3] =0x83; // 配置字低字节
ADSSendStart();
for(i=0;i<4;i++)
{
ADSSendByte(Initdata[i]);
}
ADSSendStop();
}
//指向寄存器设置
void Pointregister(void)
{
unsigned char i=0;
unsigned char Initdata[4]={0};

Initdata[0] =0x90; // 地址 + 写命令
Initdata[1] =0x00; // 指向转换结果寄存器

ADS_SDA_OUT;
ADSSendStart();
for(i=0;i<2;i++)
{
ADSSendByte(Initdata[i]);
}
ADSSendStop();
}
//得到转换电压
float GetADVoltage(unsigned char cChanel)
{
unsigned short int Result=0;

Confige1115A(cChanel);
Pointregister();

ADSSendStart();
ADSSendByte(0x91); //地址+读
Result|=ADSGetByte()<<8;
Result|=ADSGetByte();
ADSSendStop();
return (float)((float)Result/32768.0)*4.096;
}

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    没有相关文章
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    站长:61IC 湘ICP备05002478号