完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我想利用这个学期提高我的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, " %irn", 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。肯定是转换错误,但我仍然无法看到错误的确切位置。 |
|
相关推荐
5个回答
|
|
假设在编译代码时,没有错误或警告?它只是不按你需要的方式工作?你是否已逐步调试代码?
|
|
|
|
学习如何编程不是学习语言,而是学习如何解决问题和利用算法。尝试逐步调试代码
|
|
|
|
在逐步执行代码时,请查看代码的交互。
|
|
|
|
使用调试并在代码中添加断点
|
|
|
|
调试和断点是开发工作代码的重要部分
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1307 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1234 浏览 3 评论
2313 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1404 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1834 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-30 09:05 , Processed in 0.707936 second(s), Total 81, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号