MEME麦克风读取数据问题
1参考资料
参考资料为附件ADMP441_cn.pdf
2主要参数和时序
2.1参数
接口:数字I2S接口,24-bit数据
SCK :I2S接口的串行数据时钟引脚。
SD :I2S接口的串行数据输出引脚。
WS :I2S接口的串行数据字选择引脚。
电源电压:1.8 V < VDD < 3.3 V。
数据格式:从机串行数据端口的格式为I2S 24-bit二进制补码。
默认的数据格式为I2S (二进制补码),MSB 优先。
2.2时序说明:
图1 硬件连接图
图2立体声输出I2S时序图
从机串行数据端口的格式为I2S 24-bit二进制补码。每个WS立体声数据帧对应64 个SCK 周期(fSCK = 64 × fWS)。;每个数据字必须对应32个SCK 周期。L/R控制引脚决定
ADMP441从左通道还是右通道输出数据。
图3 fSCK=44KHz时fpga采集到的24bit数据 7FFD78h
图4 fSCK=44KHz时fpga采集到的24bit数据 047503h
根据硬件连接和所给时序,通过fpga进行验证。
(1) 当第25个时钟结束后,sd应该呈高阻态,但是之后的几个时钟,sd还有变化。
(2) 采集到的24bit数据,前8位不是f就是0,无论声音的高与低。使得采集的电压很小。
可能的原因:
(1) 传感器故障,(但是sd一直有返回值,应该没坏)
(2) Fpga时序写的有问题。
图5 fSCK=44KHz时stm32采集数据
图中D3:WS;D2:SCK;D1:SD。采集到的数据和fpga相似,很小。
个人感觉:数据字对应32个SCK 周期的前10个周期返回的SD值有问题。
哪位大神看出来什么问题或者有什么建议,望不吝赐教哈。。