我用的板子是GD32F310,是我师弟自己打板子,然后手焊的,硬件部分全程他操刀,我只是在软件上debug,这就导致了后面沟通如果不及时的话,我俩就会出现一些信息差上的问题。
这块tof出厂时已经按照标准固件已经烧录完成了,我们能做的就是把它的库移植过来,整合到我们的代码里去,也就是说把能操控它的一些api移植到我们的代码里去。
首先推荐大家去看下方的文章(以及作者开源的代码),已经讲的很清楚了,我也只是在此基础上简单补充。
首先说一下作者省略掉的一些地方,一个就是把文件添加完后,记得在Keil里面的配置路径那里要把这个头文件夹加进去:
其次就记录一下我移植中debug的过程,移植烧录后,打断点发现卡在这个位置
GD32F3x0的手册上是这样解释的
也就是说我发送的从机地址压根没发出去。仔细检查配置之后排除软件问题,找师弟帮忙检查硬件电路,发现有两个器件没有焊接上
然后火急火燎的找他帮忙焊接上之后,用万用表检查发现电路已通。
然后去重新烧录发现还是卡在原来的位置,师弟问我是不是引脚配置错误,我自负的认为这种低级错误不可能出现在我身上,但还是点开了配置部分的代码跟他对了一下,这一对就发现了问题,这个芯片留了两套I2C接口,我配置的是另一套(I2C1),他电路上实现的是这一套(I2C0),重新配置之后,可以正常测数据了。
反思总结:
1.在软件检查不出问题的时候应该第一时间用万用表去检查一下i2c的通路,尤其是问题出现在第一步,连从机地址都发送不出去的时候。
2.人可以自信,但不能自负。