GPIO和门电路

1. GPIO

1.1 简介

GPIO, General Purpose I/O, 通用输入输出接口, 是最简单的数字输入输出引脚
- 作为输出可以有两种状态: 0和1
- 作为输入,它接收外面输入的数字信号

1.2 功能

GPIO可以用于输入、输出或其他特殊功能
通常通过寄存器配置引脚功能用来选择这些功能
- 输入: 可以通过读取某个寄存器来确定引脚电平的高低; 如读取某个按键是否按下
- 输出: 可以通过写入某个寄存器来让这个引脚输出高电平或者低电平; 如用于控制灯的状态
- 其他特殊功能: 有另外的寄存器来控制它们; 如中断功能, 该引脚即具有输入功能,同时还能中断CPU

1.3 上拉电阻

上拉电阻和NPN三极管、下拉电阻和PNP三极管
上拉/下拉电阻的作用在于确定悬空引脚电平状态
当GPIO引脚处于第三态(即不是输出高电平,也不是输出低电平,而是呈高阻态,即相当于没接芯片)时
它的电平状态由上拉电阻、下拉电阻确定

如上拉电阻,对于输入引脚,可以用于确定电平状态(高、低)

1.4 S3C2410

以S3C2410为例,共有117个I/O端口, 共分为A~H共8组: GPA、GPB、...、GPH
可以通过设置寄存器来确定某个引脚用于输入、输出还是其他特殊功能

相关寄存器有
- GPxCON用于选择引脚功能
- GPxDAT用于读/写引脚数据
- GPxUP用于确定是否使用内部上拉电阻

(TIP:不是所有引脚均有上拉电阻)

1.4.1 寄存器

GPxCON寄存器:它用于配置(Configure)选择引脚功能。
GPxCON中每两位控制一根引脚:00表示输入、01表示输出、10表示特殊功能、11保留不用。

GPxDAT寄存器:用于读/写引脚
当引脚被设为输入时,读此寄存器可知相应引脚的电平状态是高还是低
当引脚被设为输出时,写此寄存器相应位可以令此引脚输出高电平或是低电平

GPxUP寄存器:某位为1时,相应引脚无内部上拉电阻;为0时,相应引脚使用内部上拉电阻

1.4.2 GPIO引脚的使用

S3C2440引脚的操作有3种:输出高低电平、检测引脚状态、中断

以点亮LED为例, mini2440 LED1-4分别对应GPB5-8
如果要控制这些LED,那么我们首先要把GPBCON寄存器中GPB5-8对应的位设为输出功能
然后写GPBDAT寄存器的相应位,使这4个引脚输出高低电平

一般是低电平有效
- 高电平时,对应LED熄灭
- 低电平时,对应LED点亮

通过下面的代码让GPB5输出低电平,点亮LED1

/*
 * 通过S3C2440的datasheet查到GPBCON和GPBDAT寄存器的地址
 */
#define GPBCON (*(volatile unsigned long *) 0x56000010)
#define GPBDAT (*(volatile unsigned long *) 0x56000014)
/*
 * 两位控制一个引脚, 那么GPB5就是GPBCON的[11:10]位
 * 1左移10位, 则[11:10]为01, 表示GPB5为输出
 */
#define GPB5_OUT (1<<(5*2))GPBCON = GPB5_OUT;
/*
 * 1左移5位取反, 那么第5位为0, 即GPB5输出低电平, 点亮LED1
 */
GPBDAT &= ~(1<<5);

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

2. 门电路

门电路包括 非门、与门、或门、与非门、或非门

时间: 2024-11-16 02:59:55

GPIO和门电路的相关文章

嵌入式行业入门指导---知乎转载【转】

此文是本人在知乎上看的,觉得很好就分享出来了,并不是本人原创 转自:https://www.zhihu.com/question/47881392 作者:shang链接:https://www.zhihu.com/question/47881392/answer/146734937来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 嵌入式Linux+Android学习路线图作者:韦东山 本文目录1. 程序员的三大方向 1.1 专业领域 1.1.1 学术研究 1.1.2

嵌入式学习笔记4-学前班

微机原理:侧重于计算机结构 数电:侧重于门电路 1.GPIO和门电路 输入输出引脚.上拉电阻.三极管 与门.或门.非门 中断 2.协议类 UART.I2C.SPI.NAND:K9F2G08u0m.LCD a.看原理图:2440和外接的芯片引脚对接即可 b.弄清楚接口的协议:数据怎么传输?各引脚怎么配合? c.设置时序:2440发出的各个信号,要让外接的芯片能反应过来 弄清楚2440能设置哪些参数,这些参数的含义(以clk为单位) 看外设芯片手册,弄清楚这些参数的取值范围(以秒为单位) 根据1.2

