艾巴生活网

您现在的位置是:主页>科技 >内容

科技

lpc54102例程 两种方案代码详解

2024-11-05 10:49:48科技帅气的蚂蚁
由于其性能和稳定性,lpc54102在许多领域得到了应用。下面给大家分享一下lpc54102的套路。恩智浦LPC5410x系列产品是32位ARM Cortex-M4F MO

lpc54102例程 两种方案代码详解

由于其性能和稳定性,lpc54102在许多领域得到了应用。下面给大家分享一下lpc54102的套路。

恩智浦LPC5410x系列产品是32位ARM Cortex-M4F/MO MCU,集成了104KB SRAM、512KB闪存、3个12C、2个SPI、4个USART、32位计数器/定时器、SCTImer/PWM和12位4.8MSPS ADC。它们具有低功耗、增强的调试功能和快速高级支持区域,并且适合于嵌入式应用。

LPC5410x是一款基于ARM cortexm4f的嵌入式微控制器。这些器件包括可选的arm Cortex-M0协处理器、104 KB片内存储器、512 KB片内闪存、五个通用定时器、一个状态可配置定时器(SCTImer/PWM)PWM功能、一个RTC/报警定时器和一个24位多速率定时器(MRT)。窗口看门狗定时器(WWDT)、四个USARTs和两个SPI、三个快速模式加i2c总线接口和高速从机模式,以及一个12位4.8 Msamples/secADC。

LPC54102传感器处理/运动解决方案的主要特性:

A.完整的硬件和软件设计,可随时定制

B.32位LPC54102 Cortex-M4F/M0 MCU

C.LPCXpresso54102开发局

D.传感器盖板

E.LPCOpen软件驱动程序

f. LPC的传感器融合框架

G.博世BSX Lite传感器融合库

H.软件演示

一.文件

LPC54102传感器处理/运动解决方案的主要优势:

A.为您的应用添加6轴或9轴运动传感器

B.集成传感器融合中间件和便携式传感器融合框架

C.传感器融合api允许用户使用运动传感器轻松创建应用。

D.附加数字传感器(压力/温度、环境光、接近度)

E.软件开发工具,用于快速开始编写、编译和运行基于传感器的应用程序。

F.为最终产品设计师提供一套丰富的参考设计资料,包括文档、移植指南和原理图。

G.可堆叠硬件支持更多传感器或添加插件模块。

H.大量引脚用于测量和原型制作

一.低功耗

LPC54102开发板介绍LPC54102开发板介绍原理图

LPC54102例程:首先我们移植万里开发板的心率仪应用笔记的lpc54102例程进行分析讲解。

由于万里开发板的设置不同,没有PulseSensor传感器,需要进行修改和移植。万里开发板上的AIN1作为模拟输入,电位器的来回转动代表心跳的变化。

1、代码修改

由于万力开发板使用PIO1_4/AIN7作为电位器输入,因此在初始化代码中做了如下修改:

在board.h中,取消了BOARD_NXP_LPCXPRESSO_54102的定义,但是重新定义了BOARD_MANLEY_LPC54102。

在每个初始化代码中,添加了万里开发板的初始化代码。

#如果已定义(BOARD_NXP_LPCXPRESSO_54102)

#定义ADC _ SEQ _配置

TRIG _ SOFT |

TRIG_POL_POS |

MODE_EOS |

ENABLE_CH(3)

#elif已定义(BOARD_MANLEY_LPC54102)

#定义ADC _ SEQ _配置

TRIG _ SOFT |

TRIG_POL_POS |

MODE_EOS |

ENABLE_CH(7)

# endif//#如果已定义(BOARD_xxx)

静态void ADC_PinMuxSetup(void)

{

#如果已定义(BOARD_NXP_LPCXPRESSO_54102)

Chip_IOCON_PinMuxSet(LPC_IOCON,1,0,IOCON _ MODE _ in act | IOCON _ func 1 | IOCON _ ANALOG _ EN);

#elif已定义(BOARD_MANLEY_LPC54102)

Chip_IOCON_PinMuxSet(LPC_IOCON,1,4,IOCON _ MODE _ in act | IOCON _ func 1 | IOCON _ ANALOG _ EN);

#endif

}

从010到31020运行

其余基本不变。下载后来回旋转电位器,可以看到串口输出心跳数据。

3、代码分析

