打印
[应用相关]

如何解释MPU-9255发送的值

[复制链接]
1014|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 | 只看该作者
在逐步执行代码时,请查看代码的交互。

使用特权

评论回复
5
Stannis| | 2018-9-27 22:18 | 只看该作者
使用调试并在代码中添加断点

使用特权

评论回复
6
Brand2| | 2018-9-27 22:59 | 只看该作者
调试和断点是开发工作代码的重要部分

使用特权

评论回复
7
八层楼| | 2018-10-10 11:15 | 只看该作者
确认一下你发送的是什么

使用特权

评论回复
8
heimaojingzhang| | 2018-10-10 12:43 | 只看该作者
示波器波形看看

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

183

主题

849

帖子

1

粉丝