这段时间搞毕设,结果被这个bug折磨两天.

我先简略介绍一下,我是用蓝牙模块连接手机放歌 然后i2s输入给主控,正常来说cubemx里面需要配置的就是半双工主机接收 如下图  这里cubemx的关于数据的管脚有两个 一个是sdi 一个是sdo,你配置输入模式,它竟然给你用的是sdo 也就是我们主控i2s数据输出引脚 而且你在下面的传输模式修改mode master receive还是transmit 都是这个管脚不会变

而之前我虽然注意到为什么我输入模式配置的管脚是sdo,但是没有多想,还是非常信任cubemx的 ,但是在被折磨两天后,我几乎用了各种方法,甚至对着数据手册 一位一位的修改它的控制寄存器。

结果就是让我心态大崩,最后没办法到处找资料,也看到有人说自己i2s传输的数据全为0,然后改成全双工就好了。我就回过头来看cubemx ,终于发现它在配置全双工的时候两个脚都配置,但是配置半双工的时候无论是输入还是输出,它都给你用sdo管脚,所以我之前再怎么改,引脚错了就都没用。

所以要想作为主机接受数据,尽管不需要输出,但是还是要配置全双工模式,才能把输入管脚sdi启动,剩下的就是正常按需求配置了。

配置完成,再连接对应线路,就可以正常运行了

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