查看: 1902|回复: 2

[作品提交] 基于LPC55S69-PowerQuad 在陀螺仪上的应用

[复制链接]
  • TA的每日心情
    开心
    2023-12-29 09:54
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    7

    主题

    267

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    4404
    最后登录
    2024-5-7
    发表于 2019-12-10 19:06:43 | 显示全部楼层 |阅读模式
    本帖最后由 wenyangzeng 于 2019-12-10 20:25 编辑

    基于LPC55S69-PowerQuad在陀螺仪上的应用

    一、项目名称

    基于LPC55S69-PowerQuad 在陀螺仪上的应用

    二、项目概述

        LPC55S69是集成了PowerQuad数学运算加速处理器的双核ARM-M33处理器,本项目在LPC55S69驱动MPU6050陀螺仪的应用中实现以下功能:
           1LPC55S69-Core0MPU6050陀螺仪的驱动,
           2LPC55S69-Core0 -PowerQuad浮点小数的除法和开方运算;
           3LPC55S69-Core1OLED的驱动,显示陀螺仪输出的数字信号量;
           4、双核数据共享管理机制,共享变量ACK作为握手信号对Core0Core1进行任务调度。

    三、作品实物图

    图1.jpg
                                    1

    四、双核任务管理
    图2.png
                 图2
    五、项目的实施

    1、硬件:
    外部扩展的硬件连接见图3
    图3.png
                                         3
    2、软件:
    编译环境:IAR8.32.1

    工程模块直接利用双核Hello_world演示例程
    LPC55S69\boards\lpcxpresso55s69\multicore_examples\hello_world 修改而成。


    Core0模块需要添加PowerQuadMPU6050的驱动,

    图4.png
                                  4

    Core1需要添加OLED的驱动;

    图5.png                     5

    3、双核调试:
    1、在Core0中调试完成OLED驱动,并移植到Core1。然后从Core0调用Core1OLED应能正常显示。
    2、调试MPU6050驱动;
    3、调试PowerQuad
    4、调试Core1显示Core0传送的坐标数据。

    Get_Angle()函数演示了PowerQuad浮点小数除法和开方的使用方法:

    在使用PowerQuad前,要先对其初始化:
    1. PQ_Init(DEMO_POWERQUAD);
    复制代码

    1. void MPU6050_Get_Angle(MPU6050_Angle *data)
    2. {  float temp=16384.0;
    3.   float input;
    4.   float result;
    5.   input=MPU6050_Get_Data(ACCEL_XOUT_H) + X_ACCEL_OFFSET;
    6.   PQ_DivF32(&input, &temp, &result);
    7.   X=result;
    8.   input=MPU6050_Get_Data(ACCEL_YOUT_H) + Y_ACCEL_OFFSET;
    9.   PQ_DivF32(&input, &temp, &result);
    10.   Y=result;
    11.   input=MPU6050_Get_Data(ACCEL_ZOUT_H) + Z_ACCEL_OFFSET;
    12.   PQ_DivF32(&input, &temp, &result);
    13.   Z=result;
    14. input =(Y*Y+Z*Z);
    15.   PQ_SqrtF32(&input, &result);
    16.   temp=X/result;
    17.   data->X_Angle =atan(temp)* 57.29577;
    18. input =(X*X+Z*Z);
    19.   PQ_SqrtF32(&input, &result);
    20.   temp=Y/result;
    21.   data->Y_Angle =atan(temp)* 57.29577;
    22.   input =(X*X+Y*Y);
    23.   PQ_SqrtF32(&input, &result);
    24.   temp=result/Z;
    25.   data->Z_Angle =atan(temp)* 57.29577;
    26. }

    复制代码
    Core0的数据处理:
    1. while (1)
    2.     {
    3.      do{;} while(Ack==0x01);
    4.      MPU6050_Get_Angle(&data);
    5.      fraction=modf(data.X_Angle,&integer)*100;
    6.      Disp_buf[0][0]=(int32_t)integer;
    7.      Disp_buf[0][1]=(uint8_t)fraction;
    8.      fraction=modf(data.Y_Angle,&integer)*100;
    9.      Disp_buf[1][0]=(int32_t)integer;
    10.      Disp_buf[1][1]=(uint8_t)fraction;
    11.      fraction=modf(data.Z_Angle,&integer)*100;  
    12.      Disp_buf[2][0]=(int32_t)integer;
    13.      Disp_buf[2][1]=(uint8_t)fraction;
    14.      Ack=0x01;
    15.     }

    复制代码
    Core1的数据处理:
    1. while (1)
    2.     {
    3.         do{;}while(Ack==0x00);
    4.         Ack=0x00;
    5.         DispAngle(48,8,(int32_t)Disp_buf[0][0],(uint8_t)Disp_buf[0][1]);
    6.         DispAngle(48,24,(int32_t)Disp_buf[1][0],(uint8_t)Disp_buf[1][1]);
    7.         DispAngle(48,40,(int32_t)Disp_buf[2][0],(uint8_t)Disp_buf[2][1]);
    8.         j++;
    9.         if(j==500)
    10.         {
    11.           LED_TOGGLE();
    12.           j=0;
    13.         }
    14.     }

    复制代码


    六、代码文件
    hello_world.rar (547 KB, 下载次数: 38)
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    1

    帖子

    0

    新手上路

    Rank: 1

    积分
    3
    最后登录
    2019-12-16
    发表于 2019-12-16 18:00:30 | 显示全部楼层
    刚如入门,还是先看看双核的性能
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    1

    帖子

    0

    新手上路

    Rank: 1

    积分
    3
    最后登录
    2019-12-16
    发表于 2019-12-16 18:01:38 | 显示全部楼层
    两个双核都利用上了厉害了,围观围观
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-5-7 10:19 , Processed in 0.121730 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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