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.

[参考译文] 对 PPS GDE 生成的 C 头文件有疑问

Guru**** 2481465 points


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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/830914/doubt-regarding-c-header-file-generated-by-pps-gde

您好!

我们已经完成了在 PPSGDE 上生成 PFW 的工作、并希望使用一个微控制器来控制整个系统、该微控制器使用 I2C 接口充当主控制器。 我们已根据 此处(https://e2e.ti.com/support/audio/f/6/t/773065?tisearch=e2e-sitesearch&keymatch=faq%3Atrue)和此处(www.ti.com/.../slaa605a.pdf)提供的指令生成了 base_main_Rate44_pps_driver.h 头文件。

在这个头文件内、我们有 REG_Section_program、 miniDSP_A_REG_Values、 miniDSP_D_REG_Values、这些值必须由主器件按照上述文档中的说明进行传输。 但是、我不理解以下定义-  

#define miniDSP_A_REG_VALUES COEFF_START 0
#define miniDSP_A_REG_VALUES COEFF_SIZE 156
#define miniDSP_A_REG_VALUES INST_START 156
#define miniDSP_A_REG_VALUES INST_SIZE 455

和  

#define miniDSP_D_REG_VALUES COEFF_START 0
#define miniDSP_D_REG_VALUES COEFF_SIZE 182
#define miniDSP_D_REG_VALUES INST_START 182
#define miniDSP_D_REG_VALUES INST_SIZE 485

我知道这些是一些长度定义、我必须使用这些定义来传输代码、但生成的数组比此处定义的大小长得多。 如果有人能够说明如何使用这些定义生成代码来启动 EVM、而无需 PC 以 PPS 或 CodecControl 的形式发出任何命令、我将不胜感激。

此致、
索维克

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

    您好!

    我们正在研究您的申请、并将与我们的音频软件专家联系。

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

    尊敬的苏维克、

    PPS 驱动器接口将系数和指令组合到一个阵列中。 对于 miniDSP_A、该数组变量为 miniDSP_A_REG_Values;对于 miniDSP_D、该数组变量为 miniDSP_D_REG_Values。 在无需分离系数和指令的应用中、可以按原样使用整个阵列、并使用 i2c 或 SPI 将其写入器件。 下面显示了示例 C 代码接口。   

    在需要分离系数和指令的应用中、可使用系数和指令的#defines。 defines 表示数组中的偏移量和大小。 例如、miniDSP_A_REG_VALUES COEFF_START 定义了数组中系数的起始位置、而 miniDSP_A_REG_VALUES COEFF_SIZE 定义了以字节为单位的大小。

    #define CFG_meta_switch (255)
    #define CFG_META_DELAY (254)
    #define CFG_META_BURST (253)

    /*示例 C 代码*/
    /*
       //可将 n 个字节写入器件的外部实现的函数
       //有关更多信息,请参阅器件数据表。
       extern int i2c_write (unsigned char * data、int n);
       //外部实现的函数将执行延迟 n 毫秒
       extern int delay (int n);
       //实现示例。  呼叫方式:
       //    transmit 寄存器(寄存器、sizeof (寄存器)/sizeof (寄存器[0]));
       void transmit 寄存器(cfg_reg *r、int n)
       {
           int i = 0;
           while (i < n){
               switch (r[i].command){
               CFG_META_SWITCHCH 案例:
                   //在此处处理 miniDSP_A 和 miniDSP_D 写入。
                   中断;
               案例 CFG_META_DELAY:
                   延迟(r[i].param);
                   中断;
               案例 CFG_META_BURST:
                   I2C_WRITE ((unsigned char *)&r[i+1]、r[i].param);
                   i += (r[i].param /2)+1;
                   中断;
               默认值:
                   I2C_WRITE ((unsigned char *)&r[i]、2);
                   中断;
               }
               i++;
           }
       }
     *

    此致。