【ARM】Tiny4412裸机编程之GPIO简介
00. 目录
文章目录
- 00. 目录
- 01. GPIO概述
- 02. GPIO寄存器
- 03. GPIO框图
- 04. 附录
01. GPIO概述
GPIO(General Purpose I/O Ports)意思为通用输入/输出端口,通俗地说,就是一些引脚,可以通过它们输出高低电平、或者通过它们读入引脚的状态──是高电平还是低电平。在嵌入式系统中常常有数量众多,但是结构却比简单的外部设备/电路,对这些设备/电路,有的需要CPU为之提供控制手段,有的则需要被CPU用作输入信号。而且,许多这样的设备/电路只要求一位,即只要有开/关两种状态就够了。
三星 Exynos 4412,它有 304 个 GPIO,分为 GPA0、GPA1、GPB、GPC0、GPC1 等共 37 组。可以通过设置寄存器来确定某个引脚用于输入、输出还是其它特殊功能。比如可以设置 GPC0、GPC1 作为一般的输入引脚、输出引脚,或者用于 AC97、SPDIF、I2C、SPI 口。
GPIO 的操作是所有硬件操作的基础,由此扩展开来可以了解所有硬件的操作,这是底层开发人员必须掌握的。
02. GPIO寄存器
既然一个引脚可以用于输入、输出或其它特殊功能,那么一定有寄存器用来选择这些功能;对于输入,一定可以通过读取某个寄存器来确定引脚的电平是高还是低;对于输出,一定可以通过写入某个寄存器来让这个引脚输出高电平或低电平;对于其它特殊功能,则有另外的寄存器来控制它。
如上推测,对于这几组 GPIO 引脚,它们的寄存器是相似的:
GPXXCON 用于选择引脚功能,控制寄存器。
GPXXDAT 用于读/写引脚数据,数据寄存器。
GPXXPUD 用于确定是否使用内部上拉/下拉电阻。上下拉寄存器。
控制寄存器
从寄存器的名字即可看出,它用于“配置”(Configure)──选择引脚的功能。该寄存器中,使用 4 位来配置 1 个引脚。
当 GPA0CON 的 bit[31:28]值为 0b0000 时,引脚 GPA0 被设置为输入引脚;
当 GPA0CON 的 bit[31:28]值为 0b0001 时,引脚 GPA0 被设置为输出引脚;
当 GPA0CON 的 bit[31:28]值为 0b0010 时,引脚 GPA0 被设置为特殊功能 UART 引脚;
当 GPA0CON 的 bit[31:28]值为 0b0011 时,引脚 GPA0 被设置为特殊功能 I2C 引脚;
当 GPA0CON 的 bit[31:28]值为 0b1111 时,引脚 GPA0 被设置为中断引脚。
数据寄存器
用于读/写引脚:当引脚被设为输入时,读此寄存器可知相应引脚的电平状态是高还是低;当引脚被设为输出时,写此寄存器相应位可令此引脚输出高电平或低电平。
上下拉寄存器
使用 2 位来控制 1 个引脚:值为 0b00 时,相应引脚无内部上拉/下拉电阻;值为 0b01 时,使用内部下拉电阻;值为 0b11 时,使用内部上拉电阻;0b10 为保留值。
上下拉电阻
GPIO有三种状态:高电平、低电平和高阻状态。
上拉电阻、下拉电阻的作用在于,当 GPIO 引脚处于第三态(既不是输出高电平,也不是输出低电平,而是呈高阻态,即相当于没接芯片)时,它的电平状态由上拉电阻、下阻电阻确定。
03. GPIO框图
GPIO 包含两部分,分别是 alive 部分和 off 部分。Alive 部分的电源由睡眠模式提供,off 部分与它不同。因此,寄存器可以在睡眠模式下保持原值。
04. 附录
Exynos 4412 SCP_Users Manual_Ver.0.10.00_Preliminary0.pdf
【ARM】Tiny4412裸机编程之GPIO简介相关推荐
- 【ARM】Tiny4412裸机编程之LED(一)
00. 目录 文章目录 00. 目录 01. 控制原理 02. 配置寄存器 03. 程序示例一 04. 程序示例二 05. 程序示例三 06. 附录 01. 控制原理 咱们的LED在核心板上,所以需要 ...
- 【ARM】Tiny4412裸板编程之MMU简介
00. 目录 文章目录 00. 目录 01. MMU简介 02. MMU发展 03. 地址分类 04. MMU工作过程 05. 段地址转换过程 06. 二级页表描述符 07. TLB的作用 08. C ...
- 一、shell编程之shell简介
1. shell简介 1.1. 什么是 shell Shell俗称壳程序,是一种由C语言编写的用于和操作系统交互的命令解析器软件.它用来接收用户输入命令,然后调用相应的应用程序. Shell 是一个用 ...
- s3c2440arm裸机编程之ADC触摸屏
ADC触摸屏 硬件原理 s3c2440有8通道的ADC,一次同时只能查询一个通道.分为A0~A7.这里的P(positive)表示的是正的意思 ADC通道 A4 TSYM -Y A5 TSYP ...
- ARM嵌入式编程之STM32的命名方法 STM32F103VET6命名解释
ARM嵌入式编程之STM32的命名方法 STM32F103VET6命名解释: ARM嵌入式编程之STM32的命名方法 STM32F103VET6命名解释
- C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻
前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...
- UART0串口编程(四):UART0串口编程之在UC/OS—II中遭遇的危机
UART0串口编程之在UC/OS-II中遭遇的危机 一.潜在的危机 1.在uc/os操作系统中设计串口编程时,由于ISR和多个任务并发执行,情况比较复杂.尤其是接收状态为被动状态时,只能靠串行口中断来 ...
- 父与子的编程之旅:与小卡特一起学Python.pdf
下载地址:网盘下载 编辑推荐 编程是一项充满乐趣的挑战,想要上手也非常容易!这本<父与子的编程之旅:与小卡特一起学Python>中,Warren和Carter父子以亲切的笔调.通俗的语言, ...
- iOS网络编程之Socket
[深入浅出Cocoa]iOS网络编程之Socket 罗朝辉 (http://blog.csdn.net/kesalin) CC 许可,转载请注明出处 更多 Cocoa 开发文章,敬请访问<深入浅 ...
最新文章
- Mac虚拟机安装windows教程--Parallels 5
- html5倒计时秒杀怎么做,vue 设计一个倒计时秒杀的组件
- 10分钟学会js处理json常用方法
- 结合源码深入理解Android Crash处理流程
- spark sql 1.2.0 测试
- Golang源码探索(一) 编译和调试源码
- Apache Web Server - httpd的HTTP的多路处理模块MPM
- Dedecms会员中心注入漏洞
- 编译调试Apache HTTP Server
- windows L2TP 拨号无法连接
- 常用网络端口用处归纳
- 光电信息科学与工程学c语言吗,光电信息工程专业排名_光电信息科学与工程专业可以考什么专业的研究生...
- docker部署mysql出错:mysqld: Can't read dir of '/etc/mysql/conf.d/' (Errcode: 13 - Permission denied)
- H5微信公众号关闭页面
- 怎么计算一个月有多少天
- scp 保留文件属组_SCP命令用法详解-hdparm工具参数详解-改变文件组命令chgrp和改变文件属主命令chown_169IT.COM...
- 苹果系统 macOS Mojave 10.14.4上安装 Ubuntu 18.04 双系统
- 如何在控制台创建文件夹
- Matlab学习-常用命令技巧
- 篮球总是提示服务器维护中,范特西篮球经理3月7日服务器维护公告