平衡车----关于模拟IIC

做平衡车的时候,我是自己画的主控板。刚开始对于模拟IIC的了解过于浅显----随便一个普通I/O口都能拿来用。因此,当MPU6050初始化一直不成功的时候,把我搞蒙了。后来得知这里还涉及到两个寄存器:CRH和CRL寄存器。

1、CRH和CRL寄存器用来管理输入输出模式和输入输出方向。

2、CRH对应GPIOX(A~G)的高八位(Pin15–Pin8),
CRL对应GPIOX(A~G)的低八位(Pin7–Pin0)。

下面给出一个例子

//IO方向设置
#define SDA_IN()  {GPIOB->CRH&=0XFFFFFF0F;GPIOB->CRH|=(u32)8<<4;}
#define SDA_OUT() {GPIOB->CRH&=0XFFFFFF0F;GPIOB->CRH|=(u32)3<<4;}

//IO操作函数	 
#define IIC_SCL    PBout(8) //SCL
#define IIC_SDA    PBout(9) //SDA	 
#define READ_SDA   PBin(9)  //输入SDA 

如果要将GPIO_Pin_11用于IIC_SDA 的引脚,IO方向设置应改为:

#define SDA_IN()  {GPIOB->CRH&=0XFFFF0FFF;GPIOB->CRH|=(u32)8<<12;}
#define SDA_OUT() {GPIOB->CRH&=0XFFFF0FFF;GPIOB->CRH|=(u32)3<<12;}

(当成快餐吧,如果想要具体地了解模拟IIC,还是看看别人的讲解吧。)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值