OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子全套STM32开发资料,上千讲STM32视频教程,RT1052教程免费下载啦...

查看: 781|回复: 5

STM32F4 I2S3时钟没输出

[复制链接]

  离线 

17

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
145
金钱
145
注册时间
2012-8-20
在线时间
6 小时
发表于 2016-5-12 14:59:20 | 显示全部楼层 |阅读模式
1金钱
我使用I2S3和Wm8978来录音,但是我按照I2S2进行相应修改后,为什么几根时钟线没时钟输出?

最佳答案

查看完整内容[请看2#楼]

我也是使用I2S3,可以正常使用,I2S和你的一样,还有端口和接收函数处修改: u8 WM8978_Init(void) { u8 res; GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOC, ENABLE); //使能外设GPIOB,GPIOC时钟 //复用功能输出 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用功能 GPIO_InitStru ...
回复

使用道具 举报

  离线 

0

主题

2

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2014-12-16
在线时间
7 小时
发表于 2016-5-12 14:59:21 | 显示全部楼层
我也是使用I2S3,可以正常使用,I2S和你的一样,还有端口和接收函数处修改:
u8 WM8978_Init(void)
{
        u8 res;

        GPIO_InitTypeDef  GPIO_InitStructure;
       
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOC, ENABLE);                        //使能外设GPIOB,GPIOC时钟
     
        //复用功能输出
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用功能
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉
  GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12;
  GPIO_Init(GPIOC, &GPIO_InitStructure);//初始化
       
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource4,GPIO_AF_SPI3);         //PA4,        AF6  I2S_LRCK                         I2Sn_WS
        GPIO_PinAFConfig(GPIOC,GPIO_PinSource10,GPIO_AF_SPI3);        //PC10,        AF6  I2S_SCLK                         I2Sn_CK
        GPIO_PinAFConfig(GPIOC,GPIO_PinSource12,GPIO_AF_SPI3);        //PC12 ,AF6  I2S_DACDATA                 I2Sn_SD
        GPIO_PinAFConfig(GPIOC,GPIO_PinSource7,GPIO_AF_SPI3);                //PC7 ,        AF6  I2S_MCK                                I2Sn_MCK
        GPIO_PinAFConfig(GPIOC,GPIO_PinSource11,GPIO_AF_SPI3);        //PC11 ,AF5  I2S_ADCDATA          I2Snext_SD

       
        IIC_Init();//初始化IIC接口
        res=WM8978_Write_Reg(0,0);        //软复位WM8978
        if(res)return 1;                        //发送指令失败,WM8978异常
        //以下为通用设置
        WM8978_Write_Reg(1,0X1B);        //R1,MICEN设置为1(MIC使能),BIASEN设置为1(模拟器工作),VMIDSEL[1:0]设置为:11(5K)
        WM8978_Write_Reg(2,0X1B0);        //R2,ROUT1,LOUT1输出使能(耳机可以工作),BOOSTENR,BOOSTENL使能
        WM8978_Write_Reg(3,0X6C);        //R3,LOUT2,ROUT2输出使能(喇叭工作),RMIX,LMIX使能       
        WM8978_Write_Reg(6,0);                //R6,MCLK由外部提供
        WM8978_Write_Reg(43,1<<4);        //R43,INVROUT2反向,驱动喇叭
        WM8978_Write_Reg(47,1<<8);        //R47设置,PGABOOSTL,左通道MIC获得20倍增益
        WM8978_Write_Reg(48,1<<8);        //R48设置,PGABOOSTR,右通道MIC获得20倍增益
        WM8978_Write_Reg(49,1<<1);        //R49,TSDEN,开启过热保护
        WM8978_Write_Reg(10,1<<3);        //R10,SOFTMUTE关闭,128x采样,最佳SNR
        WM8978_Write_Reg(14,1<<3);        //R14,ADC 128x采样率
        printf("WM8978_Init OK\r\n");               
        return 0;
}

void rec_i2s_dma_rx_callback(void)
{   
        u16 bw;
        u8 res=0;
        if(rec_sta==0X80)//录音模式
        {  
                if(DMA1_Stream2->CR&(1<<19))
                {
                        res=f_write(f_rec,i2srecbuf1,I2S_RX_DMA_BUF_SIZE,(UINT*)&bw);//写入文件
                        if(res)
                        {
                                printf("write error:%d\r\n",res);
                        }
                         
                }else
                {
                        res=f_write(f_rec,i2srecbuf2,I2S_RX_DMA_BUF_SIZE,(UINT*)&bw);//写入文件
                        if(res)
                        {
                                printf("write error:%d\r\n",res);
                        }
                }
                wavsize += I2S_RX_DMA_BUF_SIZE;
        }
}
回复

使用道具 举报

  离线 

17

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
145
金钱
145
注册时间
2012-8-20
在线时间
6 小时
 楼主| 发表于 2016-5-12 15:00:47 | 显示全部楼层
本帖最后由 lzandyc 于 2016-5-12 15:02 编辑

如附件所示,这是我按照I2S2修改位I2S3的 ,请大家帮忙看一下

I2S2.zip

3.89 KB, 下载次数: 323

回复

使用道具 举报

  离线 

500

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
129741
金钱
129741
注册时间
2010-12-1
在线时间
1169 小时
发表于 2016-5-13 21:15:37 | 显示全部楼层
帮顶
回复

使用道具 举报

  离线 

34

主题

111

帖子

0

精华

初级会员

Rank: 2

积分
157
金钱
157
注册时间
2015-11-13
在线时间
56 小时
发表于 2018-1-12 10:56:43 | 显示全部楼层
正点原子公众号
bibanu 发表于 2016-5-12 14:59
**** 作者被禁止或删除 内容自动屏蔽 ****

兄弟你有用到SD卡吗,话说板子上SD卡的引脚与PC10 PC11 PC12 共用了  你用这三个引脚不冲突吗
回复

使用道具 举报

  离线 

34

主题

111

帖子

0

精华

初级会员

Rank: 2

积分
157
金钱
157
注册时间
2015-11-13
在线时间
56 小时
发表于 2018-1-12 15:36:21 | 显示全部楼层
bibanu 发表于 2016-5-12 14:59
**** 作者被禁止或删除 内容自动屏蔽 ****

兄弟你有用到sd卡吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则




关闭

"原子哥”推荐上一条 /1 下一条

QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-7-21 00:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表
/* */