GPIO和IO

1、I/O

    IO即 Input Output,是计算机中的输入输出系统,用于 CPU 与外界进行信息交互。例如CPU 读内存数据需要 I/O 系统,CPU 输出数据到屏幕显示出来也需要 I/O 系统,信息在 I/O 系统上传输有并行或并行,所谓串行就是数据在一条线上传输,并行就是数据在多条线上传输,即并行一次传输多个bit,串行每次传输一个bit。

2、GPIO

    GPIO,英文全称为General-Purpose IO ports,也就是通用I/O口。在微控制器芯片上一般都会提供一个“通用可编程I/O接口”。接口至少有两个寄存器,即“控制方向寄存器”与“数据寄存器”。数据寄存器的各位都直接引到芯片外部,而对数据寄存器中每一位的作用,即每一位的信号流通方向是输入还是输出,则能够通过控制寄存器中相应位独立的加以设置。这样,有无 IO 接口也就成为微控制器差别于微处理器的一个特征。(不同MCU,寄存器配置不一样)

在实际的MCU中,I/O 是有多种形式的。比如,有的数据寄存器能够依照位寻址,有的却不能依照位寻址,这在编程时就要区分了。比如,传统的8051系列,就区分成可位寻址和不可位寻址两种寄存器。另外,为了使用的方便,非常多的 MCU 把 Glue Logic 等集成到芯片内部,增强了系统的稳定性能,比方GPIO接口除去两个标准寄存器必须具备外,还提供上拉寄存器,能够设置I/O的输出模式是高阻,还是带上拉的电平输出,或者不带上拉的电平输出。这在电路设计中,外围电路就能够简化不少。

3、区别

    GPIO 的意思是通用输入输出端口,可由编程决定其状态,MCU 的 I/O 就是 GPIO,也称双向输入输出端口,而 I/O 则泛指所有类型的输入输出端口,包括单向的端口如逻辑门电路的输入输出管脚和双向的 GPIO 端口,而 GPIO 则必然是双向的,这是为了避免不同语境下易造成混淆而采取的特称。

4、IO端口和IO内存

    每个外设都是通过读写其寄存器来控制的。外设寄存器也称为I/O端口,通常包括:控制寄存器、状态寄存器和数据寄存器三大类。根据访问外设寄存器的不同方式,可以把CPU分成两大类。一类CPU(如M68K,Power PC 等)把这些寄存器看作内存的一部分,寄存器参与内存统一编址,访问寄存器就通过访问一般的内存指令进行,所以,这种CPU没有专门用于设备I/O的指令。这就是所谓的“I/O内存”方式。另一类CPU(典型的如X86),将外设的寄存器看成一个独立的地址空间,所以访问内存的指令不能用来访问这些寄存器,而要为对外设寄存器的读/写设置专用指令,如IN和OUT指令。这就是所谓的“I/O端口”方式。但是,用于I/O指令的“地址空间”相对来说是很小的,如x86 CPU的I/O空间就只有64KB(0-0xffff)。
    参考:IO端口和IO内存的区别及分别使用的函数接口。

5、小结

    GPIO(General Purpose I/O Ports)意思为通用输入/输出端口,通俗地说,就是一些引脚,可以通过它们输出高低电平或者通过它们读入引脚的状态——是高电平或是低电平。GPIO是个比较重要的概念,用户可以通过GPIO口和硬件进行数据交互(如UART),控制硬件工作(如LED、蜂鸣器等),读取硬件的工作状态信号(如中断信号)等。对单片机的控制,其实就是对I/O口的控制,无论单片机对外界进行何种控制,或接受外部的控制,都是通过 I/O 口进行的。掌握了 I/O 口,差不多相当于掌握了操作硬件的能力。

补充:

    在使用 Arduino 时,需要注意数字 I/O和模拟 I/O。Arduino 上每一个带有数字编号的引脚都是数字引脚,包括写有“A”编号的模拟输入引脚。使用这些引脚可以完成输入/输出数字信号的功能。在 Arduino 控制器中,编号前带有“A”的引脚是模拟输入引脚。Arduino 可以读取这些引脚上输人的模拟值,即读取引脚上输入的电压大小。

    当定义为模块管脚时,PIN 起模块中定义的功能。比如定义成 SPI 模块的管脚,那就按照具体芯片的规定,或者定义成 MOSI,或者定义成MISO,或者定义成 SCLK,这些不是任意的。SPI是模块,MISO等是功能管脚。

    当定义成GPIO时,可以定义成高阻,输入,或者输出。这时候,就可以用作操作控制位,点亮LED灯等功能了。
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值