OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2589|回复: 0

[阿波罗F767] 阿波罗F767使用MPU6050测试程序

[复制链接]

109

主题

5562

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10541
金钱
10541
注册时间
2017-2-18
在线时间
1908 小时
发表于 2018-12-15 22:32:13 | 显示全部楼层 |阅读模式
今天有客户准备使用F747使用MPU6050模块,但是原子这边只有阿波罗F767板子,所以基于阿波罗F767移植MPU6050程序其他用F7的芯片可以基于该程序去移植
需要注意的是:
1.阿波罗底板本身板载MPU9250,本可不必再用MPU6050
2.例程使用串口1上传数据到匿名四轴上位机V2.6版本,波特率:500000,8位数据位,1位停止位
3.支持ALIENTEK 2.8/3.5/4.3/7寸LCD模块(包括MCU屏和RGB屏,都支持)
4.使用匿名四轴上位机V2.6版本,该上位机设置方法见该帖:http://www.openedv.com/forum.php?mod=viewthread&tid=284387
5.模块使用F7的GPIO模拟IIC通信,并未使用到硬件IIC
6.模块接在阿波罗底板的ATK-MODULE接口,即:
SCL----------------------------PB10
SDA---------------------------PB11
AD0---------------------------PA4
VCC---------------------------5V
GND--------------------------GND

MPU6050模块的初始化函数是MPU_Init()
[mw_shl_code=c,true]//初始化MPU6050
//返回值:0,成功
//    其他,错误代码
u8 MPU_Init(void)
{
        u8 res;
        GPIO_InitTypeDef GPIO_Initure;
    __HAL_RCC_GPIOA_CLK_ENABLE();   //使能GPIOA时钟        
        
        GPIO_Initure.Pin=GPIO_PIN_4;
    GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP;  //推挽输出
    GPIO_Initure.Pull=GPIO_PULLUP;          //上拉
    GPIO_Initure.Speed=GPIO_SPEED_FAST;     //快速
    HAL_GPIO_Init(GPIOA,&GPIO_Initure);

        HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_RESET);        //PA4置0,控制MPU6050的AD0脚为低电平,从机地址为:0X68
        
        MPU_IIC_Init();//初始化IIC总线
        MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X80);        //复位MPU6050
    delay_ms(100);
        MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X00);        //唤醒MPU6050
        MPU_Set_Gyro_Fsr(3);                                        //陀螺仪传感器,±2000dps
        MPU_Set_Accel_Fsr(0);                                        //加速度传感器,±2g
        MPU_Set_Rate(50);                                                //设置采样率50Hz
        MPU_Write_Byte(MPU_INT_EN_REG,0X00);        //关闭所有中断
        MPU_Write_Byte(MPU_USER_CTRL_REG,0X00);        //I2C主模式关闭
        MPU_Write_Byte(MPU_FIFO_EN_REG,0X00);        //关闭FIFO
        MPU_Write_Byte(MPU_INTBP_CFG_REG,0X80);        //INT引脚低电平有效
        res=MPU_Read_Byte(MPU_DEVICE_ID_REG);
        if(res==MPU_ADDR)//器件ID正确
        {
                MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X01);        //设置CLKSEL,PLL X轴为参考
                MPU_Write_Byte(MPU_PWR_MGMT2_REG,0X00);        //加速度与陀螺仪都工作
                MPU_Set_Rate(50);                                                //设置采样率为50Hz
         }else return 1;
        return 0;
}[/mw_shl_code]
该函数初始化PA4,并调用MPU_IIC_Init()函数初始化IIC总线
关于该模块的寄存器设置可以参考附件中的用户手册




阿波罗F767_MPU6050测试程序.rar

15.98 MB, 下载次数: 329

11,ATK-MPU6050六轴传感器模块.rar

31.81 MB, 下载次数: 173

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 22:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表