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.

[参考译文] ADS7924:无法通过 i2c 读取数据并将其写入

Guru**** 2391345 points
Other Parts Discussed in Thread: ADS7924

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/814388/ads7924-failed-to-read-and-write-the-data-into-through-i2c

器件型号:ADS7924

您好,

我一直在尝试从 ADS7924读取这些值,但每次从任何通道的数据寄存器读取数据时,我都会得到数字数据11111111。

下面是实施的代码片段。

您能不能帮助我解决这个问题。我是否遗漏了任何东西?

---------------------------------------------------- 代码-------------------------------------------------------

extern void I2CSend_adc (uint16 slave_addr_adc、uint16 num_for_args_adc、...);
extern uint8 I2CReceive_ADC (uint16 slave_addr_ADC、uint16 reg_ADC);

#define ADC_ADD                0x48
#define ADC_MODE               0x00
#define ADC_INT_CNTRL          0x01
#define ADC_DATA0_U            0x02
#define ADC_DATA0_L            0x03
#define ADC_Data1_U            0x04
#define ADC_Data1_L            0x05
#define ADC_DATA2_U            0x06
#define ADC_DATA2_L            0x07
#define ADC_DATA3_U            0x08
#define ADC_DATA3_L            0x09
#define ADC_ULR0               0x0A
#define ADC_LLR0               0x0B
#define ADC_ULR1               0x0C
#define ADC_LLR1               0x0D
#define ADC_ULR2               0x0E
#define ADC_LLR2               0x0F
#define ADC_ULR3               0x10
#define ADC_LLR3               0x11
#define ADC_INT_CONFIG         0x12
#define ADC_RESET              0x16

uint8 data_upper、data_lower、data1_upper、data1_lower、data_interupt、power_config、data2_lower、data2_upper、dev_id;
uint32 data_pd_VMON、data_aux_VMON、VeQ_53V_aux、data_53V_aux_VMON;
uint32 VeQ_PD、VeQ_aux;
uint32 volte_pd、volte_aux;


void k_adc ()



   I2CSEND_ADC (ADC_ADD、1、ADC_MODE、0x80);


   I2CSEND_ADC (ADC_ADD、1、ADC_MODE、0XCC);


   DATA_UPPER = I2CReceive_ADC (ADC_ADD、ADC_DATA0_U);


   KK_printf ("\n PD VMON 的高字节数据为%d \n"data_upper);


   DATA_LOWER = I2CReceive_ADC (ADC_ADD、ADC_DATA0_L);


   KK_printf ("\n PD VMON 的低字节数据为%d \n"、DATA_LOWER);


   DATA_PD_VMON =(((DATA_UPON<<8|DATA_LOW)>>4);


   KK_printf ("\n PD VMON 的数字数据为%d \n "、DATA_PD_VMON);


   VeQ_PD =(DATA_PD_VMON*3300)/4096UL;


   KK_printf ("\n PD 的电压=%d.%d \n"、VeQ_PD/1000、(VeQ_PD-(VeQ_PD/1000)*1000);

---------------------------------------------------------------------- 结束------------------------------------

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

    Rohith、

    我们的 ADS7924专家现已不在办公室、因此我想我会跳到办公室并发表一些评论。

    我会使用示波器或逻辑分析仪来捕获 I2C 通信。 如果您查看 SCL 和 SDA 线路、您应该会看到 ADS7924是否正确响应通信。 检查器件是否发送了地址并使用该地址进行确认。 此时、数据全部为1表示器件未接收到任何命令、根本无法通信。

    当您获得示波器屏幕截图时、将其发布回此处、我们可以查看它。

    吴约瑟

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

    您好、Joseph、

    感谢您的参与。 我看到 i2c 总线上没有发生事务。

    使用的 MCU 是 TM1431H6PGE。 我们将 I2C 2总线用于 ADC 事务,当我启用此 I2C 总线的中断时,总线将被挂起。

    事务是否在不启用中断的情况下发生。当前中断未启用。

    启用主中断。

    当我谈论中断时,这意味着在 NVIC 中启用中断。

    谢谢

    Rohith。

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

    Rohith、


    虽然我可以帮助处理有关 ADS7924的通信、但我不知道如何为微处理器设置 I2C。 您能否验证此处理器器件的名称? 如果这是 TI 器件、您可能可以在其中一个 e2e 论坛中发布有关设置 I2C 的问题。

    我现在将关闭此问题、但如果此处理器来自 TI、您应该在 TI 的其他处理器论坛中发布此问题。


    吴约瑟