在线时间828 小时
UID3079326
注册时间2015-2-11
NXP金币28
TA的每日心情 | 奋斗 2025-5-7 09:07 |
---|
签到天数: 353 天 连续签到: 1 天 [LV.8]以坛为家I
金牌会员
 
- 积分
- 5785
- 最后登录
- 2025-5-7
|
DMIC 产生的的数据流可以被CPU或DMA读取,也可以直接发送到I2S。
通过CPU或DMA读取时,是通过设置DMIC的FIFO控制寄存器的终端位或DMA读取。
在SDK2.2的驱动例程dmic_i2s_codec中出示化DMIC时。设置其工作模式:
- DMIC_SetOperationMode(DMIC0, kDMIC_OperationModePoll);
复制代码 工作模式时个枚举的类型:
- typedef enum _operation_mode
- {
- kDMIC_OperationModePoll = 0U, /*!< Polling mode */
- kDMIC_OperationModeInterrupt = 1U, /*!< Interrupt mode */
- kDMIC_OperationModeDma = 2U, /*!< DMA mode */
- } operation_mode_t;
复制代码 设置工作模式原型:
- void DMIC_SetOperationMode(DMIC_Type *base, operation_mode_t mode)
- {
- if (mode == kDMIC_OperationModeInterrupt)
- {
- /* Enable DMIC interrupt. */
- base->CHANNEL[0].FIFO_CTRL |= DMIC_CHANNEL_FIFO_CTRL_INTEN(1);
- base->CHANNEL[1].FIFO_CTRL |= DMIC_CHANNEL_FIFO_CTRL_INTEN(1);
- }
- if (mode == kDMIC_OperationModeDma)
- {
- /* enable DMA request*/
- base->CHANNEL[0].FIFO_CTRL |= DMIC_CHANNEL_FIFO_CTRL_DMAEN(1);
- base->CHANNEL[1].FIFO_CTRL |= DMIC_CHANNEL_FIFO_CTRL_DMAEN(1);
- }
- }
复制代码 可见在原型中,并没有轮训模式。
问题来了?有轮训模式吗?如果有,怎么个轮询数据法?
|
|