【CH32v208 单片机试用的测评】2. MPU6050陀螺仪移植开发测试
感谢沁恒科技与发烧友网给以Ch32V208单片机
开发板的试用测评。CH32V208系列是基于32位RISC-V设计的无线型微控制器,配备了硬件堆栈区、快速中断入口,在标准RISC-V基础上大大提高了中断响应速度。搭载V4C内核,加入内存保护单元,同时降低硬件除法周期。片上集成2Mbps低功耗蓝牙BLE 通讯模块、10M以太网MAC+PHY模块、USB2.0全速设备+主机/设备接口、CAN控制器等。有丰富的接口和控制器,这次就使用该开发板连接MPU6050陀螺传感器来进行移植测试。
一、MPU6050简介
MPU-6000(6050)的角速度全格感测范围为±250、±500、±1000与±2000°/sec (dps),可准确追踪快速与慢速动作,并且,用户可程式控制的加速器全格感测范围为±2g、±4g±8g与±16g。产品传输可透过最高至400kHz的IIC或最高达20MHz的SPI(MPU-6050没有SPI)。MPU-6000可在不同电压下工作,VDD供电电压介为2.5V±5%、3.0V±5%或3.3V±5%,逻辑接口VDDIO供电为1.8V± 5%(MPU6000仅用VDD)。MPU-6000的包装尺寸4x4x0.9mm(QFN),在业界是革命性的尺寸。其他的特征包含内建的温度感测器、包含在运作环境中仅有±1%变动的振荡器。
二、硬件连接
MPU6050是通过I2C连接MCU一般可以使用GPIO通过软件模拟I2C或者直接使用MCU的I2C接口控制器。CH32V208开发板具有I2C的接口,这里使用CH32V208的I2C接口连接MPU6050,连接图如下:
连接实物时,需要注意,把MPU6050接线焊牢固,因为测试发现通讯因连接不佳松动会发生中断,并且无法自动连接传输数据,必须重新初始化创感器模块。
最后连接的实物照片如下:
最后检查连线连接正确牢固,上电可以看到MPU6050
电源LED亮起。
三、 MPU6050软件移植开发
连接好硬件接线后,就可以移植测试MPU600的软件,因为CH32V208是32位RISC-V的MCU与
STM32芯片比较类似,因此可以找一个STM32下的MPU6050的驱动进行移植。
因为MPU6050是基于I2C的通讯,在软件工程上,这里就以CH32V208开发板所带的I2C测试用例为基础,来整合MPU6050的代码,首先复制一个I2C的项目代码,然后用 MRS开发工具打开,在此基础上进行修改开发:
复制I2C工程后改工程名 MPU6050,首先修改CH32V20x芯片具体型号定义 ,修改/MPU6050/Peripheral/inc/ch32v20x.h文件,根据开发板上的芯片信号,修改宏定义CH32V20x_D8W
然后修改工程的连接配置脚本,RAM与Flash的配置:
然后点buildproject,即可生成 elf 文件。
在把stm32下的mpu6050.c 和 mpu6050.h文件复制到user目录下,刷新工程,可以看到代码已经在项目管理器里可以看到:
根据工程环境,修改必要的头文件,宏定义,以及相关函数接口,即可完成代码的合并并编译通过。
修改项目的处理器主频为120M,这个主频参数可以根据需要随意设置,在连接MPU6050时,多个主频都可以正确运行。在这里设置120,是考虑该工程后续将继续扩展网络传输,从网络传输的资料看,设定为120M最为合理。
在修改mpu6050初始化代码,设定I2C的
通信速率为100K,经过验证,这个速率不能设定太高,设定太高后,会导致取不到数据。
在板上测试,发现没有信息输出,经过一番调试,发现需要修改一下以下两处,即可完成移植了。把MPU6050源代码的读写寄存器基地址,改为预定义的宏,如下:
然后在 main.c 文件里,加上调用mpu6050的接口的测试代码,如下:
四、板上运行测试
修改完代码编译完成后,下载到开发板上,即可以在串口终端你看到mpu6050输出的原始姿态数据信息:。
在运行中,转动MPU6050,可以都看到数据发生明显的变化,说明MU6050姿态数据获取成功。
五、测试总结
通过在Ch32V208单片机上移植MPU6050陀螺仪传感器,过程总体非常顺利,如果有SRM32其它平台下的代码,只要简单的适配系统接口基本上,就能很快完成移植。再配置好系统主频,以及处理器型号信息,以及I2C接口后,就能够很方便的进行移动开发工作。而开发板所带有的丰富的接口应用的例子也对外设的移植开发提供了参考。