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.
工具/软件: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