关于I2S的bug问题单,是bug还是什么,有知道的吗

只需一步,快速开始
后使用快捷导航没有帐号?
查看: 7673|回复: 19
注册时间最后登录阅读权限10积分47精华0帖子
新手上路, 积分 47, 距离下一级还需 153 积分
关于I2S 线的制作。大家可以在这里讨论一下么?
关于大家推荐去淘宝买什么线材制作。
关于长度,
关于屏蔽,
等等问题。
注册时间最后登录阅读权限10积分103精华1帖子
新手上路, 积分 103, 距离下一级还需 97 积分
单晶银感觉比较好,用耳机线
注册时间最后登录阅读权限10积分103精华1帖子
新手上路, 积分 103, 距离下一级还需 97 积分
长度看你机器,如果用七类网线头的话,线的外径应该1MM左右,直径。
注册时间最后登录阅读权限10积分47精华0帖子
新手上路, 积分 47, 距离下一级还需 153 积分
einstein 发表于
单晶银感觉比较好,用耳机线
单晶银 耳机线 有没有 推荐的。?或者自己用过的。那就是说两个头都要自己做了?如果用网线 那就少很多麻烦。起码一边不用自己弄。其实我强烈厂家给个解决方案。因为毕竟玩家的知识和能力有限。才求助网络。
注册时间最后登录阅读权限10积分103精华1帖子
新手上路, 积分 103, 距离下一级还需 97 积分
IIS线,每个机器的线序基本上都不一样,所以可能大家都只能自己做了。
我用过的单晶银是118一米的,效果很好,不过这个对动手能力要求比较高。普通网线绝对达不到这种效果。
如果要用普通网线,可以看看解码器里面的I2S接口有没有一根排线链接的,有的话,直接调整排线的顺序就可以,不用动网线。
用针把排针挑出来重新插一下。
注册时间最后登录阅读权限10积分47精华0帖子
新手上路, 积分 47, 距离下一级还需 153 积分
einstein 发表于
IIS线,每个机器的线序基本上都不一样,所以可能大家都只能自己做了。
我用过的单晶银是118一米的,效果很 ...
不行。肯定要DIY 的 因为我的解码另一头是HDMI 的。。烦死了。。。那问题就是现在怎么做一根好线了。我可是 一点经验和知识都没有。不知道能不能请人做。淘宝有没有可以帮忙做线的地方?
注册时间最后登录阅读权限10积分47精华0帖子
新手上路, 积分 47, 距离下一级还需 153 积分
andyzha1 发表于
不行。肯定要DIY 的 因为我的解码另一头是HDMI 的。。烦死了。。。那问题就是现在怎么做一根好线了。我可 ...
其实。。享声的机内线是那种?我们用一样的机内线 不就好了?
注册时间最后登录阅读权限10积分103精华1帖子
新手上路, 积分 103, 距离下一级还需 97 积分
andyzha1 发表于
不行。肯定要DIY 的 因为我的解码另一头是HDMI 的。。烦死了。。。那问题就是现在怎么做一根好线了。我可 ...
你的解码器IIS接口是HDMI的吗?还有这样的?
注册时间最后登录阅读权限10积分103精华1帖子
新手上路, 积分 103, 距离下一级还需 97 积分
andyzha1 发表于
其实。。享声的机内线是那种?我们用一样的机内线 不就好了?
你可以问问淘宝上面,有个北京的 高斯音响,他们可以做I2S线,只要你把线序发给他。
注册时间最后登录阅读权限10积分47精华0帖子
新手上路, 积分 47, 距离下一级还需 153 积分
einstein 发表于
你的解码器IIS接口是HDMI的吗?还有这样的?
是的啊 W4S 的解码器。。各种不同定义 麻烦16位音频芯片PCM1801采集数据有问题?跪求大神帮忙啊 - 音频 - 德州仪器在线技术支持社区
16位音频芯片PCM1801采集数据有问题?跪求大神帮忙啊
发表于4年前
<input type="hidden" id="hGroupID" value="28"
我用stm32控制&a href=&.cn/product/cn/PCM1801& target=&extwin&>PCM1801&/a>,我的引脚设置如下(输出频率实测过,设置的应该没什么问题吧):比特时钟BCK=1.5Mhz,采样时钟LRCK=48khz,主系统时钟SCKI=12MHZ,FMT=0(左对齐),BYPAS=1(Bypass-through mode),现在的情况是输入电压一个为1.0V,一个为0V,输出数据DOUT观察有波形,可是我读出来的数据基本都在64217左右不停跳动,这个数据肯定是不对的,换了个输入电压依然如此,搞了好久,不懂啊~~?跪求大神帮帮忙。。。&/p>&div style=&clear:&>&/div>" />
16位音频芯片PCM1801采集数据有问题?跪求大神帮忙啊
此问题尚无答案
All Replies
我用stm32控制,我的引脚设置如下(输出频率实测过,设置的应该没什么问题吧):比特时钟BCK=1.5Mhz,采样时钟LRCK=48khz,主系统时钟SCKI=12MHZ,FMT=0(左对齐),BYPAS=1(Bypass-through mode),现在的情况是输入电压一个为1.0V,一个为0V,输出数据DOUT观察有波形,可是我读出来的数据基本都在64217左右不停跳动,这个数据肯定是不对的,换了个输入电压依然如此,搞了好久,不懂啊~~?跪求大神帮帮忙。。。
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
进士8825分
你的时钟配置是否精确? SCLK只支持256fs,384fs和512fs,如果使用48kHz采样率,SCKI应为12.288MHz,BCLK应为1.536MHz。
另外再检查一下参考电压引脚电容连接是否正确,电路有无错误?
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
您好,谢谢您的回复,我用的是stm32内置的I2S接口直接配置的,用示波器观察对比同步波形LRCK,DOUT,BCK,我从示波器上读出的数据一直是在64220左右跳动,能用IO模拟I2S协议么?(不过我觉得这样用定时器设置出来的频率应该会更加不准),是不是只能用MCU的自带的I2S接口来操作呢?
&I2S_InitStructure.I2S_Standard = I2S_Standard_MSB;//I2S_Standard_Phillips飞利浦标准I2S_Standard_MSB左高位对齐标准 &
&I2S_InitStructure.I2S_DataFormat = I2S_DataFormat_16b;//I2S_DataFormat_16bextended表示数据以32位包的形式传输
&I2S_InitStructure.I2S_MCLKOutput = I2S_MCLKOutput_E//打开MCLK &
&I2S_InitStructure.I2S_AudioFreq = I2S_AudioFreq_48k;//音频采样频率为48khz &&
&I2S_InitStructure.I2S_CPOL = I2S_CPOL_L &
&I2S_InitStructure.I2S_Mode = I2S_Mode_MasterRx; &&&
&I2S_Init(SPI2, &I2S_InitStructure);
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
进士8825分
推荐是使用器件自带的硬件I2S来操作,软件模拟的确会存在时钟不准的问题。STM32 I2S接收寄存器读到的值是多少?
你的示波器有I2S解码功能吗?
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
您好,谢谢您为我解答疑惑。
无论如何改变电压输入,STM32 I2S接收寄存器读到的值大致均在之间跳变,我用示波器实测的STM32自带硬件I2S输出LRCK,SCKI,BCK的频率的确是有少许偏移的(时钟不精准)。会不会是我设置的问题呢?我是将STM32设置为接收主机,设置为从机,由STM32提供LRCK,SCKI,BCK时钟给,然后读取输出的DOUT数据,示波器观察DOUT有波形,示波器没有解码功能,我是自己测LRCK,DOUT波形,每一个高电平LRCK含16位左通道数据,低电平LRCK含16位右通道数据,每一位数据DOUT约为1.5M,这样一个一个对应读出来的,然后和STM32接收寄存器对比,发现是一样的。应该是我的程序时序问题吧?
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
进士8825分
你确认一下下列语句是否真的使用的标准左对齐格式而非I2S MSB在先的格式:
&& I2S_InitStructure.I2S_Standard = I2S_Standard_MSB;//I2S_Standard_Phillips飞利浦标准I2S_Standard_MSB左高位对齐标准&
另外你再改成标准I2S格式试试(FMT=H)。
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
您好,当我输入1khz的方波,低电平-500mv,高电平500mv,计算采集到的数据在710mv左右和-710mv左右波动;输入1khz的方波,低电平-1000mv,高电平1000mv,计算采集到的数据在1400mv左右和-1400mv左右波动......均有偏差,输入幅值越小,偏差也越小,不知道是什么问题,想请问下您,这是程序上的问题么?
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
进士8825分
把你的输入电路发上来看看,是不支持负电压输入的,必须偏置到2.1V的中点电压,推荐最大输入峰峰值2.828V。
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
举人1535分
的SNR为93dB,而16bits 的理想SNR为98dB左右。这意味着LSB位被噪声覆盖,2nd LSB 和3rd LSB等也会受噪声影响。所以跳动是正常的。
是为音频设计的,它的线性误差小,但绝对精度较差。Datasheet上给的数值是+/-5% FSR (第二页DC ACCURACY一栏)。对于你的应用,感觉对绝对精度有较高要求。你可考虑TI的用于工业上的ADC,可能更能满足你的要求。
Best Regards
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
我是完全按照数据手册上P17的电路图做的板子,不过我实测参考电压VREF1=2.093V(约为2.1V),VREF2=2.975V,两个输入的参考电压可以不一致么?
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
如果是误差的话,应该也不会这么大吧?这样的数据偏差应该是不正常的,2nd LSB 和3rd LSB等会受噪声影响,跳动范围也几十mv就差不多了,是程序问题么?
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
进士8825分
两个参考电压是可以不一致的,因为它们的用途不一样,一个用于converter,一个用于确定满量程电压。你的应用是音频信号采集还是想用它来测量一般信号?
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
您能详细的给我说说吗?麻烦您了。
我准备应用的是音频信号采集,但是我不知道我的程序是否正确(即采集的数据是否正确),所以我现在用一般的信号作为输入(即方波)来验证程序的正确性,但是我所得的数据有问题。
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
进士8825分
关于两个参考电压datasheet p12第二段有描述,你可以参考一下。另外你直接给模拟输入端加大于0V小于2.828V的直流电压看看误差有多少?(去掉隔直电容)
另外我对STM32不是太了解,不确定你程序对STM32 I2S配置的是否完全正确而导致该问题。
根据datasheet给出的DC精度,增益误差最大5%满量程,2.828*0.05约为0.14V,即DC最大会有140mV的误差。
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
举人1535分
你量一下VinL和VinR的偏置电压,看是不是相等。如果不等,应该有问题。
正常值应该在2.1V左右。
Best Regards
You have posted to a forum that requires a moderator to approve posts before they are publicly available., 积分 220, 距离下一级还需 2780 积分
查看: 893|
有没有人用过K60的I2S功能,渡鸦的例程中没有相关例程,只有API,我自己尝试用了初始化可是一直调到了HardDefault里面
附上初始化的代码
void I2S_CFG_AND_PIN_INIT()
& & & & I2S_InitTypeDef I2S_InitS & & & & & & & & & & & &
& & & & /* I2S2*/
& & & & I2S_InitStructure.instance & & & &&&= 1; & & & & & & & & & & & & & & & & //这个结构体变量没有用& & & & & & & & & & & &
& & & & I2S_InitStructure.isMaster & & & &&&= (uint16_t)0x0200;//I2S_Mode_MasterTx ((uint16_t)0x0200)& & & & & & & & & & & & & & & &
& & & & I2S_InitStructure.isStereo & & & &&&= (uint16_t)0x0020;//I2S_Standard_LSB & & & & ((uint16_t)0x0020)& & & & & & & & & & & &
& & & & I2S_InitStructure.sampleRate = (uint32_t)44100;& & & & //I2S_AudioFreq_44k ((uint32_t)44100)& & & & & & & &
& & & & I2S_InitStructure.sampleBit&&= (uint16_t)0x0000;//I2S_DataFormat_16b((uint16_t)0x0000)& &
& & & & I2S_InitStructure.chl& & & & & & & &&&= 0;& & & & & & & & & & & & & & & & //I2S_CHL;&&
& & & & I2S_InitStructure.protocol& &= kSaiBusI2ST//I2S_Standard_LSB& &(uint16_t)0x0020)
& & & & PORT_PinMuxConfig(HW_GPIOE,&&6, kPinAlt4);//I2S0_MCLK
//& & & & PORT_PinMuxConfig(HW_GPIOE,&&7, kPinAlt4);//I2S0_MCLK
//& & & & PORT_PinMuxConfig(HW_GPIOE,&&8, kPinAlt4);//I2S0_MCLK
//& & & & PORT_PinMuxConfig(HW_GPIOE,&&9, kPinAlt4);//I2S0_MCLK
& & & & PORT_PinMuxConfig(HW_GPIOE, 10, kPinAlt4);//I2S0_TXD0
& & & & PORT_PinMuxConfig(HW_GPIOE, 11, kPinAlt4);//I2S0_TX_FS
& & & & PORT_PinMuxConfig(HW_GPIOE, 12, kPinAlt4);//I2S0_TX_BCLK
& & & & I2S_Init(&I2S_InitStructure);
, 积分 220, 距离下一级还需 2780 积分
, 积分 220, 距离下一级还需 2780 积分
该问题非常之细致,今天早上无意中发现的,根据这个问题的原因,可预见渡鸦开发板还会有其他一些问题
该问题非常之细致,今天早上无意中发现的,根据这个问题的原因,可预见渡鸦开发板还会有其他一些问题
你可以把你解决的问题分享出来,这样版主可以修改下(是bug的话),方便后来的人。
, 积分 220, 距离下一级还需 2780 积分
你可以把你解决的问题分享出来,这样版主可以修改下(是bug的话),方便后来的人。
其实是板子的芯片有问题,我不知道是不是就是我一个人是这样,我买的渡鸦开发板用的是MK60DN512ZVLQ10
而渡鸦支持的是VLQ10,其实以前我也注意到这个问题,网上关于带Z和不带Z也是含混不清,直到我调试了I2S模块才知道这两种芯片还是有很大差别,我在keil里面找了MK60DZ10的头文件发现I2S模块的寄存器宏和MK60D10有很大的差别虽然大小相同可是具体的名称和作用还是很不一样的,你可以自己看一下,还有就是两者的中断号对应的名称也有区别
, 积分 220, 距离下一级还需 2780 积分
模块可以直接调用,不过还有一个bug就是MCLK一直没有信号,对了,关于带Z的芯片我会上传一个新数据手册
22:20 上传
点击文件名下载附件
4.01 KB, 下载次数: 2
售价: 1 金钱 &[]
22:20 上传
点击文件名下载附件
4.76 KB, 下载次数: 2
售价: 1 金钱 &[]
模块可以直接调用,不过还有一个bug就是MCLK一直没有信号,对了,关于带Z的芯片我会上传一个新数据手册
楼主好细致,我先mark一下,点赞
, 积分 220, 距离下一级还需 2780 积分
这是带Z的用户手册
, 积分 220, 距离下一级还需 2780 积分
I2S_CR_I2SMODE(1)&&|& & //rcq Set 0,if you want to get MCLK PULSE you must set value in here
, 积分 105, 距离下一级还需 2895 积分
I2S_CR_I2SMODE(1)&&|& & //rcq Set 0,if you want to get MCLK PULSE you must set value in here
请问楼主还在嘛,可以一起交流一下K60的I2S的使用吗,谢谢
Powered by查看: 6051|回复: 27
请问STM32F中的I2S2口在主发模式下是不是有问题
用到了107的两组SPI口,当做I2S用的,调试了很久,I2S3作为从收模式,接收从AD过来的数据,波形正确,
但是I2S2作为主发模式,准备将这些数据送至DA时,无论怎么都不通,
主发模式下,是否要外部供一个时钟?请各位指点一二吧,实在是调试很久了,这个口子没有结果,
I2S3从收模式没有问题,配置如下:
& && &SPI_I2S_DeInit(SPI3);
& && &SPI_I2S_DeInit(SPI2);
& && &I2S_InitStructure.I2S_Standard = I2S_Standard_P
& && &I2S_InitStructure.I2S_DataFormat = I2S_DataFormat_24b;
& && &I2S_InitStructure.I2S_MCLKOutput = I2S_MCLKOutput_E
& && &I2S_InitStructure.I2S_AudioFreq = I2S_AudioFreq_48k;
& && &I2S_InitStructure.I2S_CPOL = I2S_CPOL_L
& && &/* I2S3 configuration */
& && &I2S_InitStructure.I2S_Mode = I2S_Mode_SlaveRx;
& && &I2S_Init(SPI3, &I2S_InitStructure);
& && &I2S_InitStructure.I2S_Standard = I2S_Standard_P
& && &I2S_InitStructure.I2S_DataFormat = I2S_DataFormat_24b;
& && &I2S_InitStructure.I2S_MCLKOutput = I2S_MCLKOutput_E
& && &I2S_InitStructure.I2S_AudioFreq = I2S_AudioFreq_48k;
& && &I2S_InitStructure.I2S_CPOL = I2S_CPOL_L
& && &/* I2S2 configuration */
& && &I2S_InitStructure.I2S_Mode = I2S_Mode_MasterTx;
& && &I2S_Init(SPI2, &I2S_InitStructure);
& && &/* Enable the I2S3 RxNE interrupt */
& && &SPI_I2S_ITConfig(SPI3, SPI_I2S_IT_RXNE, ENABLE);
& && &/* Enable the I2S2 TxE interrupt */
& && &SPI_I2S_ITConfig(SPI2, SPI_I2S_IT_TXE, ENABLE);
& && &/* Enable the I2S3 */
& && &I2S_Cmd(SPI3, ENABLE);
& && &/* Enable the I2S2 */
& && &I2S_Cmd(SPI2, ENABLE);
GPIO配置:
void GPIO_Configuration(void)
&&GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);/*JTAG+SW完全禁止*/
&&GPIO_InitTypeDef GPIO_InitS
&&/* Configure SPI2 pins: CK-PB13, WS-PB12 and SD-PB15 ---------------------*/
&&GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_15;
&&GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
&&GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;/*I2S2作为主发,数据复用推挽输出*/
&&GPIO_Init(GPIOB, &GPIO_InitStructure);
& & /* Configure SPI2: MCK PC6,输出时钟-----------------------------*/
&&GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
&&GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
&&GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
&&GPIO_Init(GPIOC, &GPIO_InitStructure);
&&/*I2S3 Configuration is right*/
&&/* Configure SPI3 pins: CK-PB3 and SD-PB5 -------------------------*/
&&GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_5;
&&GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
&&GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IN_FLOATING;
&&GPIO_Init(GPIOB, &GPIO_InitStructure);
&&/* Configure SPI3 pins: WS-PA15 -----------------------------------------*/
&&GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
&&GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
&&GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IN_FLOATING;
&&GPIO_Init(GPIOA, &GPIO_InitStructure);
&&/* Configure SPI3: MCK PC7,不工作,可以作为普通GPIO,可以不配置*/
&&GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
&&GPIO_Init(GPIOC, &GPIO_InitStructure);
昨天看了一下别人做SPI的,我把I2S2的GPIO模式改为GPIO_Mode_Out_PP,也还是不行,刚刚看了下,说STM32的I2S口有些bug,不知道各位碰到过没,这个I2S2口作为主发是不是有问题,请各位帮忙指教
有哪位供个主模式的配置,谢谢
同样的问题啊,我也是,调了半个多月了,I2S还是没有信号输出,求高人指点,帮帮我这个菜鸟吧,我的程序跟楼主的差不多,不知道楼主解决了没有!?我哭!
回复【2楼】elvyis
-----------------------------------------------------------------------
我用示波器测试了,到今天已经快一个月了,真的没有结果,I2S2主发没有反应,
对了,你能否贴上代码,咱们一起讨论下,谢谢啦
回复【3楼】sunshine001&&
-----------------------------------------------------------------------
加我QQ&&来讨论下吧,实在没办法了。我看了论坛里的一些I2S的,感觉一定是有人配置出来了,怎么我们就搞不出来呢。我的代码可以说跟你一模一样。。。
回复【4楼】elvyis
-----------------------------------------------------------------------
好的,谢谢啦
怎么没有兄弟来解答一下 呢?完全没头绪,下面的是我时钟使能代码:
void RCCI2S_Configuration(void){
& && & RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC, ENABLE);
& & & & RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);
& & & & RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
& & & & RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);// RCC_APB2Periph_AFIO&&
回复【6楼】elvyis
-----------------------------------------------------------------------
我这边硬件是直接从芯片107出的线,中间没加什么电阻等,正想是不是硬件连接有问题?
对了,你如果是用I2S3,不知道你那是不是,就是和JTAG重用管脚的那个,记得Remap,把JTAG禁掉
回复【7楼】sunshine001&&
-----------------------------------------------------------------------
唉,禁用了还是不行!怎么高手还不出来赐教一下呢?干看着我们啊,救命!
回复【7楼】sunshine001&&
-----------------------------------------------------------------------
/archiver/?tid-5710.html
可以看下这个帖子,给了我一定的思路,还是从时钟出发,要选中自己的型号,条件编译才能适用!!
回复【9楼】elvyis
-----------------------------------------------------------------------
兄弟,你搞好了没,给点提示
回复【9楼】elvyis
-----------------------------------------------------------------------
看了下,就是把stm32f10x.h中的宏定义检查下,其实107也可以当做高密度的,或者是CL型,还有就是修改倍频系数为3,如果HSE是25M的话,准备下周测试下,板子没在手头了
回复【11楼】sunshine001&&
-----------------------------------------------------------------------
搞好了IIS3主发送,但是IIS2还是没有检测到波形,代码如下。跟你的差不多。。
-----------------------------------------------------------------------
#include &stm32f10x.h&
#include &GLCD.h&
#include &USART.h&
void GPIO_Configuration(void)
&&GPIO_InitTypeDef GPIO_InitS
//&&GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);/*JTAG+SW完全禁止*/
&&/* Disable the JTAG interface and enable the SWJ interface */
&&GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
&&/* Configure SPI2 pins: CK-PB13, WS-PB12 and SD-PB15 ---------------------*/
&&GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_15;
&&GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
&&GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;/*I2S2作为主发,数据复用推挽输出*/
&&GPIO_Init(GPIOB, &GPIO_InitStructure);
& & /* Configure SPI2: MCK PC6,输出时钟-----------------------------*/
&&GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
&&GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
&&GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
&&GPIO_Init(GPIOC, &GPIO_InitStructure);
/* Configure I2S3 (SPI3) pins: MCLK */
& & GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
& & GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
& & GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
& & GPIO_Init(GPIOC, &GPIO_InitStructure);
& & /* Configure I2S3 (SPI3) pins: BCLK and ADCDAT */
& & GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_5;
& & GPIO_Init(GPIOB, &GPIO_InitStructure);
& & /* Configure I2S3 (SPI3) pins: ADCLRC (WS) */
& & GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
& & GPIO_Init(GPIOA, &GPIO_InitStructure);
/**********************************/
& & & & /* Configure IO connected to LD1, LD2, LD3 and LD4 leds *********************/& & & &
& & & & GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11;
&&& & & & GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
&&& & & & GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
&&& & & & GPIO_Init(GPIOD, &GPIO_InitStructure);
& & & & /*&&Configure IO connected to BeeP&&*/
& & & & GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
&&& & & & GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
&&& & & & GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
&&& & & & GPIO_Init(GPIOB, &GPIO_InitStructure);
& && & & & /* Configure USART1 Tx (PA.09) as alternate function push-pull */
&&& & & & GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
&&& & & & GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
&&& & & & GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
&&& & & & GPIO_Init(GPIOA, &GPIO_InitStructure);
&&& & & & /* Configure USART1 Rx (PA.10) as input floating */
&&& & & & GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
&&& & & & GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
&&& & & & GPIO_Init(GPIOA, &GPIO_InitStructure);
void I2S_Configuration(void){
& & & && &
& && &I2S_InitTypeDef I2S_InitS
& && &SPI_I2S_DeInit(SPI3);
& && &SPI_I2S_DeInit(SPI2);
& & /* I2S peripheral configuration */
& & I2S_InitStructure.I2S_Standard = I2S_Standard_P
& & I2S_InitStructure.I2S_DataFormat = I2S_DataFormat_24b; /* I also tried it with 32b... nothing */
& & I2S_InitStructure.I2S_MCLKOutput = I2S_MCLKOutput_E
& & I2S_InitStructure.I2S_AudioFreq = I2S_AudioFreq_8k;
& & I2S_InitStructure.I2S_CPOL = I2S_CPOL_L
& & I2S_InitStructure.I2S_Mode = I2S_Mode_MasterRx;
& & I2S_Init(SPI3, &I2S_InitStructure);
& && &I2S_InitStructure.I2S_Standard = I2S_Standard_P
& && &I2S_InitStructure.I2S_DataFormat = I2S_DataFormat_24b;
& && &I2S_InitStructure.I2S_MCLKOutput = I2S_MCLKOutput_E
& && &I2S_InitStructure.I2S_AudioFreq = I2S_AudioFreq_48k;
& && &I2S_InitStructure.I2S_CPOL = I2S_CPOL_L
& && &/* I2S2 configuration */
& && &I2S_InitStructure.I2S_Mode = I2S_Mode_MasterTx;
& && &I2S_Init(SPI2, &I2S_InitStructure);
& && &/* Enable the I2S3 RxNE interrupt */
& && &SPI_I2S_ITConfig(SPI3, SPI_I2S_IT_RXNE, ENABLE);
& && &/* Enable the I2S2 TxE interrupt */
& && &SPI_I2S_ITConfig(SPI2, SPI_I2S_IT_TXE, ENABLE);
& && &/* Enable the I2S3 */
& && &I2S_Cmd(SPI3, ENABLE);
& && &/* Enable the I2S2 */
& && &I2S_Cmd(SPI2, ENABLE);
回复【12楼】elvyis&&
-----------------------------------------------------------------------
//系统中断管理
void NVIC_Configuration(void)
&&& & & & /* Configure the NVIC Preemption Priority Bits */&&
&&& & & & NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
& & & & #ifdef&&VECT_TAB_RAM&&
& & & && &/* Set the Vector Table base location at 0x */
& & & && &NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
& & & & #else&&/* VECT_TAB_FLASH&&*/
& & & && &/* Set the Vector Table base location at 0x */
& & & && &NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);& &
& & & & #endif
//配置系统时钟,使能各外设时钟
void RCC_Configuration(void)
& & & & SystemInit();& & & &
& & & & RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA
& && && && && && && && && &|RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC
& && && && && && && && && &|RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE
& & & & & & & & & & & & & & & & & & & & & & & && & |RCC_APB2Periph_ADC1&&| RCC_APB2Periph_AFIO
& && && && && && && && && &|RCC_APB2Periph_SPI1, ENABLE );
&&// RCC_APB2PeriphClockCmd(RCC_APB2Periph_ALL ,ENABLE );
& &&&RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4
& && && && && && && && && &|RCC_APB1Periph_USART3|RCC_APB1Periph_TIM2& & & && && && && && && && && && &
& && && && && && && && && &, ENABLE );
& & & &&&RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);
& & & &&&RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI3, ENABLE);
& & & &&&RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
void InitDis(void)
& &/* LCD Module init */
& &GLCD_init();
& &GLCD_clear(White);
& &GLCD_setTextColor(Blue);
& &GLCD_displayStringLn(Line1, && &&&FireBull&);
& &GLCD_displayStringLn(Line2, && &GPIO example&);
& &GLCD_setTextColor(Red);
//配置所有外设
void Init_All_Periph(void)
& & & & RCC_Configuration();& & & &
& & & & InitDis();
& & & & GPIO_Configuration();
& & & & I2S_Configuration();
& & & & NVIC_Configuration();
& & & & USART1_Configuration();
& & & & USART1Write((u8*)&& & FireBull&&GPIO_example&,sizeof(&& & FireBull&&GPIO_example&));
void Delay(vu32 nCount)
&&for(; nCount != 0; nCount--);
int main(void)
& & & & Init_All_Periph();
& & & & while(1)
&&& & & & {
& & & & & & /* Turn on LD2 and LD3 */
& & & & & & GPIO_SetBits(GPIOD, GPIO_Pin_8);
& & & & & & /* Turn off LD1 */
& & & & & & GPIO_ResetBits(GPIOD, GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11);
& & & & & & /* Insert delay */
& & & & & & Delay(0xEFFFF);
& & & & & & /* Turn on LD2 and LD3 */
& & & & & & GPIO_SetBits(GPIOD, GPIO_Pin_9);
& & & & & & /* Turn off LD1 */
& & & & & & GPIO_ResetBits(GPIOD, GPIO_Pin_8 | GPIO_Pin_10 | GPIO_Pin_11);
& & & & & & /* Insert delay */
& & & & & & Delay(0xEFFFF);
& & & & & & /* Turn on LD4 */
& & & & & & GPIO_SetBits(GPIOD, GPIO_Pin_10);
& & & & & & /* Turn off LD2 and LD3 */
& & & & & & GPIO_ResetBits(GPIOD, GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_11);
& & & & & & /* Insert delay */
& & & & & & Delay(0xEFFFF);
& & & & & & /* Turn on LD4 */
& & & & & & GPIO_SetBits(GPIOD, GPIO_Pin_11);
& & & & & & /* Turn off LD2 and LD3 */
& & & & & & GPIO_ResetBits(GPIOD, GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10);
& & & & & & /* Insert delay */
& & & & & & Delay(0xEFFFF);
& & & & & & GPIO_ResetBits(GPIOD, GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10);
&&& & & & }
回复【13楼】elvyis
-----------------------------------------------------------------------
辛苦啦!好像你的I2S3是主模式收吧,
& & I2S_InitStructure.I2S_Mode = I2S_Mode_MasterRx;
& & I2S_Init(SPI3, &I2S_InitStructure);
那现在应该是主收,从收都没问题了,
刚刚我去测试了波形,神舟IV的板子的音乐播放器是I2S2主发模式,有波形,但是频率是不对的,貌似为15K ,500K,但是波形很标准,也有声音出来,这应该和那个什么48K,3.072M,12.288M相差太远了,不知道什么问题
我会继续测试这个主发模式的
回复【14楼】sunshine001&&
-----------------------------------------------------------------------
哈哈,对!是 IIS3主收,不知道主发送有没有问题?
唉&&现在没串口用,ulink又用不了,不能测试了。
回到公司才能测了。
******************************************
我现在要把IIS2跟IIS3都弄成主发送啊。
按照上面的代码IIS2还是不行,希望回到公司测试IIS3可以主发送就好了!
起码有个交代!
***********************************************
你的IIS2主发送有波形?可否把代码贴上来让我看下,谢谢啦
***************************************************
回复【15楼】elvyis
-----------------------------------------------------------------------
就是从神舟IV上的音乐播放器例程里看到的,我压缩下传上来,关于I2S主模式配置和GPIO配置在src文件夹下的i2s_codec.c中,可以看到配置信息
顺便说下,神舟IV给的这个WAV播放器编译不了,有错误,少了个函数,我正在学习做MP3,呵呵
点击此处下载
(原文件名:26、音乐播放器.rar)
回复【15楼】elvyis
-----------------------------------------------------------------------
一起学习交流啊,呵呵
107没有用过,不敢提出建议。不过提醒一句:STM32F103的I2S配置好之后,相关时钟不会马上有输出,你要不断地发送数据才会有时钟和数据输出。祝你好运
107没有用过,不敢提出建议。不过提醒一句:STM32F103的I2S配置好之后,相关时钟不会马上有输出,你要不断地发送数据才会有时钟和数据输出。祝你好运
103的话, 回复【16楼】sunshine001
回复【15楼】elvyis&&
-----------------------------------------------------------------------
就是从神舟iv上的音乐播放器例程里看到的,我压缩下传上来,关于i2s主模式配置和gpio配置在src文件夹下的i2s_codec.c中,可以看到配置信息
顺便说下,神舟iv给的这个wav播放器编译不了,有错误,少了个函数,我正在学习做mp3,呵呵
点击此处下载&&(原文件名:26、音乐播放器.rar)
-----------------------------------------------------------------------
既然是做MP3, 直接用103的I2S3配置成slave, codec为master, 出声如此简单.
回复【18楼】mowin 雾湾
-----------------------------------------------------------------------
回复【20楼】cheungman
-----------------------------------------------------------------------
好的,我会试试
回复【19楼】mowin 雾湾
107没有用过,不敢提出建议。不过提醒一句:stm32f103的i2s配置好之后,相关时钟不会马上有输出,你要不断地发送数据才会有时钟和数据输出。祝你好运
-----------------------------------------------------------------------
mowin用103做播放器的, 搞得怎样了? 上次那个I2S3问题搞定没有?
回复【18楼】mowin&&雾湾
-----------------------------------------------------------------------
哈哈,太感谢了。原来是这样,这两天回学校去了,所以现在才回。mowin可以说提出了要点啊,不知道各位都弄出来没。
回复【24楼】elvyis
-----------------------------------------------------------------------
我用神舟板子上的音乐播放器是有数据发送的,也有很正规波形,奇怪的是频率不是想象的那个值而已,而且移植修改之后,没有了,估计是哪个细节没有处理好
回复【25楼】sunshine001&&
-----------------------------------------------------------------------
你要的频率是多少,实际的又是多少?
Mark, 正在弄i2s, 也是没有数据出来.
阿莫电子论坛, 原"中国电子开发网"

我要回帖

更多关于 火影忍者问题bug漏洞 的文章

 

随机推荐