前言

最近关于MPU6050做了个小玩意,是关于DL1414显示管的,这个显示管挺有意思,能显示四位ASCII的字符,但是内置字库比较少,猜测是80年代把一些常用的字给做成了显示管,这样驱动显示一体,方便更换。

我做的这个现在还在最后的编写过程中,板子改了好几版,之前的版本因为强度和厚度没有达到预期而让重新规划。放张照片尝尝鲜:

采用TypeC接口 / STM32T8

MPU6050

首先,确定一下用MPU6050的步骤,因为我要用三轴的加速度,所以我要调用6050内部的dmp来确定 模块的Pitch、Roll、Yaw 三个数据,所以遵循了以下的步骤:

1.调用I2C

2.初始化MPU6050,初始化DMP

3.把获取的数据进行各种处理。

可以看到AD0用来更改从机地址然而,当我对上一个版本进行编程的时候,发现MPU6050和DS3231 的IIC地址冲突了,由于DS3231不能改从机地址,所以看到MPU6050的AD0可以更改从机地址时,心里想着还好,至少之后的工作路线不迷茫,还是有方向的。

看了很多关于修改从机地址的一些贴子,都是流于表面,仅仅是让AD0接 , 之后地址从 0x68改为 0x69进行了描述。

但是进过我测试,发现了三个要修改的地方,都是其他帖子里没有提到的。

寄存器

可以看到,WHO_AM_I寄存器的 0x68是1到7位,而AD0控制的是最后一位,即BIT1位,而不是帖子里说的最后一位BIT0。

11010000(H)—> 0xD0
11010010(H)—> 0xD2

更巧的是,不清楚MPU6050寄存器的初学者容易将寄存器地址和从机地址搞混,导致不输出dmp姿态角。例如 i2cRead(0x69,0x75,1,temp)这个函数,定义是 int i2cRead(uint8_t addr, uint8_t reg, uint8_t len, uint8_t *buf),在AD0接高电平的情况下,从机地址是 0x69,而不是默认的 0x68.

修改结构体

const struct hw_s hw={
  0x69,     //addr//这里修改为0X69
  1024,     //max_fifo
  118,     //num_reg
  340,     //temp_sens
  -521,     //temp_offset
  256     //bank_size
};

全局搜索这个结构体,修改提示处即可。

修改宏定义

在mpu6050.h头文件里可以找到这两条宏定义:

#define devAddr  0xD2    //AD0低电平时此处是0xD1
#define MPU6050_ADDRESS_AD0_LOW     0x68 // address pin low  (GND)
#define MPU6050_ADDRESS_AD0_HIGH    0x69 // address pin high (VCC)
#define MPU6050_DEFAULT_ADDRESS     MPU6050_ADDRESS_AD0_HIGH //修改成HIGH

修改DMP初始化函数

在DMP.c文件中DMP_Init()函数:

i2cRead(0x69,0x75,1,temp);    //第一个形参改为0x69寄存器

DS3231

这里用到高精度时钟芯片DS3231MZ+,是低成本、高精度 I2C实时时钟,具有集成的温补晶振(TCXO)和晶体,SOP-8封装,包含电池输入端,断开主 电源时仍可保持精确的计时。

集成晶振提高了器件的长期精确度,并减少了生产线的元件数量。更加小巧,节省空间。推荐给大家使用,大家可以在空间有限的项目中选型这个封装的DS3231。

另外,关于电池,用的是小号的充电电池,通过一个二极管确定是充电还是放电方向。当接上TypeC时,就能给主电池和备用电池充电,保证DS3231不断电。

BAT54S

CH340K

CH340K是兼容 USB V2.0的一款串口芯片,它特点挺多,封装是ESSOP10。

特点也挺多,很方便的去移植:

● 计算机端 Windows 操作系统下的串口应用程序完全兼容,无需修改。

● 硬件全双工串口,内置收发缓冲区,支持通讯波特率 50bps~2Mbps。

● 支持常用的 MODEM 联络信号 RTS、DTR、DCD、RI、DSR、CTS。

● 通过外加电平转换器件,提供 RS232、RS485、RS422 等接口。

● 支持 5V 电源电压和 3.3V 电源电压甚至 3V 电源电压。

● CH340K内置时钟,无需外部晶振。

而且配一个串口的话,对客户来说,也方便升级。TypeC向下兼容USB2.0,所以很方便的使用全速2.0接口,方便更新系统版本。

CH340K还拥有 RTSDTR,可以通过两个信号电平实现一键下载。

PS:这里参考了正点原子的一键下载电路。

一键下载电路 AND TyoeC插槽

最后修改:2022 年 03 月 28 日
如果觉得我的文章对你有用,请随意赞赏