加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入

NXP双核微控制器LPC55S69-PowerQuad在陀螺仪上的应用

07/19 15:31
1731
服务支持:
技术交流群

完成交易后在“购买成功”页面扫码入群,即可与技术大咖们分享疑惑和经验、收获成长和认同、领取优惠和红包等。

虚拟商品不可退

当前内容为数字版权作品,购买后不支持退换且无法转移使用。

加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
放大
实物图
相关方案
  • 方案介绍
  • 相关文件
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

一、项目名称

LPC55S69-PowerQuad 在陀螺仪上的应用

二、项目概述

LPC55S69是集成了PowerQuad数学运算加速处理器的双核ARM-M33处理器,本项目在LPC55S69驱动MPU6050陀螺仪的应用中实现以下功能:

1、LPC55S69-Core0对MPU6050陀螺仪的驱动,

2、LPC55S69-Core0 -PowerQuad浮点小数的除法和开方运算;

3、LPC55S69-Core1对OLED的驱动,显示陀螺仪输出的数字信号量;

4、双核数据共享管理机制,共享变量ACK作为握手信号对Core0和Core1进行任务调度。

三、作品实物图

图1

四、双核任务管理

图2

五、项目的实施

1、硬件:

外部扩展的硬件连接见图3

图3

2、软件:

编译环境:IAR8.32.1。

工程模块直接利用双核Hello_world演示例程

LPC55S69boardslpcxpresso55s69multicore_exampleshello_world 修改而成。

Core0模块需要添加PowerQuad和MPU6050的驱动,

图4

Core1需要添加OLED的驱动;

图5

3、双核调试:

1、在Core0中调试完成OLED驱动,并移植到Core1。然后从Core0调用Core1时OLED应能正常显示。

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.}
27.
28.

复制代码

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.    }
16.
17.

复制代码

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.    }
15.
16.

复制代码

六、代码文件

hello_world.rar

七、视频

八、运行结果

在Core1中预先设定蓝色LED翻转来监视运行过程,LED大约每秒翻转一次,运行结果可知在LED翻转期间,Core0和Core1居然运行了500次数据采集、运算和显示。本项目非常直观的体现了LPC55S69双核M33的优异性能。

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

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
ATXMEGA128A3U-MHR 1 Microchip Technology Inc IC MCU 8BIT 128KB FLASH 64QFN
$7.31 查看
MK70FN1M0VMJ15R 1 NXP Semiconductors RISC MICROCONTROLLER
暂无数据 查看
PIC24EP512GU810-I/PT 1 Microchip Technology Inc 16-BIT, FLASH, 60 MHz, MICROCONTROLLER, PQFP100, 12 X 12 MM, 1 MM HEIGHT, LEAD FREE, PLASTIC, TQFP-100

ECAD模型

下载ECAD模型
$10.44 查看

相关推荐

电子产业图谱