无法使用TI C2000 f28379d和Simulink从MPU6050读取数据金宝app
37次观看(过去30天)
显示旧的注释
你好,我试图使用TI C2000 f28379d与simulink从IMU 6自由度(MPU6050)读取数据(加速度计,陀螺仪和温度计)。金宝appMPU6050采用I2C方式,带有以下寄存器:
- 0x68: MPU-6050的I2C地址
- 0x6B: PWR_MGMT_1寄存器
- 0x3B(加速度xout_h) & 0x3C(加速度xout_l)
- 0x3D (accel_you_h) & 0x3E (accel_you_l)
- 0x3F (ACCEL_ZOUT_H) & 0x40 (ACCEL_ZOUT_L)
- 0x41 (TEMP_OUT_H) & 0x42 (TEMP_OUT_L)
- 0x43 (GYRO_XOUT_H) & 0x44 (GYRO_XOUT_L)
- 0x45 (gyro_you_h) & 0x46 (gyro_you_l)
- 0x47 (GYRO_ZOUT_H) & 0x48 (GYRO_ZOUT_L)
为了做到这一点,我修改了“德州仪器C2000处理器的嵌入式编码器支持包”:“c28x_i2c_sensor”提供的示例,使用以下金宝app逻辑:
- write 0 to register 0x6B:唤醒MPU-6050
- 读取寄存器0x3B(加速xout_h)
但我只读0(外部模式)。
电气连接:
- SDA: P104
- sci:施敏原著
我附上修改后文件的屏幕。
有什么办法可以帮助我吗?
谢谢。
0评论
接受的答案
Aditya Padmanabha
2018年5月24日
编辑:Aditya Padmanabha
2018年5月24日
你好,托马索,
我根据上面安东宁提供的模型,在F28379D LaunchPad上附上了BOOSTXL_SENSHUB上现有的MPU-9150的17a模型。该型号在外部模式下运行,有合适的COM端口。如果你想在ControlCard而不是LaunchPad上运行这个模型,你可能需要相应地修改时钟,I2C和SCI设置。
在这个模型中,我使用了函数调用方法对I2C发送和接收进行排序。您可能需要对MPY-6050传感器的配置进行其他更改。
我没有实现在这个模型中重置从传感器的逻辑,如果你需要这样做,你必须实现单独的逻辑。复位后确保从传感器工作在正常模式。如果没有复位逻辑,如果通信中断,您可能必须对传感器进行电源循环,并执行C2000板复位以将从传感器从睡眠模式中拉出来。
如果你在F28379D LaunchPad上运行,你可能需要做的另一件事是在主从之间为SDA和SCL引脚创建额外的电路,如图所示。这确保了F28379D LaunchPad和MPU-9150之间更强的上拉和稳定的I2C通信。
如果传感器模块中已经有上拉电阻,则可能不需要上拉电阻(2.2K欧姆)。但是F28379D发射台和传感器模块之间需要33欧姆系列电阻,没有这个电阻I2C通信不稳定,读取传感器数据时可能总是返回零。
我希望这对你们有帮助,
谢谢,
Aditya
1评论
Aditya Padmanabha
2018年5月25日
你好,托马索,
关于I2C故障问题的更多信息,导致TI E2E中F28379D发射台的问题https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/676372。金宝app
谢谢,
Aditya
更多答案(5)
安东尼
2018年5月11日
你好,托马索,
I2C块需要一个十进制格式的从I2C地址。你必须使用hex2dec('68')或104作为从地址寄存器。
此外,请确保在读取地址设置为“3B”和I2C接收请求之间等待以读取传感器数据,否则I2C接收请求将希望在前一个I2C传输结束之前执行。这就是“do{…”} while”子系统,您可以在示例中找到:c28x_i2c_eeprom/EEPROM Data Read。
避免等待的一种方法是首先发出I2C接收请求,然后为下一个I2C接收命中发送'3B'地址。你可以在init函数中处理第一个实例。
我希望这对你们有帮助,
祝你好运,
安东尼。
0评论
安东尼
2018年5月15日
附件是一个在MATLAB R2016b中为MPU-9150创建的模型,该模型存在于F28027发射台上的BOOSTXL-SENSHUB上。它也可以在外部模式下运行。我认为你可以直接复制块到你的模型。模型配置可能与您的不同。
我意识到MPU-9150使用与MPY-6050相同的地址,所以它应该非常接近。
您的函数调用方法可以很好地对执行进行排序,比我们在附带的模型中使用的块优先级更好。这是你可以做的一项改进。如上所述,有一种方法可以删除等待循环,这是另一种可能的改进。
我希望这对你们有帮助,
安东尼。
0评论
阿里Ozan
2018年8月12日
你好,tommaso serni;
我正在做一个类似的项目,我需要使用TI C2000 F28379D发射台从MPU6050读取陀螺仪数据。
你设法解决这个问题了吗?因为在另一个线程中,你说“在CPU1上:IMU 6自由度读取(I2CA),使用串行SCIA/SCIB和PWM输出伺服/ESC (ePWM1/ePWM2)”。如果你能找到解决办法,请帮助我。
致以最亲切的问候。