[应用相关] 如何解释MPU-9255发送的值

[复制链接]
1143|7
 楼主| Thorald 发表于 2018-9-27 21:03 | 显示全部楼层 |阅读模式
MPU, TE, ST, I2c, ce
我想利用这个学期提高我的C技能,并且我学会了如何使用I2C以及如何与MPU9255进行通信,但是我面临的最后一个麻烦是传感器返回错误的值。返回的值从0浮动到65000,但不是线性的。
我认为那是因为我对我的代码上的数据类型或字节合并产生了一些混淆。有人可以帮我指点一下代码吗?

uint8_t Test[] = "\n AccelX: \n";
    HAL_UART_Transmit(&huart1,Test,sizeof(Test),100);

    //SET X_HIGH REGISTER ADDRESS
    i2cData = 0x3B;
    HAL_I2C_Master_Transmit(&hi2c1, adressMPU, &i2cData, 1, 100);

    //REQUEST 6 BYTES OF DATA (ACCEL X, Y AND Z)
    HAL_I2C_Master_Receive(&hi2c1, adressMPU, receive_buffer, 6, 100);

    AccelX = (char)receive_buffer[0]<<8 | (char)receive_buffer[1];
    AccelY = (char)receive_buffer[2]<<8 | (char)receive_buffer[3];
    AccelZ = (char)receive_buffer[4]<<8 | (char)receive_buffer[5];

    //PRINTA NA SERIAL 1
    len = sprintf(buffer, " %i\r\n", AccelX); //sprintf will return the length of 'buffer'  
    HAL_UART_Transmit(&huart1, (uint8_t *)buffer, len, 1000);  

    HAL_Delay(500);
复制代码
更新:
我只注意到一件事:从0到16768,传感器测量是正确的,但是当我在轴上方时,传感器从65536变为~49000,应该是从0到-16768。肯定是转换错误,但我仍然无法看到错误的确切位置。

Bjorn 发表于 2018-9-27 21:36 | 显示全部楼层
假设在编译代码时,没有错误或警告?它只是不按你需要的方式工作?你是否已逐步调试代码?
Rollo 发表于 2018-9-27 21:52 | 显示全部楼层
学习如何编程不是学习语言,而是学习如何解决问题和利用算法。尝试逐步调试代码
Rangar 发表于 2018-9-27 22:04 | 显示全部楼层
在逐步执行代码时,请查看代码的交互。
Stannis 发表于 2018-9-27 22:18 | 显示全部楼层
使用调试并在代码中添加断点
Brand2 发表于 2018-9-27 22:59 | 显示全部楼层
调试和断点是开发工作代码的重要部分
八层楼 发表于 2018-10-10 11:15 | 显示全部楼层
确认一下你发送的是什么
heimaojingzhang 发表于 2018-10-10 12:43 | 显示全部楼层
示波器波形看看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

183

主题

849

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部