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/CC1352R:如何在 CC1352R 中 I2S 接口的 pdmstream 示例中添加 wclk 信号?

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/941890/ccs-cc1352r-how-to-add-wclk-signal-in-pdmstream-example-for-i2s-interface-in-cc1352r

器件型号:CC1352R

工具/软件:Code Composer Studio

我连接的 I2S 麦克风具有 BCLK、WCLK 作为输入、数据作为输出。 我发现 pdmstream 是一个恰当的示例。 它有一个 BCLK (1.024MHz)作为 CC1352R 的输出。 我还想添加 wclk 信号(16kHz)以连接麦克风。 我可以在硬件实例中看到 MCLK 和 wclk 信号、我已经定义了 MCLK 信号并将其添加到代码中的硬件中(粗体显示)、如下所示:

#define MIC_POWER IOID_18
#define MIC_POWER_ON 1.
#define MIC_POWER_OFF 0
#define ADI_PIN IOID_20
#define BCLK_PIN IOID_19
#define WCLK_PIN IOID_17

/* PDM 对象、一个用于 PDM 驱动程序、一个用于 PDM/I2S 帮助文件*/
PDMCC26XX_Object pdmCC26XX 对象;
PDMCC26XX_I2S_Object pdmCC26XXI2SObject;

/* PDM 驱动程序硬件属性*/
const PDMCC26XX_HWAttrs pdmCC26XXHWAttrs ={
.mPower = MIC_POWER、
.taskPriority = 1、
};

/* PDM 配置结构*/
const PDMCC26XX_Config PDMCC26XX_config[]={

.object =&pdmCC26XX 对象、
hwAttrs =&pdmCC26XXHWAttrs
}、
{NULL、NULL}
};

/* PDM_I2S 硬件属性*/
const PDMCC26XX_I2S_HWAttrs pdmC26XXI2SHWAttrs ={
baseAddr = I2S0_BASE、
.intNum = INT_I2S_IRQ、
powerMngrId = PowerCC26XX_Periph_I2S、
.intPriority =~0、
.mclkPin = PIN_Unassigned、
.bclkPin = BCLK_PIN、
.wclkPin = WCLK_PIN、
.ad0Pin = ADI_PIN、
};

/* PDM_I2S 配置结构*/
const PDMCC26XX_I2S_Config PDMCC26XX_I2S_CONFIG[]={

.object =&pdmCC26XXI2SObject、
hwAttrs =&pdmC26XXI2SHWAttrs
}、
{NULL、NULL}
};

 

我已在 IOID_17的 CRO 上点击了信号、但无法获取任何信号。 有人能帮我解决我遗漏的问题吗? 此外、我还检查 了 PDMCC26XX.h、它具有 MCLK 和 wclk 的默认时钟分频器、如何覆盖它?  

