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.

[参考译文] CCS/PGA900EVM:COMBUF 和 PADC

Guru**** 2546020 points
Other Parts Discussed in Thread: PGA900

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/624367/ccs-pga900evm-combuf-and-padc

器件型号:PGA900EVM
主题中讨论的其他器件:PGA900

工具/软件:Code Composer Studio

我正在尝试使用 I2C 与 pga90通信以读取 PADC 值。

在 COMBUF 中断服务例程(COMBUF_Handler (void)?)中 我想从主器件读取 COM_DIF_TO_MCU 数据、对其进行解释、读取相关寄存器(PADC)、然后进行读取、以便 pga900定期更新 COM_MCU_TO_DIF。

我尝试为 PADC_Data1和 PADC_DATA3获取此数据 、然后定期将其写入 COM_MCU_TO_DIF (24位模式、PADC_Data1为 LSbyte 和 PADC_DATA3 MSbyte)

例如、我想有一个函数:

空 readPADC_Data1 (UC PADC_Data1)

(?????????) //这是我不确定需要填充的函数、以获取读取 PADC_Data1和 PADC_DATA3的函数

然后、我可以在 COMBUF 中断服务例程中调用该函数、以便 I2C 主设备可以读取:

ADCMSByte = readPADC_Data1 ()

com_mcu_TO_DIF_WRITE (ADCMSByte);

参考代码包含以下所有内容、但我不确定哪一个实际包含 ADC 值、我可以使用更新 COM_MCU_TO_DIF、以便 I2C 主设备可以读取。 对不起、我是一个初学者、所以对我来说不是很明显!  

#define PADC_Data1 (*((VUC *) 0x40000520)、#define PADC_DATA3 (*((VUC *) 0x40000522))、

#define PADC_DATA (*((VS2 *) 0x40000520))、  #define PADC_DATA_24BIT (*(((VSL *) 0x40000520))

VS2 ADC_PchannelValue; /* PADC 值*/ & 中断空 PADC_Handler (空)

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

    PADC_Handler 函数应为您读取 PADC 并将完整的24位放入 ADC_PchannelValue 变量中。 无需将其拆分为 MS 和 LS 部分。

    这是否能回答您的问题? 如果您的意思不同、请告诉我。

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

    如果我错了、请纠正我的问题、但如果通过 I2C 进行通信、参考固件会做什么?

    主器件发送一些数据、例如(0x20)到[ COM_DIF_TO_MCU 寄存器0x40]。

    在 PGA900寄存器中生成中断 void COMBUF_Handler (void)

    3. COMBUF_Handler 读取此数据并将其临时存储到 Combuf_Rx_buf (COMBUF_Rx_buf[0]= COM_DIF_TO_MCU_B;)、

    清除接收状态和标志以处理数据。

    4.在 main 函数中、该临时存储数据的逆向是 i2c 主控方接收到的内容?

    com_mcu_TO_DIF_B =~Ω COMBUF_Rx_BUf[0]; //按位方式发送不是接收到的数据*/  

     

     如果我的解释是正确的、那么获取 PADC 读数是否正确?:

    主器件发送一些数据、例如(0x20)到[ COM_DIF_TO_MCU 寄存器0x40]

    2.生成中断 void COMBUF_Handler (void)

    3. 我将 COMBUF_Handler (void)修改为如下所示:

    中断 COMBUF_Handler ()

      COMBUF_Rx_BUF[0]= COM_DIF_TO_MCU_B;//读取 combuf 数据*

       /*读取 PADC 并将完整的24位放入 ADC_PchannelValue 变量中*/

      while (COMBUF_Rx_BUF[0]= 0x20){

            PADC_Handler (ADC_PchannelValue);//不确定如何调用 PADC_handler 并返回 ADC_PchannelValue (如果它没有参数并且不返回任何值)*/

            }                               /*感谢您的帮助*/

      COMBUF_Rx_BUF[0]= ADC_PchannelValue;

      COMBUF_RX_STATUS_CLEAR ();           //清除接收状态*/

      COMBUF_Flag = 1;

    main 函数中、主器件将接收此 ADC_PchannelValue

     /*发送接收到的数据*/

     com_mcu_TO_DIF_B = COMBUF_Rx_BUF[0];