打印

STM32F105系列I2S SLAVE RX 收数错位问题

[复制链接]
5423|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
leino11121|  楼主 | 2009-12-30 08:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
MCU输出主时钟给音频ADC芯片,让ADC芯片工作在master 模式,产生standerd philips I2S格式(64FS,FS=48K),但从MCU端看,接收到的数据有错位情况。

举例:MCU I2S配置如下,I2S时钟误差为0,
I2S_InitStructure.I2S_Standard = I2S_Standard_Phillips;
I2S_InitStructure.I2S_DataFormat = I2S_DataFormat_32b;
I2S_InitStructure.I2S_MCLKOutput = I2S_MCLKOutput_Disable;
I2S_InitStructure.I2S_AudioFreq = I2S_AudioFreq_48k;
I2S_InitStructure.I2S_CPOL = I2S_CPOL_Low;
I2S_InitStructure.I2S_Mode = I2S_Mode_SlaveRx;
I2S_Init(SPI2, &I2S_InitStructure);
如果ADC连续发0x1234 5678,MCU接收到的数据有可能是这样的0x2345 6781 或者0x3456 0x7812,感觉是MCU I2S无视WS信号,只是用位时钟驱动移位寄存器,而造成错位。
沙发
香水城| | 2009-12-30 11:24 | 只看该作者
WS信号引脚的配置正确吗?

使用特权

评论回复
板凳
leino11121|  楼主 | 2009-12-30 11:56 | 只看该作者
三个引脚都配置成为GPIO_Mode_AF_PP,而且从MCU_WS也可以检测到48K方波

使用特权

评论回复
地板
leino11121|  楼主 | 2009-12-30 12:13 | 只看该作者
WS信号引脚的配置正确吗?
香水城 发表于 2009-12-30 11:24

三个引脚都配置成为GPIO_Mode_AF_PP,而且从MCU_WS也可以检测到48K方波

使用特权

评论回复
5
香水城| | 2009-12-30 12:21 | 只看该作者
请试试看把WS信号对应的引脚配置为浮空输入。

使用特权

评论回复
6
leino11121|  楼主 | 2009-12-30 13:17 | 只看该作者
请试试看把WS信号对应的引脚配置为浮空输入。
香水城 发表于 2009-12-30 12:21

刚刚试了一下,没有作用。

使用特权

评论回复
7
leino11121|  楼主 | 2009-12-31 09:26 | 只看该作者
没人理,大家没有遇到过相同的问题吗?

使用特权

评论回复
8
leino11121|  楼主 | 2010-1-3 13:31 | 只看该作者
香版主,可否帮我解决一下?

使用特权

评论回复
9
香水城| | 2010-1-3 13:49 | 只看该作者
对不起,我没有做过这样的接口,暂时帮不上你。

但是我发现你的配置好像有些问题:“MCU输出主时钟给音频ADC芯片,让ADC芯片工作在master 模式,产生standerd philips I2S格式(64FS,FS=48K)”。既然你的音频ADC芯片工作在主模式,那么应该是这个ADC芯片提供时钟,而不是MCU提供时钟才对呀,你再好好看看。

使用特权

评论回复
10
leino11121|  楼主 | 2010-1-3 15:31 | 只看该作者
对不起,我没有做过这样的接口,暂时帮不上你。

但是我发现你的配置好像有些问题:“MCU输出主时钟给音频ADC芯片,让ADC芯片工作在master 模式,产生standerd philips I2S格式(64FS,FS=48K)”。既然你的音频ADC芯 ...
香水城 发表于 2010-1-3 13:49

好的,我已经跟st的技术支持联系了。

解释一下:
adc芯片的主时钟是256fs(12.288KHz)。这个时钟是ADC的工作时钟,如果需要ADC工作,这个时钟是必须的。至于ADC做主模式还是做从模式,是针对I2S来说的,I2S接口的ws 和ck信号是谁提供的,谁就是I2S总线的主。

使用特权

评论回复
11
sinc_mark| | 2014-7-21 10:52 | 只看该作者
leino11121 发表于 2010-1-3 15:31
好的,我已经跟st的技术支持联系了。

解释一下:

LZ的问题解决了吗?后来是怎么解决的?我现在也在用I2S DMA采集,现在收到的数据不是错位,而是单步在配置DMA接收长度的地方才能看到有数据,不知道为何?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

47

帖子

0

粉丝