28027软件I2C驱动MPU6050
重点:这部分代码由stm32f103的原四轴项目整体迁移。但是stm32的IO口可使能开漏输出,但包括28x系列的TI芯片只支持推挽输出。
解决方案: 对于SDA与SCL口:需在置高电平之后改变IO口方向为输入(读总线),而在置低电平前改变方向为输出(写总线)
当然在改变方向时需解除与开启保护(EALLOW与EDIS)
/******************************************************************************
宏定义
*******************************************************************************/
#define SCL_H {GpioDataRegs.GPBSET.bit.GPIO33 = 1;I2C_delay(3);\
EALLOW;GpioCtrlRegs.GPBDIR.bit.GPIO33=0;EDIS;} //SCL高电平
#define SCL_L {EALLOW;GpioCtrlRegs.GPBDIR.bit.GPIO33=1;EDIS;\
GpioDataRegs.GPBCLEAR.bit.GPIO33 = 1;I2C_delay(3);} //SCL低电平
#define SDA_H {GpioDataRegs.GPBSET.bit.GPIO32 = 1;I2C_delay(3);\
EALLOW