请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:CC2640 主题中讨论的其他器件: TLV320AIC3120
我找不到主器件对 I2S 读取模式的软件支持(i、e CC2640)。 请告诉我如何使用 I2S 协议从音频编解码器(i、e TLV320aic3120)读取数据。 我使用 BLE 栈2.2进行编程参考。
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.
我找不到主器件对 I2S 读取模式的软件支持(i、e CC2640)。 请告诉我如何使用 I2S 协议从音频编解码器(i、e TLV320aic3120)读取数据。 我使用 BLE 栈2.2进行编程参考。
您好!
我们正在努力为您提供一个准确的示例。 我们的 GitHub 将为您准备就绪,需要几周时间: 
现在、您可以尝试在 TI-RTOS (PDMCC26XX_util.c)中使用我们的 PDM 驱动程序、然后将参数修改为您需要的任何参数。
/*初始化 I2S 对象*/ object->requestMode = params->requestMode; object->ui32requestTimeout = params->ui32requestTimeout; object->blocksize = params->blocksize; object->pvContBuffer = params->pvContBuffer; object->ui32conBufTotalSize = params->ui32conBufTotalSize; object->pvContMgtBuffer = params->pvContactBuffer; object->ui32conMgtBufTotalSize = params->ui32conMgtBufTotalSize; object->currentStream = params->currentStream; object->currentStream->status = PDMCC26XX_I2S_STREAME_IDLE; /*以下是适用于 PDM 的常量*/ object->i32SampleRate =-1; /*如果为负、则使用用户配置的时钟分频*/ object->audioClkCfg.wclkDiv = 16; /* I2S 字时钟分频器覆盖*/ object->audioClkCfg.sampleOnPositiveEdge = PDMCC26XX_I2S_SampleEdge_positive;// I2S 样本边缘*/ object->audioClkCfg.wclkPhase = PDMCC26XX_I2S_WordClockPhase_Dual; /* I2S 字时钟相位*/ object->audioClkCfg.wclkInverted = PDMCC26XX_I2S_ClockSource_Normal; /* I2S 反转字时钟*/ object->audioClkCfg.wclkSource = PDMCC26XX_I2S_WordClockSource_Int; /* I2S 字时钟源*/ object->audioClkCfg.bclkDiv = 47; /* I2S 位时钟分频器覆盖*/ object->audioClkCfg.reserved = 0; object->audioClkCfg.bclkSource = PDMCC26XX_I2S_BitClockSource_Int; /* I2S 位时钟源*/ object->audioClkCfg.mclkDiv = 6; /* I2S 主时钟分频器覆盖*/ object->audioPinCfg.bitfields.ad1用法= PDMCC26XX_I2S_ADUsageDisabled; /* I2S AD1用法(0:禁用、1:输入、2:输出)*/ object->audioPinCfg.bitfields.enableMclkPin = PDMCC26XX_I2S_general_disabled;//引脚上的 I2S 使能主时钟输出*/ object->audioPinCfg.bitfields.reserved = 0; object->audioPinCfg.bitfields.ad1NumOfChannels = 0; /* I2S AD1通道数(1-8)。 !必须匹配通道掩码*/ object->audioPinCfg.bitfields.ad1ChannelMask = PDMCC26XX_I2S_disabled_mode;// I2S AD1通道掩码*/ object->audioPinCfg.bitfields.ad0Usage = PDMCC26XX_I2S_ADUsageInput; /* I2S AD0用法(0:禁用、1:输入、2:输出)*/ object->audioPinCfg.bitfields.enableWclkPin = PDMCC26XX_I2S_general_disabled;//引脚上的 I2S 使能字时钟输出*/ object->audioPinCfg.bitfields.enableBclkPin = PDMCC26XX_I2S_general_enabled;//引脚上的 I2S 使能位时钟输出* object->audioPinCfg.bitfields.ad0NumOfChannels = 2; /* I2S AD0通道数(1-8)。 !必须与通道掩码匹配。 sa PDM_NUM_OF_CHANNELS * object->audioPinCfg.bitfields.ad0ChannelMask = PDMCC26XX_I2S_立体声_mode;// I2S AD0通道掩码*/ object->audioFmtCfg.wordcLength = PDMCC26XX_I2S_WordLength16; /*每个字的位数(8-24)。 精确于单相、最大为双相*/ object->audioFmtCfg.sampleEdge = PDMCC26XX_I2S_PositiveEdge; /*数据和字时钟是在 BCLK 的反向边沿上进行采样和时钟输出*/ object->audioFmtCfg.dualPhase = PDMCC26XX_I2S_SinglePhase; /*选择双相或单相格式(0:单相、1:双相)*/ object->audioFmtCfg.memLen = PDMCC26XX_I2S_MemLen16位; /*存储到存储器或从存储器加载的每个字的大小(0:16、1:24)*/ object->audioFmtCfg.dataDelay = PDMCC26XX_I2S_FormatLJF; /* WCLK 边沿和相位中第一个字 MSB 之间的 BCLK 周期数*/