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.

[参考译文] ADS7828:未从 ADS7828 获取电压值

Guru**** 2489685 points
Other Parts Discussed in Thread: ADS7828

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1545062/ads7828-not-getting-voltage-values-from-ads7828

部件号:ADS7828


工具/软件:

您好:

我尝试读取 ADS7828 上的电压值、范围为 0V 至 3V。 但电压将达到 0。 下面是我的代码  

uint8_t ADS7828_GetControlByte(uint8_t 通道)

如果(通道> 7)通道= 7

uint8_t control_byte = 0x80 |(通道<< 4)// sd=1、ch=通道、PD = 00(转换后断电)

返回 CONTROL_BYTE

}

//从指定通道读取 ADC 值

HAL_StatusTypeDef ADS7828_ReadChannel (uint8_t 通道、uint16_t * ADC_value)

uint8_t cmd = ADS7828_CMD(通道,0、1)

uint8_t data[2]=0

//步骤 1:发送命令字节

if (HAL_I2C_IF Master_Transmit (&hi2c1ADS7828_address&cmd、1、HAL_MAX_DELAY)!= HAL_OK)

返回 HAL_error

}

//步骤 2:从 ADC 读取 2 个字节(MSB 在前)

if (HAL_I2C_IF Master_Receive (&hi2c1ADS7828_ADDRESSDATA、2HAL_MAX_DELAY)!= HAL_OK)

返回 HAL_error

}

//将这两个字节组合成一个 12 位结果

* ADC_VALUE =((DATA[0] 0x0F)<< 8)| DATA[1]// 12 位右对齐

i2c 已成功写入。 但 ADS7828 上的值为 0。

帮助我解决此问题。 如果您需要更多信息、请告诉我。

此致、
Yash Gupta

返回 HAL_OK

}

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

    尊敬的 Yash:

    我们能否查看您的原理图并查看 I2C 通信的屏幕截图(示波器或逻辑分析仪)?

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

    您好、Tom、

    很抱歉晚才回复。

    请查看下面的原理图:  



    请告诉我这是否正确。

    此致、

    Yash Gupta

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

    尊敬的 Yash:

    原理图片段看起来正常。  是否从 ADS7828 获得了确认?  您发送的命令字节是多少?

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

    您好、Tom、

    我将通过 I2C 获得 ACK。 在接收 i2c 命令中、我得到 data[0]为 15、data[1]为 255。  

    我发送的命令字节为 PD0 - 1、PD1 - 0、SD - 1、C1、C2、 C3 作为通道编号。

    此致、

    Yash Gupta

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

    好的 — 那么您会得到 0xFFF 作为转换结果?  根据您的原理图、您正在使用我假设的内部基准、但您命令内部基准为“关闭“(PD1=0、PD0 =1)。  请使用 PD1=1 和 PD0 =1、看看是否有改善。