该应用基本采用CM4初始化后即进入休眠。

CM0核初始化模数转换器、定时器之后,进入休眠。

每秒20次唤醒后,采样ADC,当采样过半时,调用计算心率算法计算是否产生心跳以及心跳间隔IBI。当发现后即输出串口信息。

关键在于计算心率算法,该算法采用脉搏传感器官方的算法,基本是通过判断物理输出核心模拟量发现峰值、过半点等运算。

空的计算心率(无效)

{

inti,N,Signal,runningTotal,current _ sample=0;

while(current_sample采样频率/2){

signal=temp _ data[电流_样本];

样本计数器=样本计数器50跟踪以毫秒为单位的时间;

n=样本计数器-lastBeatTime;

如果(信号《thresh N》 (IBI/5)*3){

如果(信号《T){

T=信号;} } if(信号)阈值信号“P){

P=信号;}

女(男)500){

如果(信号)thresh)(Pulse==0)(N ”( IBI/5)* 3)){ Pulse=1;IBI=样本计数器-lastBeatTime;lastBeatTime=sampleCounterif(second beat){ second beat=0;for(I=0;I"=9;I){ rate[I]=IBI;} } if(第一拍){第一拍=0;秒拍=1;继续;} 运行总数=0;for(I=0;I"=8;I){ rate[I]=rate[I 1];累计=比率[I];} rate[9]=IBI;累计=rate[9];运行总数/=10;BPM=60000/运行总数;QS=1;} }

如果(信号《阈值脉冲==1){

脉冲=0;

安培=P-T;

thresh=amp/2t;

P=阈值;

T=阈值;}

If(N"2500){

thresh=2548

P=2548

t=2548 lastbeattime=sample counter

第一拍=1;

秒拍=0;}当前_样本;} }

lpc54102例程:二LPCOpen_V2.14_LPC5410x的外围的例程

人体是在设置了人体中断电压水平(INTLEVEL),同时设置了重启电压水平(RSTLEVEL)之后,使能中断与重启,

源程序如下:

chip _ PMU _ SetBODLevels(PMU _ BODRSTLVL _ 1 _ 50V,PMU _ BODINTVAL _ 3 _ 05v);

chip _ PMU _ EnableBODReset();

chip _ PMU _ enable bodint();

NVIC _使能IRQ(BOD _ IRQn);

为了方便观察人体中断的运行,在中断中设置电路板_ LED _开关需要修改如下:

void BOD_IRQHandler(void)

{

for(int I=0;我《1000;i ) {

board _ LED _ Toggle(1);

}

}

最终运行效果要求正常运行发光二极管是熄灭的,而掉电过程中人体中断使得发光二极管闪亮,由于万利的板子是低电平点亮LED,因此在初始化阶段应该吧Board_LED_Set()的参数改为没错,高电平之后发光二极管熄灭。然后在人体中断中可以眨眼闪亮。

运行效果可以通过拔掉供电电源(本人的为JLINK直接给板子供电,在jlink指挥官中输入关机就可以)。此时发光二极管会闪亮一下马上熄灭(断电)。

/**

* @简要电源管理单元寄存器块结构

* @注意大多数电源管理单元支持是由电源管理单元库处理的。

*/

typedef结构{

_ _ I uint 32 _ t保留0[4];

_ _ I uint 32 _ t保留1[4];

_ _ I uint 32 _ t保留2[4];

_ _ I uint 32 _ t保留3[4];

_ _ I uint32 _ t保留4

_ _ IO uint32 _ t BODCTRL

_ _ I uint32 _ t保留5

_ _ I uint32 _ t保留6

_ _ IO uint32 _ t DPDWAKESRC

} LPC _ PMU _ T;

#定义LPC_PMU_BASE0x4002C000UL

#定义LPC _ PMU((LPC _ PMU _ T *)LPC _ PMU _ BASE)

(3)CLKOUT

可以在P0.21(CLKOUT)引脚上测量以下时钟信号:

CLKOUT_DIV=250

调试器挂起CPU后,CLKOUT继续输出。

《儿童权利公约》

CRC只需要运行例程。

CRC的功能定义和代码如下:

(5)IAP

IAP只需要运行例程。

观察IDE中的内存,地址为0x00078000。可以看出,运行Chip_IAP_CopyRamToFlash前后,flash存储内容发生了变化。

(6)频率测量

只是运行例行程序。