GPIO相关知识
参考资料:
1. 维基百科GPIO
2. GPIO博客资料(一)
3. MMIO和PMIO
知识点:
● GPIO是General-purpose input/output的缩写,是一个在集成电路上的通用pin,它在运行时作为输入pin或输出pin受控于用户。GPIO没有预定义的目标(输入或输出),默认为未使用。
● GPIO的能力有:①GPIO pins可被配置为input或output(片选或时钟产生器);②GPIO pins可被enabled或disabled;③Input值是可读的(比如 high=1,low=0);④Ouput的值是可读写的;⑤Input的值通常被用作IRQs(比如唤醒时间)。GPIO pin的状态可以通过多种接口暴露给软件开发者,比如内存映射外设或特定I/O端口指令等。
● GPIO port是一组GPIO pins(比如8个GPIO pins),它们作为一个整体,按组接受控制。
● 在嵌入式系统中,对一些结构较简单的外设或电路,通常只要求一位,即开/关两种状态,就可以实现控制。显然,串口和并口在这里都不合适。因此,微控制器芯片一般都会提供一个“通用可编程I/O接口GPIO”。接口一般会有通用控制寄存器和通用数据寄存器,甚至会有上拉寄存器。有无GPIO接口是区别微处理器和微控制器的一个特征。
● Memory-mapped I/O(MMIO)和Port-mapped I/O(PMIO)是两种互补的方法,用以执行CPU和外设的I/O操作。
● MMIO使用对内存和I/O设备使用相同地址总线,内存和I/O设备寄存器被映射到地址值。因此,当CPU访问一个地址时,它可能是访问某一物理RAM,也可能是I/O设备的内存(寄存器)。因此,CPU访问内存的指令也可以被用来访问设备。I/O设备监视CPU地址总线并响应访问设备的地址,连接数据总线到期望的设备硬件寄存器中。一般情况下,I/O寄存器与内存是统一编址(可临时或永久)。
● PMIO使用特定的CPU指定来操作I/O,比如in和out指令。一般,I/O设备拥有独立的地址空间(相对于内存),通常用额外的“I/O”pin或者特定的I/O总线实现。
● 设备DMA不会受到CPU-to-device通信方式的影响,因为它绕过了CPU。
● 硬件中断是CPU和外设交互的另一种方式。它是以外设主动发起的,且每条中断线的每一位都有固定的含义,而上边的两个方法则是以CPU发起的。

GPIO相关知识的更多相关文章
- 【STM32H7教程】第15章 STM32H7的GPIO基础知识(重要)
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第15章 STM32H7的GPIO基础知识(重要) ...
- 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸
类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...
- 移动WEB像素相关知识
了解移动web像素的知识,主要是为了切图时心中有数.本文主要围绕一个问题:怎样根据设备厂商提供的屏幕尺寸和物理像素得到我们切图需要的逻辑像素?围绕这个问题以iphone5为例讲解涉及到的web像素相关 ...
- listener监听器的相关知识
从别人的博客上我学习了listener的相关知识现在分享给大家 1.概念: 监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上 ...
- UIViewController相关知识
title: UIViewController 相关知识date: 2015-12-13 11:50categories: IOS tags: UIViewController 小小程序猿我的博客:h ...
- 【转】java NIO 相关知识
原文地址:http://www.iteye.com/magazines/132-Java-NIO Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的 ...
- NSString使用stringWithFormat拼接的相关知识
NSString使用stringWithFormat拼接的相关知识 保留2位小数点 1 2 3 4 //.2代表小数点后面保留2位(2代表保留的数量) NSString *string = [NSSt ...
- iOS网络相关知识总结
iOS网络相关知识总结 1.关于请求NSURLRequest? 我们经常讲的GET/POST/PUT等请求是指我们要向服务器发出的NSMutableURLRequest的类型; 我们可以设置Reque ...
- 电路相关知识--读<<继电器是如何成为CPU的>>
电路相关知识–读<<继电器是如何成为CPU的>> */--> *///--> *///--> 电路相关知识–读<<继电器是如何成为CPU的> ...
随机推荐
- MySQL 启动时禁用了 InnoDB 引擎的解决方法
今天在从本地数据库复制表数据到虚拟机 CentOS 6.6 上的数据库时,得到提示: Unknown table engine 'InnoDB' 于是在服务器 MySQL 中查看了引擎: mysql& ...
- 修改ArcGIS Server Account / 站点管理员的 账号、密码
安装ArcGIS Server(10.1之后版本)时会先后创建两个账户:ArcGIS Server Account和站点管理账户 ArcGIS Server Account 是操作系统账户,Serve ...
- android中自定义的dialog中的EditText无法弹出输入法解决方案
1.解决无法弹出输入法: 在show()方法调用之前,用dialog.setView(new EditText(context))添加一个空的EditText,由于是自定义的AlertDialog,有 ...
- mysql重点--执行计划
explain SQL: 在sql语句前面加explain实现"执行计划"的功能.功能是比较准确的显示将要执行这条sql语句的运行状况. select_simple 是查询类型:t ...
- sshpass 用法举例
关于sshpass 背景 在Linux后台中,经常会用到ssh.scp等命令.需要进行认证,手动输入密码,是交互式的过程. 当将ssh.scp等命令做成自动化脚本时,可能需要非交互式的登录过程,此时可 ...
- 手写一个更好用的performSelector/msgSend(详细修改版)
这其实是一个NSInvocation练习作业 GitHub源码 vk_msgSend 引子 工作中难免会遇到一些场景,开发的时候不想引入整个头文件,但是又想调用一些方法 动态创建,动态调用看起来比较酷 ...
- Python之路-python(常用模块学习)
模块介绍 time &datetime模块 random os sys shutil shelve xml处理 yaml处理 configparser hashlib re正则表达式 1.模块 ...
- Xunsearch迅搜(基于 xapian+scws 的开源中文搜索引擎)安装与简单使用
今天鼓捣了xunsearch,感觉官方指南写得挺详细,于是按照指南一步一步走,但是感觉越看越凌乱,像看API一样,新手看得特费劲,网上也少有新手教程,于是略过今天的歪路,记录一下我的安装步骤. Xun ...
- 第一次尝试编写java
昨晚手贱,不小心把环境变量path里面都东西全删除了 然后上百度搜了一波又一波 最后还是复制达达的 感动 然后还是不行,最后发现错误竟然是分号用了汉字的分号而不是英文的分号 这个问题在编写C语言也出现 ...
- javascript瀑布流布局效果