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.

[参考译文] ADS1158:某些单元中的初始化随机失败

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1010946/ads1158-initialization-is-failing-randomly-in-some-units

器件型号:ADS1158
主题中讨论的其他器件:TM4C1292NCPDT

您好!

我们通过 SPI 将 TM4C1292NCPDT 与 AD1158相连。

我将按如下方式初始化 ADC:

//在这里、我们将开始根据数据表中的配置指南部分来配置芯片
//最多步骤5。 在调用驱动程序启动之前、我们不会实际启动转换器。

// 1. 复位 SPI 接口
chipSelectPin.SetHigh();

// 2. 停止转换器
startPin.SetLow();

// 3. 重置转换器
resetPin.SetLow();
TclkDelay (3);//脉冲复位线至少保持2个 fclk 周期
resetPin.SetHigh();

// 4. 配置寄存器...

//启用芯片选择
chipSelectPin.SetLow();
TclkDelay (4);//等待芯片选择建立时间、至少2.5 fclk 周期

RegisterWrite (ADS1158_ADR_CONFIG0、CONFIG0);
RegisterWrite (ADS1158_ADR_CONFIG1、CONFIG.CONFIG1);
RegisterWrite (ADS1158_ADR_MUXSG0、CONFIG.MUXSG0);
RegisterWrite (ADS1158_ADR_MUXSG1、config.MUXSG1);
//将浮动输入引脚更改为低输出
RegisterWrite (ADS1158_ADR_GPIOC、0x00);
RegisterWrite (ADS1158_ADR_GPIOD、0x00);

// 5. 验证寄存器数据...
D_ASSERT (RegisterRead (ADS1158_ADR_CONFIG0)= CONFIG0);
D_ASSERT (RegisterRead (ADS1158_ADR_CONFIG1)= CONFIG1);
D_ASSERT (RegisterRead (ADS1158_ADR_MUXSG0)= CONFIG.MUXSG0);
D_ASSERT (RegisterRead (ADS1158_ADR_MUXSG1)= CONFIG.MUXSG1);
D_ASSERT (RegisterRead (ADS1158_ADR_GPIOC)= 0x00);
D_ASSERT (RegisterRead (ADS1158_ADR_GPIOD)= 0x00);

初始化失败、并且在某些电路板中随机抛出断言(这不会持续发生)。

我尝试添加1秒延迟、认为进入 ADC 的 Vref 需要一些时间才能稳定。

在固件方面、我还可以做什么来微调代码(添加重试次数)?

请提供任何建议。

谢谢、此致、

Vamsi

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

    您好、Vamsi、

    您是否已使用逻辑分析仪确认发送到 ADC 的数据符合预期、并且时序正确?

    您是否已确认 ADC 的数据输出相对于输入命令正确?

    请提供此信息以及您系统的原理图、以便我们帮助进一步诊断。

    布莱恩