今天我就以mpu6050陀螺仪为例,实现FPGA的iic通信。 1.首先我们还是研究mpu6050的datasheet 。mpu6050我就不用介绍了,直接看关键信息 1)mpu6050上电延时至少30ms 。 2)iic最大时钟为400khz。slave address为 b110100 x r/w,x位是mpu6050的sd0引脚。第二张是我使用模块的原理图,很明显能看到sd0引脚被拉低,所以...
MPU6050模块的接口是IIC,所以驱动的实质也是通过IIC协议对模块进行读写,和OLED模块一样。其流程为 初试话相关寄存器,例如角速度和加速度的精度。 读取MPU6050模块的ID,判断是否初始化完成。 角速度和加速度的数据读取。 二. mpu6050的初始化 通过C语言可以知道,使用其模块只需要初始化一下五个寄存器即可。 三. 读取...
FPGA实现MPU6050姿态解算 一. 简介 在之前的文章中(很久之前了(CSND中)),已经通过FPGA获取到了MPU6050的六轴数据: 三轴加速 和 三轴角速度,但是没有对它进行然后处理。那么在本篇文章中,将利用Cordic算法来进行姿态解算。 二. 踩坑分享 在进行姿态解算分享之前,先分享一个踩坑经历。一般来说MPU6050的ID读出为0x...
1. MPU6050姿态解算 模块数据流如下图所示,将获取到的角度进行一个8阶的FIR滤波,加速度进行一个2阶的IIR滤波,即可得到相对平滑一点的数据,然后经过Cordic算法进行姿态解算,即可得到roll和pitch角度,为了得到更加平滑一点的roll和pitch数据,这里将得到的角度再进行了一个1阶的均值滤波(本来使用的是3阶的均值滤波,但是...
由于在项目中需要使用的MPU6050,进行姿态解算,计算中设计到arctan 和 sqr(x*2 + y * 2),这两部分的计算,在了解了一番之后,发现Cordic算法可以很方便的一次性求出这两个这两部分的计算。另外也可以一次性求出sin和cos的值。另外该算法还可以计算其他的一些公式(没做过多的了解)。
由于在项目中需要使用的MPU6050,进行姿态解算,计算中设计到arctan 和 sqr(x*2 + y * 2),这两部分的计算,在了解了一番之后,发现Cordic算法可以很方便的一次性求出这两个这两部分的计算。另外也可以一次性求出sin和cos的值。另外该算法还可以计算其他的一些公式(没做过多的了解)。
二. 产品概览 AuroraFOCAuroraFOC是一款搭载STM32F405的双路FOC控制板,其板载资源极为丰富。实物如图所示,它不仅适用于作为开发板进行基础学习,更可直接用于平衡车的控制(开发板自带NRF24L01无线模块和MPU6050传感器)。AuroraFOC的研发历程可谓一波三折。自今年2月着手设计以来,我们已历经三个版本的迭代。在不断的...
一. 简介 今天给大家带来的是IIC通信,IIC协议应用非常广泛,例如与MPU6050进行通信,配置OV5640摄像头、驱动OLED屏幕等等,都需要使用到IIC协议,所以掌握它是非常必要的,废话不多说,接着往下看。 二. IIC简介 IIC协议分为主机和从机,所有的请求都是由主机发出,从机进行响应,从机是没有办法对主机进行读或写的。IIC...
(这里小编在驱动 MPU6050 模块的时候,就犯过这样的错误,它写的 MPU6050 从机地址是0x68,因为发送从机地址的时候,要加一位读写方向位, 因为刚开始应该是向这个 MPU6050 里写从机里某个寄存器的地址,所以应该是 7 位地址 0x68(1101000)+二进制位 0=11010000)也就是 0xD0,表示要向该 IIC 设备里写东西,然后...