This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] ADS131E08:读取多通道时出现错误数据。

Guru**** 1818760 points
Other Parts Discussed in Thread: ADS131E08, ADS131A04, ADS131E04
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/816025/ads131e08-false-data-when-reading-multi-channel

器件型号:ADS131E08
主题中讨论的其他器件: ADS131A04ADS131E04

你好

我使用的是使用 Arduino 的 ADS131e08 IC。 每个通道的 ADC 工作正常、但在使用多个通道时显示垃圾数据。 我在此附上读取数据代码。

void read_data()

const uint8_t nof 字节= 3*num_ch+3;
uint8_t data[nof 字节];
long resp.[nof 字节];
memset (data、0x00、sizeof (data));
while (digitalRead (DRDY_PIN)=高电平);
if (digitalRead (DRDY_PIN)=低电平)

digitalWrite (CS_PIN、低电平);
delayMicroseconds (1);
对于(int i = 0;i < nof 字节;i++)

RESP[i]= SPI.transfer (data[i]);

delayMicroseconds (1);
digitalWrite (CS_PIN、高电平);


对于(int ch = 1;ch <= num_ch;ch++)

long val = 0;
长值= 0;
Val=(((RESP[(3*(ch))+0]&0xff)<< 16)|((RESP[(3*(ch)+1]&0xff)<< 8)|(RESP[(3*(ch)+2]&0xff));
if (((val & 0xffffffff)&(0x800000)))

值= val|0xc000000;

其他

值= val;

float volt =(float (value)*2.4/8388607);
如果(ch ==1)
{Serial.print (volt);Serial.print ("\t");}
如果(ch == 2)
{Serial.print (volt);Serial.print ("\t");}
如果(ch == 3)
{Serial.print (volt);Serial.print ("\t");}
如果(ch == 4)
{Serial.print (volt);Serial.print ("\t");}
如果(ch == 5)
{Serial.print (volt);Serial.print ("\t");}
如果(ch == 6)
{Serial.print (volt);Serial.print ("\t");}
如果(ch == 7)
{Serial.print (volt);Serial.print ("\t");}
如果(通道==8)
{ Serial.println (volt);}

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Manjeet、


    ADS131E08的数据格式应非常简单。 每个通道的数据在状态寄存器之后按顺序输出。 但是、可能需要检查几件事情。

    是否有任何数据正确? 您是否获得所有通道的完全随机值?

    另一个重要问题是如何读取数据。 您是否处于连续读取数据模式、并且仅在/DRDY 变为低电平后发送 SCLK? 如果您使用此模式、是否在下一个/DRDY 之前将来自所有通道的数据超时? 或者是否发送 SDATAC 命令以停止连续读取数据模式并使用 RDATA 读取数据。

    您可以使用逻辑分析仪或示波器直接从屏幕读取输出数据。 这样、您就可以看到数据正确输出、并且不会从代码中被误解。 我看不到您的代码有什么问题、但我通常不是程序员、因此我不是这方面的专家。 但是、我会打印 ADC 的输出代码、而不是转换后的值。 这样就消除了代码中的一个其他潜在问题。 执行此操作时、将输出结果以及您的输入内容布置回原来的位置。 我们可以直接比较输入电压和输出代码。

    无论如何、查看我的帖子、回答我的问题、检查逻辑分析仪或示波器并将结果发布回。


    吴约瑟

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Manjeet、

    有一段时间没有听到您的声音、我想我会检查一下您是否已经解决了您的数据读取问题。 我确实建议了一些调试通信的方法。

    我现在将关闭此帖子、但如果您仍然没有解决您的问题、请发帖、我们可以继续处理此帖子。

    吴约瑟

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    吴约瑟

    很抱歉耽误你的回答。 我已经在 ADS131e04上浪费了很多时间、因此我决定改用 ADS131a04、它对我来说很好。 我同时获取所有4通道数据。  

    谢谢 你、Joseph Wu。