恩智浦MAPS四色板体验:利用遥感开关往不同方向按下时在LCD显示屏分别显示表示方向的箭头

分享到:

实验二

实验目标:利用遥感开关往不同方向按下时在LCD显示屏分别显示表示方向的箭头。

实验原理:
(1)GPIO:K60的I/O口具有多功能信号复用、DMA或中断触发控制以及GPIO功能。
GPIO是单片机同外围设备数据传输的通道。单片机的大部分I/O口方向寄存器来配置成为输入或者输出功能。I/O作为输入使用时,可以对输入的信号进行检测,根据输入信号的电压大小,单片机可以将相应的电压信号转化为逻辑信号。
(2)Joystick:五个按键,包括上下左右和中间的按键,中间的select按键有外部的上拉电阻,其他四个方向键可以自由配置上拉或下拉电阻。当按下按键时相应的GPIO口就能检测到按键状态。
(3)LCD:像素为320X240。
(4)FlexBus:
知识点1:GPIO配置
(1)引脚控制寄存器:PORTx_PCRn



10-8:引脚复用功能选择:可以配置为GPIO、中断或其他复用功能等,当这三位配置为001时是GPIO功能。
(2)GPIO时钟配置寄存器:SIM_SCGC5



13-9.PORTx:分别使能或禁止端口时钟;
(3)GPIO数据方向寄存器:GPIOx_PDDR



31-0.PDD:配置为0则为输入,配置为1则为输出
(4)GPIO数据输入寄存器:GPIOx_PDIR



GPIO口会将读入的数据转化为高或低电平。
实验步骤:
1.确定原理图引脚



