很多人对总线,串行等概念不熟悉特别是SPI,I2C,UART,GPIO等概念。
因此我收集了一些资料,用于总结。希望对大家有所帮助。
首先看一下树莓派上的接口:
-
GPIO引脚 x 26
-
UART总线 x 1
-
SPI总线 x 1
-
I2C总线 x 1
-
5V x 2
-
3.3V x 2
-
GND x 8
那么什么是GPIO?
首先应该理解什么是GPIO。GPIO,英文全称为General-Purpose IO ports,也就是通用IO口。在嵌入式系统中经常有数量众多,可是结构却比較简单的外部设备/电路,对这些设备/电路有的须要CPU为之提供控制手段,有的则须要被CPU用作输入信号。并且,很多这种设备/电路仅仅要求一位,即仅仅要有开/关两种状态就够了,比方灯亮与灭。对这些设备/电路的控制,使用传统的串行口或并行口都不合适。所以在微控制器芯片上一般都会提供一个“通用可编程IO接口”,即GPIO。接口至少有两个寄存器,即“通用IO控制寄存器”与“通用IO数据寄存器”。数据寄存器的各位都直接引到芯片外部,而对数据寄存器中每一位的作用,即每一位的信号流通方向时输入还是输出,则能够通过控制寄存器中相应位独立的加以设置。这样,有无GPIO接口也就成为微控制器差别于微处理器的一个特征。
在实际的MCU中,GPIO是有多种形式的。比方,有的数据寄存器能够依照位寻址,有些却不能依照位寻址,这在编程时就要区分了。比方传统的8051系列,就区分成可位寻址和不可位寻址两种寄存器。另外,为了使用的方便,非常多mcu把glue logic等集成到芯片内部,增强了系统的稳定性能,比方GPIO接口除去两个标准寄存器必须具备外,还提供上拉寄存器,能够设置IO的输出模式是高阻