gpio寄存器的说明

示例参考最后

3.6 Control Register

3.6.1 IO_MUX_CENTRAL_PIN_RF Register Address Map

Base address: 0x402A0000

Base address(Set Reg): 0x402A1000

Base address(Clear Reg): 0x402A2000

主要分为PIN_CTRLX,主要是片内外设的一些控制器的控制

以GPIO32为例

1 模式的选择

GPIO32对IO_MUX_CENTRAL_PIN_RF(地址为0x402A0000)的偏移

0x01EC

GPIO32

GPIO32

一个引脚往往可以复用

展讯的每个引脚复用情况一般在SL8521E_GPIO_Spec_V1.0.xlsx表格里说明

24

B13

GPIO32

VIO1V8

1.8V,4.7K/20K

50K

PWMA

O

DBG_BUS13(G0)

O

GPIO32

I/O/T

比如GPIO32就可以作为好几个功能引脚

Function1 为空

Function2 PWMA

Function3 DBG_BUS13(G0)

Function4 GPIO32

这里Function的选择,就是通过GPIO32_fun_sel来选择的,比如设置为3的话,那么GPIO32引脚就设置成了GPIO模式,设置为1的话,就设置成了PWMA模式

2 gpio的控制

6.27.1 Overview

The GPIO module provides general purpose input and output signals. many of the GPIO pins are

multiplexed with other functions and system design trade-off must be exercised on selecting them.

All the GPIO pins can be programmed to be either input or output. When in input mode, they can

be programmed to trigger interrupt to the MCU.

#define GPIO_GROUP_NR (16)

int sprd_gpio_write(struct gpio_chip *chip, uint32_t offset,

uint32_t reg, int value)

{

struct sprd_gpio_chip *sprd_gpio = to_sprd_gpio(chip);

int group = offset / GPIO_GROUP_NR;

int bitof = offset & (GPIO_GROUP_NR - 1);

unsigned long addr = sprd_gpio->base_addr +

sprd_gpio->group_offset * group + reg;

int ret;

if (value)

ret = sprd_gpio->set_bits(chip, 1 << bitof, addr);

else

ret = sprd_gpio->clr_bits(chip, 1 << bitof, addr);

return ret;

}

gpio的值 方向 输出的值是由一组寄存器控制的,每16个GPIO为一组,每个组的偏移值为0x80

比如 GPIO0-GPIO15 为第一组,偏移值为0,寄存器基地址为0x40280000

GPIO16-GPIO31为第二组,偏移值为0x80,寄存器基地址为0x40280080

GPIO32-GPIO47为第三组,偏移值为0x100,寄存器基地址为0x40280100

GPIO48-GPIO63为第三组,偏移值为0x180,寄存器基地址为0x40280180

GPIO64-GPIO79为第三组,偏移值为0x200,寄存器基地址为0x40280200

GPIO80-GPIO95为第三组,偏移值为0x280,寄存器基地址为0x40280280

GPIO96-GPIO111为第三组,偏移值为0x300,寄存器基地址为0x40280300

GPIO112-GPIO127为第三组,偏移值为0x380,寄存器基地址为0x40280380

GPIO128-GPIO143为第三组,偏移值为0x400,寄存器基地址为0x40280400

GPIO144-GPIO159为第三组,偏移值为0x480,寄存器基地址为0x40280480

GPIO160-GPIO175为第三组,偏移值为0x500,寄存器基地址为0x40280500

依次类推

每组寄存器的功能如下宏和表格所示

偏移值为0,反应data值

偏移值为4,反应data MASK

偏移值为8,反应DIR方向

/* registers definitions for GPIO controller */

#define REG_GPIO_DATA (0x0000)

#define REG_GPIO_DMSK (0x0004)

#define REG_GPIO_DIR (0x0008) /* only for gpio */

#define REG_GPIO_IS (0x000c) /* only for gpio */

#define REG_GPIO_IBE (0x0010) /* only for gpio */

#define REG_GPIO_IEV (0x0014)

#define REG_GPIO_IE (0x0018)

#define REG_GPIO_RIS (0x001c)

#define REG_GPIO_MIS (0x0020)

#define REG_GPIO_IC (0x0024)

#define REG_GPIO_INEN (0x0028) /* only for gpio */

0x0000

GPIODATA

GPIO bits data

0x0004

GPIODMSK

GPIO bits data mask

0x0008

GPIODIR

GPIO bits data direction

0x000C

GPIOIS

GPIO bits interrupt sense

0x0010

GPIOIBE

GPIO bits both edges interrupt

0x0014

GPIOIEV

GPIO bits interrupt event

0x0018

GPIOIE

GPIO bits interrupt enable

0x001C

GPIORIS

GPIO bits raw interrupt status

0x0020

GPIOMIS

GPIO bits masked interrupt status

0x0024

GPIOIC

GPIO bits interrupt clear

0x0028

GPIOINEN

GPIO input enable

GPIODATA寄存器,可以反映出gpio bits data input

3 上下拉 驱动电流的控制

DRV driver strength

WPUS pull up resistor select

SE schmitt trigger input enable

WPU weakly pull up for function mode

WPDO weakly pull down for function mode

slp_WPU weak pull up control in chip deep sleep mode

slp_WPDO weak pull down control in chip deep sleep mode

PIN_NAME_slp_ie Input enable control in chip deep sleep mode

PIN_NAME_slp_oe Output enable control in chip deep sleep mode

PIN_NAME_slp_en

Sleep mode enable:

BIT0: Sleep with AP sleep

BIT1: Sleep with PUBCP sleep

BIT2: Sleep with WTLCP sleep

BIT3: Sleep with WCN sleep

