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.

[参考译文] ADS7142:ADS7142

Guru**** 2535150 points
Other Parts Discussed in Thread: ADS7142

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/992674/ads7142-ads7142

器件型号:ADS7142

您好!

我正在使用 ADS7142、并将其置于手动模式、希望读取两个通道。 我的初始化代码如下:

int Init_ADS7142 (module_number mod)

//选择模块连接到的端口。

PCA9547_SelectPort (unsigned char) mod;

ADS7142_WriteReg (mod、REG_ABORT_SEQUENCE、1);
//ADS7142_WriteReg (mod、REG_OFFSET_CAL、1);

ADS7142_WriteReg (mod、REG_CH_INPUT_CFG、0x03);//双通道、单端
ADS7142_WriteReg (mod、REG_OPMODE_SEL、4);//具有自动定序的手动模式
ADS7142_WriteReg (mod、REG_AUTO_SEQUENCE、3);//读取两个寄存器

退货(1);

我几乎从您的源代码中获得了代码。  我能够在示波器上查看数据、并验证我是否向芯片发送了正确的数据、即 I2C 地址(ADDR 是浮动的、因此地址为"0011000x"、器件 ACK 是正确的)、 然后是"单个寄存器写入"命令(0x08)、再是寄存器值、再是数据。  我已经检查并验证了所有数据是否正确。

为了读取数据、我发送 I2C 地址并设置读取位、然后根据数据表中的以下状态计时数据输出:

我首先设置寄存器0x1E 中的开始位、然后读取数据。

当我读取数据时、它如下所示:

第一个八位位组是 I2C 地址、读取位被置位、而 ADS7142 ACK。  然后、我将接下来的8位时钟输出、这8位应该是通道1的最高有效字节、但器件不会返回、然后所有后续位都是1、我认为这是不正确的、因为我的输入都在0V 左右、所以我可能会期望这一点 2个最低有效位在周围切换、但大部分在0。

当我希望 SCL 或 SDA 为低电平并具有三态时、我会将该总线位拆裂并将输出驱动为低电平、因此当我希望信号为1时、我的上拉电阻器会将信号拉高。  我的总线上还有其他设备工作正常、所以我相信总线可以正常工作、但我注意到您可能会延长时钟、所以我不知道这是否是问题。 总线的运行频率约为152Khz。

我很确定我已正确初始化了所有内容、但我无法弄清为什么我不读取正确的数据。

谢谢!

John

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

    您好!

    位拆裂并不理想、在尝试通过位拆裂进行通信时、可能会出现许多问题。  

    您是否正在监控 BUSY 引脚? 该引脚在转换时应变为高电平、如果该引脚未改变状态、则我们知道没有正确地告知它正在转换。 时钟扩展也是一种可能性、ADC 将保持时钟信号、直到它准备好与主机通信、此时它将释放时钟信号。  

    此致

    Cynthia

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

    您好、Cynthia、

    是的、我正在监控 BUSY 信号。  当我为系统加电时、它是低电平。 在整个初始化过程中、它都是低电平。  当我在 寄存器0x1E 中将 START 位设置为1时、它会在 I2C 周期结束时立即变为高电平。  之后、我再也看不到它会变低。

    John

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

    John、您好、很抱歉您缺席了、您是否能够继续进行此项工作?