在线时间390 小时
UID3007495
注册时间2015-12-22
NXP金币123
TA的每日心情 | 擦汗 2021-7-5 15:45 |
---|
签到天数: 664 天 [LV.9]以坛为家II
金牌会员
- 积分
- 5383
- 最后登录
- 2021-12-22
|
本帖最后由 okwh 于 2018-5-28 10:13 编辑
【LPC54114双核任务三】――C2、实现DMIC-->I2S-->wm8904-->耳机
经过多次失败、反复检查后,终于实现DMIC-->I2S-->wm8904-->耳机,实时声音的录放实现!! 这年头,提供源码的人越来越少了啊!! 基于Keil\ARM\Pack\Keil\LPC54000_DFP\2.4.0\LPCOpen\lpc5411x\examples_5411x\periph_i2s_dmic代码修改实现。
关键: 修改管脚配置,满足万利板的需要。
主要修改如下:(注释掉的是原来NXP的代码) 参考前文关于NXP板和万利板的不同:【LPC54114双核任务三】――C1、M4通过缓冲控制音频数据播放
i2s_if.c文件:
- i2s_if.c文件:
- #define I2S6_FLEXCOMM 6
- #define I2S7_FLEXCOMM 7
- #define I2S_PORT_TX LPC_I2S7
- #define I2S_TX_ISR I2S7_IRQHandler
- #define I2S_TX_IRQNUM I2S7_IRQn
- #define I2S_TX_FLEXCOMM I2S7_FLEXCOMM
- #define I2S_PORT_RX LPC_I2S6
- #define I2S_RX_ISR I2S6_IRQHandler
- #define I2S_RX_IRQNUM I2S6_IRQn
- #define I2S_RX_FLEXCOMM I2S6_FLEXCOMM
- /*
- #define I2S_PORT_TX LPC_I2S6
- #define I2S_TX_ISR I2S6_IRQHandler
- #define I2S_TX_IRQNUM I2S6_IRQn
- #define I2S_TX_FLEXCOMM I2S6_FLEXCOMM
- #define I2S_PORT_RX LPC_I2S7
- #define I2S_RX_ISR I2S7_IRQHandler
- #define I2S_RX_IRQNUM I2S7_IRQn
- #define I2S_RX_FLEXCOMM I2S7_FLEXCOMM
- */
- void i2s_pinmux_init(void)
- {
- Chip_Clock_EnablePeriphClock(SYSCON_CLOCK_IOCON);
- Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 5, i2s_p1); // Flexcomm 6 / SDA
- Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 6, i2s_p1); // Flexcomm 6 / WS
- Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 7, i2s_p1); // Flexcomm 6 / SCK
- Chip_IOCON_PinMuxSet(LPC_IOCON, 1, 12, i2s_p4); // Flexcomm 7 / SCK
- Chip_IOCON_PinMuxSet(LPC_IOCON, 1, 13, i2s_p4); // Flexcomm 7 / SDA
- Chip_IOCON_PinMuxSet(LPC_IOCON, 1, 14, i2s_p4); // Flexcomm 7 / WS
- // Chip_IOCON_PinMuxSet(LPC_IOCON, 1, 12, i2s_p4); // Flexcomm 7 / SCK
- // Chip_IOCON_PinMuxSet(LPC_IOCON, 1, 7, i2s_p2); // Flexcomm 7 / SDA
- // Chip_IOCON_PinMuxSet(LPC_IOCON, 1, 8, i2s_p2); // Flexcomm 7 / WS
- Chip_Clock_DisablePeriphClock(SYSCON_CLOCK_IOCON);
- }
复制代码 i2c.if.c文件
- void i2c_pinmux_init(void)
- {
- Chip_Clock_EnablePeriphClock(SYSCON_CLOCK_IOCON);
- Chip_IOCON_PinMuxSet(LPC_IOCON, 1, 1, IOCON_MODE_PULLUP | IOCON_FUNC5 | IOCON_DIGITAL_EN | IOCON_INPFILT_OFF);
- Chip_IOCON_PinMuxSet(LPC_IOCON, 1, 2, IOCON_MODE_PULLUP | IOCON_FUNC5 | IOCON_DIGITAL_EN | IOCON_INPFILT_OFF);
- // Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 25, i2c_spd_fast);
- // Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 26, i2c_spd_fast);
- Chip_Clock_DisablePeriphClock(SYSCON_CLOCK_IOCON);
- }
复制代码 dmic.if.c文件:
- static const PINMUX_GRP_T dmic_io[] =
- {
- {1, 15, IOCON_FUNC1 | IOCON_DIGITAL_EN},//(IOCON_FUNC1 | IOCON_MODE_INACT | IOCON_DIGITAL_EN)}, /* PDM CLK */
- {1, 16, IOCON_FUNC1 | IOCON_DIGITAL_EN},//(IOCON_FUNC1 | IOCON_MODE_INACT | IOCON_DIGITAL_EN)}, /* PDM DATA */
- // {0, 31, (IOCON_FUNC1 | IOCON_MODE_INACT | IOCON_DIGITAL_EN)}, /* PDM CLK */
- // {1, 0, (IOCON_FUNC1 | IOCON_MODE_INACT | IOCON_DIGITAL_EN)}, /* PDM DATA */
- };
复制代码
附件:
periph_i2s_dmic.rar
(34.67 KB, 下载次数: 57)
|
|