谢谢!

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

    您好!

    您的行为对我来说似乎是正确的。 我唯一的疑问是您是否为 WCLK 选择了一个可用引脚。

    您能否进行测试以交换 WCLK 和 BCLK 信号? 这只是为了确认可以使用两个引脚。

    此致、

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

    您好 Clement、  

    我已检查以互换 BLCK 和 WCLK。 BCLK 在我分配的任何引脚上工作(用多个引脚检查)、但不在 WCLK 上工作。  

    我是否必须覆盖 PDMCC26XX_I2S_AudioPinConfig 和  PDMCC26XX_I2S_AudioClockConfig 以启用 WCLK 和 MCLK 引脚及其时钟分频器?  

    在 PDMCC26XX_util.h 中、结构如下所示:  

    typedef 结构{
    /*! I2S 字时钟分频器覆盖*/
    uint16_t wclkDiv;
    /*! I2S 采样边沿寄存器
    * 0 -在负边沿上对数据和 WCLK 进行采样、并在正边沿上计时。
    * 1 -在正边沿上对数据和 WCLK 进行采样、并在负边沿上计时*/
    uint16_t sampleOnPositiveEdge:1;
    /*! I2S 字时钟相位(PDMCC26XX_I2S_WordClockPhase_Dual、PDMCC26XX_I2S_WordClockPhase_Single 或 PDMCC26XX_I2S_WordClockPhase_UserDefined)*
    uint16_t wclkPhase:2;
    /*! I2S 反向字时钟(PDMCC26XX_I2S_ClockSource_Inverted 或 PDMCC26XX_I2S_ClockSource_Normal)*/
    uint16_t wclkInverted:1;
    /*! I2S 字时钟源(PDMCC26XX_I2S_WordClockSource_Ext 或 PDMCC26XX_I2S_WordClockSource_Int)*
    uint16_t wclkSource:2;
    /*! I2S 位时钟分频器覆盖*/
    uint16_t bclkDiv:10;
    /*! 保留位字段*/
    uint16_t 保留:5;
    /*! I2S 位时钟源(PDMCC26XX_I2S_BitClockSource_Ext 或 PDMCC26XX_I2S_BitClockSource_Int)*
    uint16_t bclkSource:1;
    /*! I2S 主时钟分频器覆盖*/
    uint16_t mclkDiv:10;
    }PDMCC26XX_I2S_AudioClockConfig;

     

    typedef union PDMCC26XX_I2S_AudioPinConfig{
    /*! 可用于设置 DriverLib*/中的引脚配置
    结构{
    /*! 可用于在 DriverLib 中设置引脚配置的字段*/
    uint16_t ad1;
    /*! 可用于在 DriverLib 中设置引脚配置的字段*/
    uint16_t ad0;
    } driverLibParams;
    /*! 用于在初始化期间配置 I2S 硬件的各个方面*/
    结构{
    /*! I2S AD1用法(0:禁用、1:输入、2:输出)*/
    uint8_t ad1用法:2;
    /*! 引脚上的 I2S 使能主机时钟输出(0:禁用、1:启用)*/
    uint8_t enableMclkPin:1;
    /*! 保留位字段*/
    uint8_t 保留:1;
    /*! I2S AD1通道数(1 - 8)。 !必须匹配通道掩码*/
    uint8_t ad1NumOfChannels:4;
    /*! I2S AD1通道掩码按位0:禁用、1:启用)、例如单声道:0x01、立体声:0x03 */
    uint8_t ad1ChannelMask;
    /*! I2S AD0用法(0:禁用、1:输入、2:输出)*/
    uint8_t ad0用法:2;
    /*! 引脚上的 I2S 使能字时钟输出(0:禁用、1:启用)*/
    uint8_t enableWclkPin:1;
    /*! 引脚上的 I2S 使能位时钟输出(0:禁用、1:启用)*/
    uint8_t enableBclkPin:1;
    /*! I2S AD0通道数(1 - 8)。 !必须与通道掩码*/匹配
    uint8_t ad0NumOfChannels:4;
    /*! I2S AD0通道掩码按位(0:禁用、1:启用)、例如单声道:0x01、立体声:0x03 */
    uint8_t ad0ChannelMask;
    }位字段;
    }PDMCC26XX_I2S_AudioPinConfig;

    我假设默认值已启用  PDMCC26XX_I2S_AudioPinConfig 中的 WCLK 和 BLCK 引脚:  

    /*! 引脚上的 I2S 使能字时钟输出(0:禁用、1:启用)*/

    uint8_t enableWclkPin:1;

    /*! 引脚上的 I2S 使能位时钟输出(0:禁用、1:启用)*/

    uint8_t enableBclkPin:1;"。

     

    如果我错了、请纠正我的问题。 此外、您能否建议如何在代码中覆盖这些函数?  

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

    您好!

    感谢您运行的测试。 您能否验证 WCLK 时钟是否已激活? 为此、在 PDMCC26XX_util.c 中验证参数 object->audioPinCfg.bitfields.enableWclkPin 是否设置为 PDMCC26XX_I2S_general_enabled。

    我认为您不必修改 PDMCC26XX_I2S_AudioPinConfig 和 PDMCC26XX_I2S_AudioClockConfig。

    最后、要强制链接器使用修改后的文件、您需要在 CCS 或 IAR 中将其导入项目中。

    此致、

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

    您好 Clement、  

    有一个 pdmstream.c 包含 PDMCC26XX_util.h (附加了这两个文件)。 pdmstream.c 中的 audioPinCfg.bitfield 没有对象可用(即 PDMCC26XX_I2S_AudioPinConfig 的对象)。 我想知道如何启用正在工作且能够进行轻触的 enableBclkPin。 您能快速查看这些文件吗?  

    谢谢、 e2e.ti.com/.../PDMCC26XX_5F00_util.he2e.ti.com/.../pdmstream.c

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

    您好!

    我建议在 PDMCC26XX_util.c 中进行修改


    此致、

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

    抱歉、 它没有在 CCS 项目中显示 PDMCC26XX_util.c、所以我感到困惑。 我已编辑修改并导入了文件、这是有效的。 非常感谢、Clement! :D