打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
STM32F4 I2S外部时钟输入的配置
STM32F4 I2S外部时钟输入的配置
原文:http://bbs.21ic.com/icview-717434-1-1.html
我目前是这样配置的:
1,把system_stm32f4xx.c中启用内部I2SPLL的code注释掉,然后启用外部I2S时钟:
//   RCC->CFGR &= ~RCC_CFGR_I2SSRC;
//   /* Configure PLLI2S */
//   RCC->PLLI2SCFGR = (PLLI2S_N << 6) | (PLLI2S_R << 28);
//   /* Enable PLLI2S */
//   RCC->CR |= ((uint32_t)RCC_CR_PLLI2SON);
//   /* Wait till PLLI2S is ready */
//   while((RCC->CR & RCC_CR_PLLI2SRDY) == 0)
//   {
//   }
RCC->CFGR |= RCC_CFGR_I2SSRC; // 启用外部时钟
2,在使能I2S的APB时钟前,对I2S_CKIN的pin进行初始化:
RCC_I2SCLKConfig(RCC_I2S2CLKSource_Ext);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);
//i2s clock in
GPIO_PinAFConfig(GPIOC, GPIO_PinSource9, GPIO_AF_SPI3);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOC, &GPIO_InitStructure);
3,往SPI_I2SPR寄存器写0x0202,即MCKOE = 1, I2SDIV = 2, ODD = 0,这样配置使得在Fs=48000Hz时,I2S_CKIN需要输入1024*Fs(bit-frame = 32)的时钟.I2S_CKIN我用FPGA输出49.152MHz时钟提供.用SignalTapII看该时钟很稳定.
4,经过上面的配置,用SignalTapII看过STM32F4 I2S的MCK,LRCK,BCLK都没有输出.当然Codec也没发声.
PS:如果启用内部的I2SPLL提供时钟给I2S模块,可以正常播放音乐,表示I2S外设的配置是没问题的.所以请教下我的配置是否有问题,或者还有什么地方需要配置或者注意的.任何意见我表示很感谢.
问题解决:
问题找到了..原来在I2S_Init函数中有个开关定义在stm32f4_conf.h哪里..另外GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;应该改为GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
忘记还有个地方要改:GPIO_PinAFConfig(GPIOC, GPIO_PinSource9, GPIO_AF_SPI3);应该连接到GPIO_AF_SPI2,I2S_CKIN连接到AF5而不是AF6,虽然I2S2和I2S3的ext clk是共用的.
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
STM32F0 无法使NRF2401工作,求达人指点迷津! (amoBBS 阿莫电子论坛)
STM32的MCO时钟功能输出
ADC,DMA,多路,单次/连续转换(标准外设库)
stm最简单例子
stm32串口程序(全)
STM32的can总线实验心得
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服