微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > 关于TI杯推荐芯片ADS1118驱动程序的疑问

关于TI杯推荐芯片ADS1118驱动程序的疑问

时间:10-02 整理:3721RD 点击:

ADS1118是上电之后,先选中芯片,将CS拉低,直接送配置字,然后拉高CS。再就是直接读数据?

SPI_CS_Low(); //拉低CS
SPI_Write_byte(0x85);
SPI_Write_byte(0x83);
SPI_CS_High(); //拉高CS
SPI_CS_Low();
Data_H=SPI_Rec_byte(); //读高字节
Data_L=SPI_Rec_byte();// 读低字节
SPI_CS_High();
Data|=Data_H;
Data=Data<<8;
Data|=Data_L;可以不?

还有,ADS1118默认上电状态,是低功耗模式,那么怎么启动转换呢?还有,是上电后立马就可以对ADS1118写配置字吗,而且只要写入就一定是写到控制寄存器吗?在读数据前有没有什么标志?

第一个问题:

“ADS1118是上电之后,先选中芯片,将CS拉低,直接送配置字,然后拉高CS。再就是直接读数据?”

上电之后,先选中芯片,将CS拉低,直接配置Config Register,然后拉高CS。能否读取数据根据你的mode配置。若是配置为single-shot mode,且SS位在配置时已设置为1,则转换已开始,拉低CS,通过读取DRDY引脚判断转换是否完成。转换完成后可以读取数据

若配置为continuous conversion mode,则可以直接通过读取DRDY引脚判断转换是否完成。转换完成后可以读取数据

第二个问题:

“SPI_CS_Low(); //拉低CS
SPI_Write_byte(0x85);
SPI_Write_byte(0x83);
SPI_CS_High(); //拉高CS
SPI_CS_Low();
Data_H=SPI_Rec_byte(); //读高字节
Data_L=SPI_Rec_byte();// 读低字节
SPI_CS_High();
Data|=Data_H;
Data=Data<<8;
Data|=Data_L;可以不?”

不行。首先,SPI_CS_High(); //拉高CS   SPI_CS_Low();中间最好加一个短的延时;

然后,Data_H=SPI_Rec_byte(); //读高字节
Data_L=SPI_Rec_byte();// 读低字节

在这之前需要判断DRDY是否有效。

第三个问题:“ADS1118默认上电状态,是低功耗模式,那么怎么启动转换呢?”

设置Config Register的SS bit为1后自动开启一次单次转换。低功耗的意思在这里就是单次转换。

第四个问题:“是上电后立马就可以对ADS1118写配置字吗,而且只要写入就一定是写到控制寄存器吗?在读数据前有没有什么标志?”

上电后就可以对其写配置字。写入的是配置寄存器Config Register,应该就是你说的控制寄存器。数据转换完成会有标志,即DOUT/DRDY引脚

还一些疑问,不好意思。

1问一下,到底如何判断数据可以读,手册上说的是,可以判断DOUT引脚有一个低电平就可以读取数据,请问这样吗?

2  In continuous conversion mode, DOUT/DRDY transitions high again 8 µs before the next data ready signal

(when DOUT/DRDY asserts low) if no data are retrieved from the device.芯片中这句话什么意思?

在连续转换模式下,写完配置字之后就可以判断DOUT引脚,如果该引脚输出低电平,则可以读数据。而此处说的,DOUT引脚再高8us,是说这一次读数据应该结束,马上会有第二次数据准备就绪,当DOUT在8us之后再变低电平就说明可以再读取第二次数据了?

  可以这样理解吗?

1 在连续模式时,是不是,在写完配置字后,拉高CS。延时,然后再拉低CS,判断DOUT是否为低电平,如果是,就可以开始读数据,读完之后,就又返回判断DOUT,如此循环,这样可以吗?

2在单次转换模式,转换一次后是不是就不转换了。单次转换时,送入配置字(OS=1,还有设置成单次转换模式),拉高CS。那么短延时之后,拉低CS,是不是就可以判断DOUT,再就可以读数据了,读完拉高CS就可以了吧。

3所有的转换是在配置字送完之后开始转换的吧?是不是配置字只需要送一次?

芯片手册有完整的介绍吧,楼主可以多看看时许流程图设计,这样设计更加的没有错误,上电之后,先选中芯片,将CS拉低,直接配置Config Register,然后拉高CS。能否读取数据根据你的mode配置。若是配置为single-shot mode,且SS位在配置时已设置为1,则转换已开始,拉低CS,通过读取DRDY引脚判断转换是否完成。转换完成后可以读取数据。希望能够解决你的问题。。

1.是的。

2.连续转换模式下,转换完成一组数据后,在下一组数据转换完成前DRDY拉高8US,当DOUT在8us之后再变低电平就说明可以再读取第二次数据。

1.是的。

2.是的。

3.单次转换需要每次转换前发送一次配置信息。

 

 

另外,我这里有使用430SPI外设模块控制ADS1118的程序,如果需要可以留下邮箱

多谢,2265251083@qq.com

WenJie Chen1

1 在连续模式时,是不是,在写完配置字后,拉高CS。延时,然后再拉低CS,判断DOUT是否为低电平,如果是,就可以开始读数据,读完之后,就又返回判断DOUT,如此循环,这样可以吗?

