TMS320F28027学习笔记二

xiaoxiao2021-02-27  496

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;GpioCtrlRegs.GPBDIR.bit.GPIO32=0;EDIS;} //SDA高电平 #define SDA_L {EALLOW;GpioCtrlRegs.GPBDIR.bit.GPIO32=1;EDIS;\ GpioDataRegs.GPBCLEAR.bit.GPIO32 = 1;I2C_delay(3);} //SDA低电平 #define SDA_Read GpioDataRegs.GPBDAT.bit.GPIO32 //SDA读数据 其他I2C总线的读写都是通用协议(在不加延时情况下总线时钟约为400kHz)

附读出数据:

待续:1、280x系列的浮点计算库IQMATH的使用与时间测量(EKF滤波(如果可能实现),姿态解算...)

           2、 解决串口无法发送多位字节数据的问题

           3、解决MPU6050只有在烧写后第一次时才执行成功,后续复位调试初始化异常(这个很麻烦)

转载请注明原文地址: https://www.6miu.com/read-398.html

最新回复(0)