最近在研究MPU6050,但是MPU6050的底层驱动又不想自己写,那怎么办呢我就想到了去移植正点原子的代码,但是打开代码一看需要修改寄存器值 那意味着要去翻数据是手册,我这个人本身比较懒不想去翻,也为了以后不翻,于是乎我想到了自己动手写模拟IIC的代码。写的过程中我就发现一个问题为什么每次都要管脚切换方向非常麻烦(本人非常烦这一点),于是乎我就在想有没有办法不切换方向去读数据。最后我终于在野火的树上找到了这样一句话“STM32的管脚在输出模式下也可以读到数据”,起初我对这句话半信半疑于是我自己做了一波实验,把管脚配置成输出模式(推挽和开漏都配置了)结果真的能读到数据不过要使用函数GPIO_ReadInputDataBit去读IDR寄存器的值。用位带操作就是不行。然后抱着这个结果我就开始了写IIC。在这里对IIC协议不再介绍,毕竟网上大佬挺多的随便改都能找到协议的说明。我的代码最大的好处就是容易移植容易修改废话不多说了开始附上代码。
单片机源程序如下:
全部资料51hei下载地址:
i2c.zip
(1.82 KB, 下载次数: 31)
|