2在单次转换模式,转换一次后是不是就不转换了。单次转换时,送入配置字(OS=1,还有设置成单次转换模式),拉高CS。那么短延时之后,拉低CS,是不是就可以判断DOUT,再就可以读数据了,读完拉高CS就可以了吧。

3所有的转换是在配置字送完之后开始转换的吧?是不是配置字只需要送一次?

1:2:正确的,都没有问题的。

3:如果配置不需要改变的话,仅需配置一次Regisiter就可以的。

76602430@qq.com.帮忙传一个DEMO看看谢谢!正烦恼这个时序

已发送,请查收

也给我发一份吧。谢谢了292978891@qq.com

已被ADS1118整疯,望发一份,谢谢了!

382909235@qq.com 麻烦也给我发一份MSP430外设控制控制ADS1118的程序叭~~不胜感激Orz

麻烦给我也发一个,谢谢!754607081@qq.com

835735997@qq。com同求一份

一直调不出全双工的模拟SPI通信,望发一份, 邮箱feige@whut.edu.cn,非常感谢!

在这里了,你们可以自己来下载额6428.ADS1118_Grace.7z

有msp430f149的吗

int hex2asc(void *n, int digs, int mode, char *s);这个函数有什么用啊

如果可以的话,请你也给我发一份430SPI外设模块控制ADS1118的程序,最近在用ADS1118调试一些程序,但是感觉datasheet上面有的地方介绍的比较模糊,比如他内部的参考电压是多少呢?里面的振荡器的作用等?

给我发一份吧1181096912@qq.com ,谢谢

332603185@qq.com    发我一份吧 谢谢。

刘先生能麻烦给我一份ADS1118的程序吗,最近两天一直在弄,但是没有弄出来,sunzhengyuan@qq.com

我也想要一份,能不能发我一份?谢谢121629600@163.com

各位,请看一下我已经在上面的跟帖中以附件形式发送上去了,请自行下载,谢谢!

请也给我发一份吧  谢谢你   有MSP430 的更好416908607@qq.com

请问为什么我在采集负电压的时候采集不出来呢  一直是0

请问能采集负电压吗 ADS1118

你好,请问也能发一个给我吗?我最近也在苦恼读不出数据呢,谢谢了!!qinchaom4a1@163.com

亲,我也需要一份430SPI外设模块控制ADS1118的程序,急求,麻烦大虾给我也发一份行不

邮箱1032105947@qq.com

万分感谢

前辈,你好!我用1118芯片读数据时出了问题,就是我不管改config寄存器值还是AIN输入,他的输出都为定值,经排查觉得读时序除了偏差,我用的单端输入(0x758A)AIN输入为一个电平(可由电位器更改输入)急,望前辈百忙中能抽空给我解答一下~拜托~万谢

/*配置寄存器,将指令写入配置寄存器,采样转换完成*/
void ADS1118_ADS_Config(unsigned int temp_config_value)
{
unsigned int Config_Value;
Config_Value = temp_config_value;
CS_L; // Set CS low
__delay_cycles(1600); // Wait for slave to initialize

ADS1118_WriteSPI(Config_Value,1);// 0模式为连续转换,转换的数据放入转换寄存器

__delay_cycles(1600); // Wait for slave to initialize
CS_H; // Set CS high
}

/*转换(写入config寄存器)*/
void ADS1118_WriteSPI(uint config,unsigned char mode)
{
CS_L;
uint temp;
uchar bit_ctr;
// 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_cycles(50);
if(temp&0x8000)
MOSI_H;
else
MOSI_L;
SCLK_H; // Set SCK high..
__delay_cycles(50);
temp = (temp << 1);
// if(MISO) temp++;
}
// SCLK_L;
// __delay_cycles(200);
// CS_H;
// __delay_cycles(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_cycles(200);//延时等待
// CS_L;
// __delay_cycles(1600);
SCLK_H;

if(!MISO){//如果DRDY为低,转换完成,则开始读取
for(i=0;i<16;i++)
{
SCLK_L;
__delay_cycles(50);//clk高延时
if(MISO) a[i]=1;
else a[i]=0;

SCLK_H;
__delay_cycles(50);//clk低延时
Data=Data*2+a[i];
}
}
__delay_cycles(1600);
__delay_cycles(1);//等待clk低的延时
CS_H;
return Data;
}

采集双极性的模数转换器很贵的。。。

请问你的ads1118能用f149驱动了吗?

可以传一下基于msp430f149的ads1118的驱动程序吗?谢谢!540362098@qq.com.

113591900@qq.com  请发我一份学习一下,谢谢

576613133@qq.com 谢谢

您好:

       请问还有控制ADS131E04芯片进行采样的例程?最好是基于SPI引脚的,谢谢

您好:

      请问还有控制ADS131E04芯片进行采样的例程,最好是基于SPI接口的

liuliu408@163.com 请发我一份学习一下,谢谢

772336094@qq.com     这是我的邮箱     请给我发一个程序   谢谢

772336094@qq.com      求大神 发程序   好人一生平安

772336094@qq.com

我也遇到这个问题老是显示固定数据,请问你解决没有?,求指点

你好,我现在需要一份stm32的ads118 资料,请问你有吗?谢谢!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top