2017-3-4学习笔记

1.1课:怎么看原理图之GPIO和门电路 (1)GPIO和门电路:输入输出引脚,三极管,上拉下拉电阻,与或非门等等 (2)协议类接口(双方约定信号的协议,双方满足时序要求) <1>UART: <2>IIC <3>SPI <4>NAND: 怎么设置时序: (1)看2440手册,确定能设置什么参数: (2)看外设手册,入nandflash,确定取值: (3)计算,看2440,看看怎么计算,看看参数的含义: <5>LCD: VClock:电子枪 没来一

裸机笔记

1.GPIO和门电路 1.1 输入.输出引脚.上拉电阻.三极管 现阶段的引脚都可以同时作为输出和输入引脚,在使用时需要进行寄存器进行相应配置. 配置引脚功能为读,引脚为输入引脚:配置引脚功能为写,引脚为输出引脚. 上拉电阻(NPN三极管):作用对于输入引脚,可以用它来确定输入状态 下拉电阻(PNP三极管):开发板输出1,悬空引脚为0:开发板输出1,悬空引脚为1. 1.2 与门.或门.非门 非门:使通过的电流与输出电流相反 与门: 或门: 中断引脚:具有输入功能,同时可以中断CPU. 2.协议类

嵌入式学习笔记1-第一期顺序及基本介绍

本光盘内容适合所有的S3C2440开发板,并不限于JZ2440.建议的学习顺序:1. 不懂看原理图的同学,先看学前班视频2. 刚接触开发板的同学 一是先看"百问网精智JZ2440开发板3.5寸LCD版使用手册.pdf"或"百问网精智JZ2440开发板3.5寸LCD版使用手册.pdf" 二是看第0课视频 这两部分是相辅相成的,可以了解基本概念.基本操作 注意:如果你用的是其他开发板,比如TQ2440.MINI2440,还需要看这两节视频: 第0课第8节_在TQ2440

韦东山linux视频第一期前两节观看收获

刚刚看了韦东山的linux视频第一期,主要讲解的ARM的硬件基础,对于我这样一个从单片机转过来的人来说,的确震撼! 我看过很多书和视频关于单片机的,但是从来没有一个会做到这么精练的.对,精练,归纳总结的相当好. 第一节 原理图之GPIO和门电路 第一节里,简要介绍了一些模拟电路,内容简单,但是却话出了最实用的的部分. (1)以前在模电课上,三极管这一节课可是花费了相当章节,结果让人云里雾里,不知道怎么去用.但是在这里,韦东山老 师没有多余的部分,直接把最直接.最有效的部分给了我们.P即正,N即负

01嵌入式入门-如何看原理图

最近由于找到的工作是偏于嵌入式方向,因此又重新开始学习已经丢弃两年的知识.新手学习知识感觉有一个通病:喜欢收集各种各样的视频.资料,网盘里收藏一大堆,但是却从没有打开看过,到头来还是个小白,只听说过几个概念,而实际却是不知所云,这就是所谓的"学习综合征".而我也是其中的一员,最近痛定思痛,就准备根据一套资料沉下心学习下去,不再进入收集资料的大军.市场上关于嵌入式方面的视频或资料有很多,比如国嵌.韦东山.华清远见.朱有鹏等等,各有千秋但是最后还是殊途同归,以我之见把其中一套吃透也算是入门

【内核配置】七、百问网视频说明文件

目录 第一部分 开发板选型说明第二部分 编译器选择第三部分 怎么看原理图 第一部分  开发板选型说明 视频是以JZ2440为模板录制的,里面讲解的程序并不能照搬到TQ2440.MINI2440等其他开发板,但是修改并不复杂. 全地球的2440开发板,基本上只有按键.LED用的引脚不同,LCD参数不同. 使用JZ2440的好处是,视频里的代码不用修改就可以直接运行.使用其他开发板也有好处,虽然你得自己修改代码,但是修改过程中会让你学到更多东西.并且我们也提供了TQ2440/MINI2440的代码.

【嵌入式Linux+ARM】硬件相关基础知识(门电路_UART_I2C_SPI)

比较基本的一些知识,就算再怎么水,一些基本的电路常识还是需要懂的,需要自己慢慢的积累,实际工作中需要好好积累硬件相关的知识: 正文开始: 1.门电路 与门.或门.非门的几个标志需要记住,特别是后面两个不要混淆,自己画了一遍: 实际电路中可以组合使用:如与非门.或非门等复杂电路. 这些是比较简单的,做个简单的复习: 与门:1 1-->1      1 0-->0      0 1-->0     0 0-->0 或门:1 1-->1      1 0-->1      0