新手入门
- 积分
- 13
- 金钱
- 13
- 注册时间
- 2021-7-13
- 在线时间
- 5 小时
|
昨天还是前天,在论坛发了这个问题的求助,结果不知道为啥问题发出去只有标题,里面的详细内容没了,光剩个附件了。
我可能被大家看成伸手党了吧qaq
真不是啊,我详细内容说了好多前期实验的qaq
总之现在问题解决了,说一下我的思路,希望能帮到别人。
首先,我做了IIC访问EEPROM的实验,现象正确,这说明正点原子的IIC库代码没问题。
然后,我借来一块STM32F1精英板,这块板子有MPU6050的正点官方例程。我跑了下例程,现象正确,说明我的MPU6050和杜邦线都没坏。
然后,我开始将探索者MPU6050的代码移植到我的f4系统板上。
////////////////////////////////////////////////////////////////////
注意:下面的内容中少了很多图,因为加上图之后,系统说我文章太长。
全文我放附件里了。
////////////////////////////////////////////////////////////////////
一开始,读到的设备地址为0x00:
【这里有图】
经过检查发现,是因为GPIO初始化的时候,开错了时钟:
【这里有图】
修改过后,读到的设备地址是0xff:这可能是因为接线接错了,导致通信失败,或者是代码哪里不对。
找到隔壁大佬问了一下,他指出了我的一处错误:IIC改管脚有一处位带操作我没改(我是个没学过位带操作,成天瞎jb改代码的人)
【这里有图】
红框处应改为跟你的SDA管脚一致。我这里是9显然不对,应该改成5.
此时读到的是0xD1,也就是正确答案0x68左移了一位又加一
然后,又经过长时间的网上查找,发现有人建议修改IIC管脚初始化模式为开漏(例程为推挽),或者把上拉模式改成NOPULL模式。
我尝试了一下把推挽改为开漏,读出了地址。程序可以正常运行了。
【这里有图】
新的问题:
我和我同学都用正点最小板f4,都从探索者例程移植,用的同一款mpu6050.
他就只改管脚就行了,我却还要改推挽开漏,这是为什么? |
|