飞凌干货丨细说GPIO复用-基于LS1043A平台

原创 2020-03-06 16:42:00 GPIO复用 LS1043A

OK1043A-C开发板上市已有一段时间,大家对LS1043A有了初步体验,小编今天就分享一个最常用到的技能: GPIO的复用  。

 

01LS1043A GPIO 概况

LS1043A 有四组GPIO,分别为:


image.png


GPIO1[13]只能做输出

GPIO单元包括以下功能:

· 支持32个通用输入/输出端口

· 复位期间所有信号均为高阻态

· 所有端口的开漏功能

· 所有端口都可以选择在更改状态时生成中断

· 端口可以与其他功能信号复用

 

02 GPIO 寄存器介绍

GPIO内存映射

GPIO1 base address:230_0000h

GPIO2 base address:231_0000h

GPIO3 base address:232_0000h

GPIO4 base address:233_0000h


image.png


1.GPIO direction register (GPDIR)    GPIO方向寄存器(GPDIR)定义各个引脚的方向。方向,指示引脚是用作输入还是输出。

00000000000000000000000000000000b - 相应的引脚是输入。

00000000000000000000000000000001b-相应的引脚是输出。

 

2. GPIO open drain register (GPODR)   GPIO开漏寄存器(GPODR)定义了各个端口驱动其输出的方式。开漏配置,指示信号是作为输出主动驱动还是开漏驱动器。该寄存器对GPDIR中编程为输入的信号没有影响。

00000000000000000000000000000000b - 相应的信号作为输出被主动驱动。

00000000000000000000000000000001b-相应的信号是漏极开路驱动器。作为输出,信号被驱动为低电平有效,否则它不被驱动(高阻抗)。

 

3. GPIO data register (GPDAT)   GPIO数据寄存器(GPDAT)承载各个端口的数据输入/输出。数据,写入该寄存器会锁存在外部引脚上显示的数据,前提是相应的GPDIR位配置为输出。

当GPDIR处于输出模式时,GPDAT读操作会在返回引脚处的数据。

当GPDIR处于输入模式时,GPDAT读操作返回端口的状态。

 

4. GPIO interrupt event register (GPIER)   GPIO中断事件寄存器(GPIER)携带导致中断的事件的信息。GPIER中的每个位对应一个中断源。通过写入来清除GPIER位。但是,写零无效。中断事件,指示相应的GPIO信号是否发生中断事件。

00000000000000000000000000000000b-相应的GPIO信号上没有发生中断事件。

00000000000000000000000000000001b-相应的GPIO信号发生中断事件。

 

5. GPIO interrupt mask register(GPIMR)   GPIO中断屏蔽寄存器(GPIMR)定义各个端口的中断屏蔽。发生屏蔽中断请求时,无论GPIMR状态如何,都会设置相应的GPIER位。当发生一个或多个非屏蔽中断事件时,GPIO模块向中断控制器发出中断。中断掩码,指示是否屏蔽或未屏蔽相应GPIO信号的中断事件。

00000000000000000000000000000000b - 屏蔽(禁用)输入中断信号。

0000000000000000000000000000000001b - 未屏蔽(启用)输入中断信号。

 

6. GPIO interrupt control register(GPICR)   GPlO中断控制寄存器(GPICR)确定相应的端口线是否在从高到低的变化或信号状态的任何变化时断言中断请求。

 

边沿检测模式,相应的端口线根据以下内容断言中断请求:

00000000000000000000000000000000b-对端口状态的任何更改都会生成中断请求。

00000000000000000000000000000001b-端口上由高到低的更改生成中断请求。

 

03GPIO 在 LS1043A 的配置

1. rcw配置阶段

LS1043A的引脚配置信息文件路径:

OK10xx-linux-fs/flexbuildpackages/firmware/rcw/ls1043aqds/ls1043a.rcwi

LS1043A引脚修改生效路径:

OK10xx-linux-fs/flexbuild/packages/firmware/rcw/ls1043ardb/RR_FQPP_1455/rcw_1600_qspiboot.rcw

对应使用方法参考CPU手册3.4Signal multiplexing details 章节

SPI,eSDHC, USB and GPIO2 signal multiplexing复用为GPIO2[]为例

 

通过此图可知,当SPI_EXT为010时引脚被配置为GPIO

从引脚生效路径来看SPI_EXT原始配置为SPI_EXT=1 引脚生效路径中“=”后面的值为十六进制,在修改SPI_EXT的值的时候需要将二进制转换为十六进制即SPI_EXT=2

修改后如下,修改完重新编译烧写即可。

 

2. 开发板验证阶段

root@localhost:~# ls /sys/class/GPIO/

export       GPIOchip384/ GPIOchip416/ GPIOchip448/ GPIOchip480/unexport

