am335x嵌入式开发-GPIO操作
来源:互联网 发布:java quartz 编辑:程序博客网 时间:2024/05/20 05:28
GPIO操作是嵌入式开发中最常见的操作,本文将从硬件、驱动层、应用层去剖析am335x soc 的GPIO操作。
官方文档
ti官方关于gpio的支持,点击以下链接进入
官方文档1
官方文档2
应用层使用
GPIO编号
GPIO的所有操作都是基于编号的,可以说编号是一个GPIO的ID,TI AM335x系列处理器GPIO的编号规则如下:
pin_num=bank_num∗32+pin_bank_num pin_num=GPIO编号 bank_num=GPIO块编号 pin_bank_num=GPIO在GPIO块中的子编号 AM335x系列SOC有4个bank,每个bank有32个GPIO,一共支持
32∗4=128 个GPIO,GPIO的bank表示方法为: bank0[0:31] bank1[0:31] bank2[0:31] bank3[0:31]。例如芯片上有一个pin为gpio2_3,
则这个pin的GPIO编号为:number=2∗32+3=67
GPIO操作实例
- 将GPIO映射到sysfs文件系统:
# echo 67 > /sys/class/gpio/export
- 设置GPIO模式(设置为IO口模式):
# echo "7" > /sys/class/gpio/gpio67/mode
- 设置GPIO方向(输入或输出):
# echo "out" > /sys/class/gpio/gpio67/direction
or
# echo "in" > /sys/class/gpio/gpio67/direction
操作GPIO
设置GPIO电平
# echo 0 > /sys/class/gpio/gpio67/value // set gpio value to low# echo 1 > /sys/class/gpio/gpio67/value // set gpio value to high
读GPIO当前电平
# cat /sys/class/gpio/gpio67/value // read gpio value# 1
- 解除GPIO映射
# echo 67 /sys/class/gpio/unexport
内核配置
要使能linux下的GPIO功能,需要对内核进行配置,笔者使用的sdk是 sdk-am335x-evm-05.06.00.00 的官方发布包,主机系统为ubuntu-14.04。假设sdk的配置已经做过。
- 进入内核配置
# make CROSS_COMPILE=arm-arago-linux-gnueabi- ARCH=arm menuconfig
在执行过程中报错,显示很多调用找不到,这是因为ubuntu缺少一些库的支持,解决办法如下:
# sudo apt-get install libncurses5 libncurses5-dev
- 使能内核的GPIO功能
- 退出保存并重新编译内核
驱动使用GPIO
驱动路径
am335x gpio驱动包含两个文件:
源码文件 说明 drivers/gpio/omap-gpio.c 处理器 gpio驱动 drivers/gpio/omap-gpiolib.c sysfs gpio驱动、
如何在kernel中使用GPIO
API 实例 说明 gpio_request()err = gpio_request(67, “sample_name”);
申请GPIO资源 gpio_free()err = gpio_free(67);
释放GPIO资源 gpio_direction_input()err = gpio_direction_input(67);
将GPIO设为输出 gpio_direction_output()err = gpio_direction_output(67,1);
将GPIO设为输出并初始化高 gpio_get_value()val = gpio_get_value();
读取GPIO的当前电平‘
如何在kernel中使用GPIO中断
API 实例 说明 gpio_to_irq()irq_num = gpio_to_irq(67);
获取GPIO中断号 request_irq()request_irq(irq_num, handler, 0, “gpio_test”, NULL);
申请中断 set_irq_type()set_irq_type(irq_num, IRQ_TYPE_EDGE_RISING);
设置中断类型 free_irq()free_irq(irq_num, NULL);
释放中断’
注意:在使用gpio中断前要先申请对应的GPIO资源,在释放中断后要释放GPIO资源
芯片GPIO结构
- am335x嵌入式开发-GPIO操作
- 嵌入式Linux GPIO 操作
- am335x嵌入式开发-bootloader启动流程
- 【嵌入式Linux+ARM】GPIO操作
- 【嵌入式Linux+ARM】GPIO操作
- Am335x 之GPIO控制
- am335x gpio驱动
- Am335x 之GPIO控制
- AM335X 开发板安装vsftpd操作流程
- 学习嵌入式linux开发板之iTOP-4412 开发板如何操作GPIO
- tiny4412-arm嵌入式开发裸板驱动 (二):arm基础GPIO操作
- 嵌入式GPIO接口及操作(一)
- 嵌入式GPIO接口及操作(二)
- Am335x 下GPIO控制实例
- 嵌入式Linux基于Qt开发GPIO应用
- STM32F103C8开发GPIO操作(一)
- linux下AM335X的GPIO控制
- linux gpio debug log(AM335X)
- String类型
- 代码检测工具(一)FindBugs、PMD和CheckStyle概况、安装
- PHP数值的保留2位小数和四舍五入
- 用JAVA写的插入排序
- 代码检测工具(二)findbugs学习
- am335x嵌入式开发-GPIO操作
- spring mvc 的两种配置方式继承controller和xml配置delegate
- 开发环境配置(一) Flash Builder4.6 破解方法的实践
- 深入理解Linux内核 Memory Addressing Chapter-2
- 【Hibernate】映射关系总结
- ccsv6添加simulator功能
- 数据库邮件发送
- 常用的正则表达式
- spring mvc 的配置 (mvc 和servlet<action>的配置)