其中UP按键与PORTA24脚相连,RIGHT按键与PORTA26脚相连,LEFT与PORTA27脚相连,DOWN按键与PORTA25脚相连,SELECT按键与PORTA4脚相连。
2.软件部分
(1)GPIO引脚重命名
//by zsy
kGpio_up=GPIO_MAKE_PIN(HW_GPIOA,24U),
kGpio_down=GPIO_MAKE_PIN(HW_GPIOA,25U),
kGpio_left=GPIO_MAKE_PIN(HW_GPIOA,27U),
kGpio_right=GPIO_MAKE_PIN(HW_GPIOA,26U),
kGpio_select=GPIO_MAKE_PIN(HW_GPIOA,4U),
(2)引脚配置
//by zsy 2015/4/30
const gpio_input_pin_user_config_t upkey[] = {
{
.pinName = kGpio_up,
.config.isPullEnable = true,
.config.pullSelect = kPortPullUp,
.config.isPassiveFilterEnabled = false,
.config.interrupt = kPortIntDisabled,
},
// {
// .pinName = GPIO_PINS_OUT_OF_RANGE,
// }
};
其他GPIO口如downkey、leftkey、rightkey、selectkey相同配置。
(3)使能端口时钟,配置方向与初始化
SIM_HAL_EnablePortClock(SIM_BASE, 0); //initial PORTA clock
//initial upkey
GPIO_DRV_SetPinDir(kGpio_up,kGpioDigitalInput); //
PORT_HAL_SetMuxMode(PORTA_BASE,0x18, kPortMuxAsGpio);
GPIO_DRV_InputPinInit(upkey);
其他端口类似配置
(4)LCD配置与初始化
/* Initialize standard SDK demo application pins */
for (i = 0; i < HW_PORT_INSTANCE_COUNT; i++) {
CLOCK_SYS_EnablePortClock(i);
}
lcd_flexbus_init();
CLOCK_SYS_GetFreq(kFlexBusClock,&freq);
LCDC_Init();
(5)设置指针指向图片信息,并拷贝图片数据到SDRAM中
//Copy image data to sram
for(i=0; i<320*240; i++)
{
p1 = *((uint16_t *)&gImage_ecbc[j]);;
j+=2;
}
LCDC_Bmp(0,0,320,240,(unsigned short *)p1);
//for(i=0;i<1000000;i++);
(6)进入主循环,获取按键的信息,分别显示对应的按键图片
while(1)
{
upkey_value=GPIO_DRV_ReadPinInput(kGpio_up);
downkey_value=GPIO_DRV_ReadPinInput(kGpio_down);
leftkey_value=GPIO_DRV_ReadPinInput(kGpio_left);
rightkey_value=GPIO_DRV_ReadPinInput(kGpio_right);
selectkey_value=GPIO_DRV_ReadPinInput(kGpio_select);
//
if(upkey_value == 0)
{
//LCDC_Init();
j=0;
for(i=0; i<320*240; i++)
{
p1 = *((uint16_t *)&gImage_up[j]);;
j+=2;
}
LCDC_Bmp(0,0,320,240,(unsigned short *)p1);
//for(i=0;i<10000000;i++);
for(i=0;i<100;i++);
//LCDC_Init();
}
其他按键类似
实验现象:
如下图所示
(1)上电初始化



(2)按向上的按键



(3)按向下的按键



(4)按向左的按键



(5)按向右的按键

(6)按中间的按键

 

 

更多恩智浦(NXP)及恩智浦技术教程请关注:
NXP中文官方:https://www.nxp.com/zh-Hans/
NXP中文技术论坛:https://www.nxpic.org/

 

继续阅读
恩智浦沉浸式音频系统,Dolby Atmos和DTS:X音频品质带来全新体验

恩智浦半导体近日推出了面向智能家居市场的Immersiv3D沉浸式音频解决方案,开启先进的音频系统设计和开发新时代。该解决方案将恩智浦突破性的软件与i.MX 8M Mini应用处理器相结合,在集成i.MX 8M Mini SoC的设备中支持Dolby Atmos和DTS:X。i.MX 8M Mini还为更广泛的消费类设备(包括条形音箱、智能扬声器和AV接收器)提供语音交互控制等智能功能,消费者可以选择添加其他扬声器,以便在家庭的各个场所分配智能语音控制和沉浸式音频。

三年三项成绩!NXP让100+城市“刷手机坐公交”梦想成真

如今在选择公交出行时,越来越多的人开始使用含有NFC功能的手机或移动设备进行支付。不用点亮屏幕,不用打开App扫码,只需手机轻轻一触,便可一闪而过—— 对于这样的“刷手机坐公交”的体验,人们已经不再陌生。

NXP“芯”愿:携手生态伙伴,共推人工智能物联网应用落地

12月18日,是一个非常重要的日子。到这一天,中国的改革开放正好走过了40年的光辉历程。这40年里,改革开放不断延续,奇迹也在不断地发生。这40年也见证了中国集成电路产业的快速发展、整体实力的显著提升,集成电路设计、制造能力与国际先进水平差距的不断缩小,封装测试技术逐步接近国际先进水平,以及部分关键装备和材料不断被国内外生产线所采用,特别是中国不断涌现出一批具备一定国际竞争力的企业,产业集聚效应日趋明显。

恩智浦携手合作伙伴荣获CATRENE创新大奖,推出功耗更低使用更方便的5G产品

日前,恩智浦及其EAST联盟(致力于通过小型基站技术普及智能化,随时随地可访问内容)合作伙伴荣获CATRENE创新大奖,其中包括诺基亚、贝思、Anteverta、Bruco、代尔夫特理工大学、埃因霍温理工大学和TNO。EAST项目被选为用来开发高度集成、节能且成本效益高的技术,以支持5G移动通信网络的推出。

和高通牵手失败后,恩智浦在很多方面下了大功夫来让自己走的更远

汽车事业部的营收占整个恩智浦半导体(NXP Semiconductors)营收的一半左右,恩智浦汽车事业部技术长Lars Reger原本预期高通(Qualcomm)与恩智浦会顺利合并,因而规划了汽车技术发展蓝图。然而,在6月中从旧金山(San Francisco)飞往法兰克福(Frankfurt)的这11个小时航班里,他的期望落了空。”

精彩活动