输入上述命令出现四组GPIOchip,一般对应关系为

GPIOchip480  对应GPIO1[]

GPIOchip448  对应GPIO2[]

GPIOchip416  对应GPIO3[]

GPIOchip384  对应GPIO4[]

若要验证单个引脚则在此基础上做加法即可,即GPIO2[x]=GPIOchip448+x

验证工具为memtool文件系统中没有此工具需要安装:apt-getinstall memtool

root@localhost:~# echo 450 >/sys/class/GPIO/export

root@localhost:~# echo out  >/sys/class/GPIO/GPIO450/direction

root@localhost:~# memtool md0x2310000

 

root@localhost:~# echo in  > /sys/class/GPIO/GPIO450/direction

root@localhost:~# memtool md0x2310000

 

由上两个图看出当GPIO输出方向发生改变时,寄存器的值也发生了变化。

00000020 -------> 0000 0000 0000 0000 0000 0000 0010 0000 此为GPIO2  base  address寄存器的32位值,读取顺序为 24,25,26,27  28,29,30,31  16,17,18,19  20,21,22,23  8,9,10,11,12  13,14,15,16  0,1,2,3  4,5,6,7

可见第二位已经置为1即GPIO2[2]更改生效。

注:此方法只可适用于qspi启动。

 

 


 

----   END   ----


 长按识别二维码加关注 

飞凌嵌入式

专注于智能设备核心平台研发与制造


■ 关注“飞凌嵌入式”公众号,不定期分享行业干货及产品一线资料。

■ 直接微信回复产品平台,如“LS1043A”,即可快速获取对应产品信息。

■ 想要了解飞凌更多信息,欢迎与我们联系:

销售工程师:400-699-6866

国际业务部:0312-3102650-854

技术服务部:0312-3119192

方案定制类:17713286015 (杜工),18633238067(王工)

 

■ 实时技术支持:

AM 9:00—11:30,PM 13:30—17:00(周一至周五)


相关产品 >

  • FET1046A-C核心板

    4核1.8GHz,原生8网口灵活扩展|LS1046A 系列ARM工控核心板基于 NXP公司的LS1046A高性能64位ARM四核处理器。LS1046A处理器将四个64位ARM Cortex-A72内核与数据包处理加速和高速外设相集成,CoreMark跑分高达45000,LS1046A强大的网络处理能力和丰富的高速接口,适用于工业路由、边缘计算网关、IP-PBX等产品,以及边缘计算、 能源物联网、智慧城市、工业自动化、视频监控等应用领域。

    了解详情
    FET1046A-C核心板
  • OK1046A-C2开发板

    4核1.8GHz,原生8网口,支持万兆网络|
    飞凌嵌入式LS1046a ARM工控主板系列LS1046开发板 基于 NXP LS1046A 四核Cortex A72 CPU,强大的万兆网络处理能力和丰富的高速接口,CoreMark跑分高达45000。飞凌不仅仅提供了LS1046A开发板套件,还提供了调试心得、LS1046A硬件数据手册,并根据应用情况发布了 LS1046A 5G CPE 工业网关方案、边缘计算网关方案,降低了客户二次开发的难度。更多关于LS1046A的解决方案,产品详情,您可以登入飞凌嵌入式官网了解。

    了解详情
    OK1046A-C2开发板
  • FET1043A-C核心板

    LS1043A处理器是恩智浦推出的一款面向嵌入式网络的四核64位ARM处理器。LS1023A (双核)和LS1043A (四核)支持无风扇设计,超过10 Gbps的性能。LS1043A和LS1023A能够面向无线LAN和以太网供电系统方案提供额外的功耗节省。支持引脚兼容设计,可扩展至LS1046A (四核A72处理器)或LS1088A (十核A53处理器)。
    飞凌LS1043系列核心板,基于NXP公司的LS1043A四核处理器设计,主频1.6GHz,ARM Cortex-A53架构。原生支持1个10Gbps和6个1000Mbps。支持PCIe 2.0、SATA3.0、USB3.0、UART、IIC等功能接口
    了解详情
    FET1043A-C核心板
  • OK1043A-C开发板

    LS1043A开发板基于四核64位Arm Cortex-A53 LS1043A的处理器专为嵌入式网络应用而设计,主频1.6GHz,板载资源丰富,原生支持7 个Ethernet。 飞凌OK1043A-C开发板上市已有一段时间,大家对LS1043A有了初步体验,飞凌也优化了很多资料,帮助客户使用LS1043应用解决方案套件,包括LS1043软件手册、LS1043硬件手册、LS1043引脚定义等,客户可以通过这些LS1043的资料快速完成产品原型设计开发工作。

    了解详情
    OK1043A-C开发板

推荐阅读 换一批 换一批