首先要申请GPIO

if(0 != gpio_request(config->gpio, NULL)) {   //config->gpio ,表示gpio号。

printk("relay_gpio gpio_request fail !");

return -1;

}

然后需要设置模式,有下列方法:

1、

if (0 != gpio_direction_output(config->gpio, 0)) {   //第二个参数表示改GPIO的默认值,0为低电平,1为高电平。

printk("relay_gpio gpio_direction_output fail !");

return -1;

}

2、

sunxi_gpio_to_name(config->gpio, pin_name); //pin_name 是PA1 ,PB3这样的名字

config_set = SUNXI_PINCFG_PACK(SUNXI_PINCFG_TYPE_FUNC,1);   //第二个参数表示功能,具体参见datasheet,目前0表示输入,1表示输出模式。

pin_config_set(SUNXI_PINCTRL,pin_name,config_set);

printk(" gpio name: %s  gpio : %d \n",pin_name,config->gpio);

设置GPIO值也可以有两种方法,如下:

1、

__gpio_set_value(n, 0); //n 是GPIO号

2、

sunxi_gpio_to_name(n, pin_name);

config_set = SUNXI_PINCFG_PACK(SUNXI_PINCFG_TYPE_DAT,0);

pin_config_set(SUNXI_PINCTRL,pin_name,config_set);

config_get = SUNXI_PINCFG_PACK(SUNXI_PINCFG_TYPE_DAT,0XFFFF);

pin_config_get(SUNXI_PINCTRL,pin_name,&config_get); //取GPIO值

printk("     [%s] pin value: %ld\n",pin_name,SUNXI_PINCFG_UNPACK_VALUE(config_get));

下面是取GPIO功能配置值的,可以查看设置功能是否正确

config_get = SUNXI_PINCFG_PACK(SUNXI_PINCFG_TYPE_FUNC,0XFFFF);

pin_config_get(SUNXI_PINCTRL,pin_name,&config_get);  //取GPIO的功能配置值

printk("     [%s] function value: %ld\n",pin_name,SUNXI_PINCFG_UNPACK_VALUE(config_get));

取GPIO上拉下拉电阻继电器,看手册 0不使用,1上拉 ,2下拉

config_get = SUNXI_PINCFG_PACK(SUNXI_PINCFG_TYPE_PUD, 0XFFFF);

pin_config_get(SUNXI_PINCTRL, pin_name, &config_get);

printk("       [%s] pull value: %ld\n", pin_name, SUNXI_PINCFG_UNPACK_VALUE(config_get));

//config_set = SUNXI_PINCFG_PACK(SUNXI_PINCFG_TYPE_PUD, 1);

//pin_config_set(SUNXI_PINCTRL, pin_name, config_set);

R40 gpio 使用【原创】相关推荐

  1. R40 gpio 寄存器地址操作【原创】

    首先要学会看手册,下面拿PC来做说明. 3.18.3.  Register List Module Name  Base Address PIO  0x01C20800 Register Name   ...

  2. R40使用GPIO中断实现按键功能【原创】

    采用创建input的方式 可以通过 cat /proc/bus/input/devices 查看生成的input设备对应的event句柄,比如 I: Bus=0019 Vendor=0001 Prod ...

  3. [原创]ACPI.sys,从Windows到Bios的桥梁(2):Windows应用程序响应主板上GPIO(SCI)设备中断 软件篇

    引言 在上一篇<ACPI.sys,从Windows到Bios的桥梁(2):Windows应用程序响应主板上GPIO(SCI)设备中断 硬件篇>只完成了2件事: 1.Bios接收GPIO S ...

  4. zynq linux内核驱动编写,【原创】Linux下驱动Zynq GPIO (Switch、button、led)

    版权声明: 本文由电子技术应用博主"cuter"发布.欢迎转载,但不得擅自更改博文内容,也不得用于任何盈利目的.转载时不得删除作者简介和作者单位简介.如有盗用而不说明出处引起的版权 ...

  5. 全志R40 UBOOT 2014.07【原创】

    全志对一部分uboot是不开源的,比如boot0_nand_sun8iw11p1.bin,boot0_sdcard_sun8iw11p1.bin,boot0_spinor_sun8iw11p1.bin ...

  6. android gpio操作

    public class GPIOUtil {     //读GPIO     private String getGpioString(String path) {         String d ...

  7. 高通平台gpio简单调试

    版权声明:本文为博主原创文章,未经博主允许不得转载.    https://blog.csdn.net/u010164190/article/details/83860374 0.编译读写gpio寄存 ...

  8. Linux内核中的GPIO系统之(3):pin controller driver代码分析

    一.前言 对于一个嵌入式软件工程师,我们的软件模块经常和硬件打交道,pin control subsystem也不例外,被它驱动的硬件叫做pin controller(一般ARM soc的datash ...

  9. linux内核中的GPIO系统之(2):pin control subsystem

    一.前言 在linux2.6内核上工作的嵌入式软件工程师在pin control上都会遇到这样的状况: (1)启动一个新的项目后,需要根据硬件平台的设定进行pin control相关的编码.例如:在b ...

最新文章

  1. eeglab教程系列(10)-绘制ERP图像
  2. Docker导入、导出、删除容器
  3. shell 远程协助协助(转载)
  4. 给大家分享一个简单的例子 给SWF加一个壳
  5. 信息竞赛进阶指南--搜索相关(模板)
  6. init.d目录理解
  7. 为什么感觉农村人在城里工作后,大部分都变了?
  8. 1-2 软件构造的质量目标
  9. FFmpeg API 变更记录
  10. Selenium之脚本编写页面通用定位方法
  11. 少儿编程内容(市场各年龄段热门学习软件列表)
  12. 基于LabVIEW 2018开发的自动化测试系统源码,该系统模仿TestStand编写
  13. 矩阵的逆及求逆矩阵的方法,可逆矩阵定理与判定方法,(非)奇异矩阵,方程Ax=b解法,Hilbert矩阵及其逆的求法,条件数(Condition Number)及其计算方法
  14. [渝粤教育] 西南科技大学 英语国家概况 在线考试复习资料
  15. Intent中putExtra()方法用法
  16. pynq 环境搭建_PYNQ系列学习(一)——Pynq开发环境配置
  17. 大数据处理的关键技术是什么?
  18. EOJ Contest61 2018研究生面试机考(软件工程)个人题解
  19. 无限创世5.0.0游戏
  20. KNN的实现——KD树

热门文章

  1. ideal新建springboot工程_MyBatis初级实战之一:Spring Boot集成
  2. “打击式教育”盛行?数据分析剖析“中式父母”的“打压式教育”
  3. 裁员见司品,程序员趁早准备退路
  4. 凌晨一点的粤海街道对抗来自美国的力量|湾区人工智能
  5. redmine一键安装
  6. mysql把结果变横表_mysql纵表与横表转换实例
  7. 轻松获得网通、电信、铁通IP地址分配段
  8. 知乎首次举办上星晚会 定档除夕前夜
  9. 1TB存储版iPhone 13 Pro机型预计交付时间已被推迟至10月
  10. 2020年苹果App Store销售额达6430亿美元 同比增长24%