BIT4: Sleep with CM4 sleep

#define BIT_PIN_SLP_CM4 ( BIT_17 )

#define BIT_PIN_SLP_WCN ( BIT_16 )

#define BIT_PIN_SLP_WTLCP ( BIT_15 )

#define BIT_PIN_SLP_PUBCP ( BIT_14 )

#define BIT_PIN_SLP_AP ( BIT_13 )

=========================================================

示例1

gpio32

模式的选择

/system/bin/r 0x402A01EC

402a01ec: 00000030 //表明设置的是GPIO模式

值和方向的控制

/system/bin/r 0x40280100 值

/system/bin/r 0x40280104 mask

/system/bin/r 0x40280108 direction

---------------------------------------------------

示例2

gpio31

模式的选择

/system/bin/r 0x402A01E8

402a01e8: 00000030 //表明设置的是GPIO模式

值和方向的控制

/system/bin/r 0x40280080 值

40280080: 00008000//表明为高电平

40280080: 00000000//表明为低电平

/system/bin/r 0x40280084 mask

/system/bin/r 0x40280088 direction

展讯平台gpio配置相关推荐

  1. 展讯平台GPIO调试方法

    GPIO操作的2种方法,1种查看状态的方法 关于GPIO寄存器的描述可以到展讯官网上下载GPIO寄存器的文档,由于网络差,当前登陆不进 1.GPIO被分为8组,每组GPIO对应的操作寄存器地址为 第一 ...

  2. 展讯平台初步调试笔记

    最近公司换新的平台,之前用MTK的,现在主要是展讯的,当然也要重新学习了. 1.project_sc6600l_sp6601l_trisim_64X32.mk为三卡的FLASH大小为6432的. MS ...

  3. 【展讯平台】Android 驱动(Kernel)、系统(framework) 定制,调试日志,持续更新中..

    前言 [展讯平台]Android 4.4 驱动(Kernel).系统(framework) 定制,调试日志 正文 1:提高串口日志等级 查看 adb shell cat /proc/sys/kerne ...

  4. 展讯平台 LCD(Mipi)移植步骤及问题归纳

    PortingGuide Backlight 背光的硬件设计有两种情况:  1. 内置并联背光  2. 外置串联背光  对于 1 的情况,步骤如下:  1.移植对应的 lcd 驱动.  2.设置u-b ...

  5. 1.3【展讯平台】Android 驱动(Kernel)、系统(framework) 定制,调试日志

    前言 [展讯平台]Android 4.4 驱动(Kernel).系统(framework) 定制,调试日志 正文 1:提高串口日志等级 查看 adb shell cat /proc/sys/kerne ...

  6. 展讯平台lcd频率计算

    展讯平台点屏时要配置两个时钟(phy_freq和pixel_clk),那这两个参数要怎么配置呢,我们可以找到展讯的这份文档,输入屏的参数,即可计算出相应的时钟.如 然后将相应的参数填到屏的配置文件中, ...

  7. 展讯平台功耗调试记录

    展讯平台功耗调试记录 1.查看应用持有锁:dumpsys power | grep LOCK 2.查看内核持有锁:cat /d/wakeup_sources 休眠后查看唤醒源:串口 log 打印 Wa ...

  8. 展讯平台-sensor驱动

        驱动者,三分硬件,三分格式,四分软件.     在手机中,我们常将camera直接称为sensor,展讯平台的sensor就像lcd一样,已经十分的成熟了.沿袭前面的模式,先介绍一下硬件的基本 ...

  9. 展讯平台-LCD驱动

    所谓驱动者,三分硬件,三分格式,四分软件.对于展讯平台的LCD驱动,首先就要了解一点基本的硬件知识. 一.LCD的接口 其实LCD的接口有很多,但是不管是在手机还是电脑,液晶屏的接口也最常用的有两个, ...

最新文章

  1. 大龄屌丝自学笔记--Java零基础到菜鸟--028
  2. 使用dplyr进行数据操作(30个实例)
  3. 第十五届全国大学生智能汽车竞赛创意组比赛进入全国总决赛队伍名单
  4. underscore
  5. Easyui入门视频教程 第01集---认识Easyui
  6. Thread如何中断
  7. 受欢迎的五个开源可视化工具——你的选择是?
  8. Actor-ES框架:消息发布器与消息存储器
  9. 使用Spring Webservices构建SOAP Webservices代理模块
  10. torch.stack作用分析
  11. linux shell 引号 参数,shell(三)变量,基本语法,单双引号
  12. Java反射机制demo(五)—获得并调用一个类中的方法
  13. /usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5.12‘ not found解决办法
  14. java cookie p3p_利用P3P实现单点登录和COOKIE的跨域读写
  15. 采用传输矩阵法求解光子晶体带隙
  16. 揭开BootStrap的神秘面纱
  17. 易语言执行mysql命令_易语言执行sql进度条 易语言mysql
  18. windows终端终端_Windows终端机完整指南
  19. 2022年最新上海机动车签字授权人模拟试题及答案
  20. 读书笔记 摘自:《为什么精英都是时间控》

热门文章

  1. (C++)简单计算器开发笔记(1)
  2. ip地址数据库 高效解析查询
  3. 解决node-gyp报错:KeyError 2017
  4. 垂直供应链电子商务平台-未来电子商务战略趋势
  5. 中国矿业大学测绘工程专业课-学习笔记
  6. 音频降噪算法 附完整C代码
  7. nssl 1454 2018CodeM总决赛 最短路
  8. 基于PIC18F458的CAN总线接口设计
  9. Linux(CentOS)下安装NVIDIA GPU驱动
  10. Google Maps JavaScript API 使用