开发者学堂课程【嵌入式之 RFID 开发与应用2020版:Cc2530 GPIO 配置】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/665/detail/11127
Cc2530 GPIO 配置
对于单片机或者是微处理器 MPU,首先要了解他的外围接口。
不管是 MCU 还是 MPU 跟外界沟通是通过管脚来实现的,所以每个芯片有无数的管脚。
它有三个的 IO 口,实际上他可能没有 24 个,它的 IO 口一共是 P0 到 P2,P0P1P2。P0 和 P1 分别都是八个。P2 只有 p2.0-p2.4。总共有 21 个 IO 口。这些IO 都可以配置,可可以任意的去配置成想要的功能,最常见的就是把它配成普通的输出的功能。
主要是三个寄存器,一个是 SEL,一个是 DIR 一个是 INP,这三个寄存器的作用可以到手册里面去看,非常详细的讲解三个寄存器分别的作用。
配置 IO 寄存器:
SEL:配置普通和利用功能,0 是普通 IO,1 表示复用 IO
IO 口可以作为普通的,规定他输出 1 还是 0 或者读取 1 或者 0 高低电平,也可以用在外部的一些模块,比如串口、Iphone se 这种特殊的。但他的这个高电平就不是自己来决定的,它是由这种接口的时序来决定的,一般情况的话呢,0 是普通 IO,普通的输出。1 表示复用 IO。复用表示串口或者是其他的接口。但是复用的CC2530 芯片有一些地方跟 32 非常像,STM32 就依法半导体会做一些 IO 的复用或者映射,比如串口。P0.2 和 p0.3 是用于串口,可能这个串口用在 P1.2 和 P1.3也是串口,而且都是同样的串口,这个时候就根据实际的情况去设置优先使用 IO口使用的串口。
DIR 其实就是配置 IO 方向,0 表示输入,1 表示输出。
INP 其实就是决定配置 IO 上下拉电阻,0 表示使能上下拉上下,1 表示三态。
P0SEL 是决定功能的,0 表示普通 IO,P0DIR 是方向,0 是输入。P0INP 表示使能上下拉,有上有下拉,但是上拉还是下拉,由另外一个 INP 来决定,另外一个 INP 就是 P2 的 INP。P2INP 的 P0 来决定 P0 的 IO 口。P0 和 P1 的 INP 决定是否上下拉,
P2 的 INP 是第七位的 1 和 0 决定端口 2 的上下拉,以及端口 1 和端口 0 的上下拉。P0 为端口位,第 5 位,为 0 是上拉,为 1 是下拉。
假设使用某个 IO,比如要将 P0.0 或者 P0.1,输出一个高低电平,那你需要做的配置就把 POSEL 设成 0,PODIR 设成 1。拉不拉取决于是否决定把他的这个驱动能力增强或者是你外部接的外设的需要。
上下拉主要是有三个原因
第一个作用是增强驱动电流,就是 IO 口在输出的这个电流的时候,如果没有上拉,它这个电流是来自于芯片的内部 i1,如果接上一个上拉那么这个电流就可以来自于上拉当时拉到电源的下拉式拉到地就会引入一个 i2,那显然这个 i 它就会变成 I1 加i2,所以这个电流就会增加。
第二个作用是抗干扰。如果有上下拉,不管上拉还是下拉始终拉完了之后电源不管是接到 VCC 还是 D,他始终会形成一个闭环,如果这个 IO 口有静电的引入,那么它会通过电源和地径吸收,这个时候就能起到对芯片内部的一个逻辑电路的保护作用,如果没有上下拉,那么这个干扰和这个静电会直接进入到芯片内部,会造成影响。
第三个作用就是锁定电瓶或叫钳位电平。现在有一个 IO 口,现在把它配成输入状态,按键在没有按下的时候希望他为低电平或者高电平,如果此时不给他一个上下,那这个 IO 口的电平就是未知的。比如说这个地方接地就是按下的时候为低电平。没按就得到高电平,接一个上拉保证他为高电平。按下去短路,这就是锁定电瓶,这就是 IO 口。