先生,你好。
SCLK 高电平到 SCLK 低电平之间的确切延迟是多少、以在不丢失任何位的情况下获取所有24位 ADC 数据
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.
您好、Balaganesh R、
欢迎来到 E2E 论坛! 我不确定您需要什么信息、但您是否查看了 ADS1232数据表以及第8.3.11和8.3.12节中的信息? 在第8.3.11节中、建议 SCLK 信号的上升时间和下降时间小于50ns。 还有一个时序图图、图8-9显示 SCLK 的高电平和低电平时间必须至少为100ns。 在50%占空比(等于高电平和低电平时间)下、最大 SCLK 频率为5MHz (1/200ns)。
所有24位数据都必须在转换完成后、但在下一次转换完成之前从 ADC 中读取、否则在读取结果时可能会发生数据损坏。
我希望这能回答你的问题。 如果不是、请具体提供您需要了解的内容的更多详细信息。
此致、
Bob B
谢谢主席先生;
主席先生、正如你告诉我的那样、我已经尝试 SCLK 高到低2mSec 的延迟、也尝试低到高的延迟。 但我在相同的模拟电压下获得了各种 ADC 结果。 我无法获得稳定的结果。
长 ADS1232_read (bool 校准)
{
long int 值= 0;
int i=0;
unsigned int waitingtime = 0;
delay_ms (801);//需要801ms 延迟
while ((Porta.in 和(PIN5_BM))); //等待数据就绪
//读取24位,但第24位是符号位
for (i=0;i < 24;i++)
{
PORTA.TERINITEM= PIN6_BM;//_SCLK、高电平
delay_ms (2);
if (((Porta.in 和(PIN5_BM))))
{
值=(值<< 1)+ 1;
}
if (!(Porta.in 和(PIN5_BM))))
{
值=(值<< 1)+ 0;
}
PORTA.OUTCLR = PIN6_BM;//_SCLK、低电平
delay_ms (2);
}
if (校准)
{
for (i=1;i >=0;i---) //用于校准的2个额外位
{
PORTA.TERINITEM= PIN6_BM;//_SCLK、高电平
delay_ms (2);
PORTA.OUTCLR = PIN6_BM;//_SCLK、低电平
delay_ms (2);
}
}
/*位23是符号位。 将其移动8以使其到达
*右侧位置(31)、除以256以恢复正确的值。
*
值=(值<< 8)/256;
if (!校准)
{
PORTA.TERINITEM= PIN6_BM;//_SCLK、高电平
delay_ms (2);
PORTA.OUTCLR = PIN6_BM;//_SCLK、低电平
delay_ms (2);
}
返回值;
}
您好、Balaganesh R、
它从代码中显示、您正在使用位 bang 类型解决方案来检索数据。 我在您的代码中看到了一些可能导致问题的东西。
此致、
Bob B