R40 gpio 使用【原创】
首先要申请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 使用【原创】相关推荐
- R40 gpio 寄存器地址操作【原创】
首先要学会看手册,下面拿PC来做说明. 3.18.3. Register List Module Name Base Address PIO 0x01C20800 Register Name ...
- R40使用GPIO中断实现按键功能【原创】
采用创建input的方式 可以通过 cat /proc/bus/input/devices 查看生成的input设备对应的event句柄,比如 I: Bus=0019 Vendor=0001 Prod ...
- [原创]ACPI.sys,从Windows到Bios的桥梁(2):Windows应用程序响应主板上GPIO(SCI)设备中断 软件篇
引言 在上一篇<ACPI.sys,从Windows到Bios的桥梁(2):Windows应用程序响应主板上GPIO(SCI)设备中断 硬件篇>只完成了2件事: 1.Bios接收GPIO S ...
- zynq linux内核驱动编写,【原创】Linux下驱动Zynq GPIO (Switch、button、led)
版权声明: 本文由电子技术应用博主"cuter"发布.欢迎转载,但不得擅自更改博文内容,也不得用于任何盈利目的.转载时不得删除作者简介和作者单位简介.如有盗用而不说明出处引起的版权 ...
- 全志R40 UBOOT 2014.07【原创】
全志对一部分uboot是不开源的,比如boot0_nand_sun8iw11p1.bin,boot0_sdcard_sun8iw11p1.bin,boot0_spinor_sun8iw11p1.bin ...
- android gpio操作
public class GPIOUtil { //读GPIO private String getGpioString(String path) { String d ...
- 高通平台gpio简单调试
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010164190/article/details/83860374 0.编译读写gpio寄存 ...
- Linux内核中的GPIO系统之(3):pin controller driver代码分析
一.前言 对于一个嵌入式软件工程师,我们的软件模块经常和硬件打交道,pin control subsystem也不例外,被它驱动的硬件叫做pin controller(一般ARM soc的datash ...
- linux内核中的GPIO系统之(2):pin control subsystem
一.前言 在linux2.6内核上工作的嵌入式软件工程师在pin control上都会遇到这样的状况: (1)启动一个新的项目后,需要根据硬件平台的设定进行pin control相关的编码.例如:在b ...
最新文章
- eeglab教程系列(10)-绘制ERP图像
- Docker导入、导出、删除容器
- shell 远程协助协助(转载)
- 给大家分享一个简单的例子 给SWF加一个壳
- 信息竞赛进阶指南--搜索相关(模板)
- init.d目录理解
- 为什么感觉农村人在城里工作后,大部分都变了?
- 1-2 软件构造的质量目标
- FFmpeg API 变更记录
- Selenium之脚本编写页面通用定位方法
- 少儿编程内容(市场各年龄段热门学习软件列表)
- 基于LabVIEW 2018开发的自动化测试系统源码,该系统模仿TestStand编写
- 矩阵的逆及求逆矩阵的方法,可逆矩阵定理与判定方法,(非)奇异矩阵,方程Ax=b解法,Hilbert矩阵及其逆的求法,条件数(Condition Number)及其计算方法
- [渝粤教育] 西南科技大学 英语国家概况 在线考试复习资料
- Intent中putExtra()方法用法
- pynq 环境搭建_PYNQ系列学习(一)——Pynq开发环境配置
- 大数据处理的关键技术是什么?
- EOJ Contest61 2018研究生面试机考(软件工程)个人题解
- 无限创世5.0.0游戏
- KNN的实现——KD树
热门文章
- ideal新建springboot工程_MyBatis初级实战之一:Spring Boot集成
- “打击式教育”盛行?数据分析剖析“中式父母”的“打压式教育”
- 裁员见司品,程序员趁早准备退路
- 凌晨一点的粤海街道对抗来自美国的力量|湾区人工智能
- redmine一键安装
- mysql把结果变横表_mysql纵表与横表转换实例
- 轻松获得网通、电信、铁通IP地址分配段
- 知乎首次举办上星晚会 定档除夕前夜
- 1TB存储版iPhone 13 Pro机型预计交付时间已被推迟至10月
- 2020年苹果App Store销售额达6430亿美元 同比增长24%