学习嵌入式开发之I/O引脚
1 I/O引脚介绍我们学习嵌入式最简单、最基本的就是对I/O引脚的操作,那么什么是I/O引脚呢?I/O引脚就是指芯片上的输入、输出等引脚,我们通过对它的操作从而实现对外围器件的操作。不同的芯片其可使用的引脚个数不一样且价格也不一样,例如经典的51单片机只有32个可操作的I/O引脚,而STM32F407ZET6这款芯片多达114个可操作引脚。在项目芯片选型时具体需要使用多少引脚的芯片要根据项目的实际需求而定。其本篇文章的知识点结构如下图1-1所示:
图1-1 I/O口知识结构
2 I/O引脚的模式I/O引脚是芯片连接外围设备的主要桥梁,也是我们程序最终要操作的对象,因此不同的I/O引脚具有不同的功能模式,也有的I/O具有多种功能模式具体使用哪种功能功能可以由我们程序配置决定。常见的几种功能主要有:输入模式、输出模式、模拟量模式、复用功能模式。
2.1 输入模式输入模式主要用于检测外部电平的变化(信号),比如我们使用的按键、开关等都是配置为输入模式,通过检测该引脚的电平是高还是低(0V低电平,3.3V高电平)就可以知道这个按键是否有按下。
2.2 输出模式刚刚我们说了输入模式主要是用来检测外部信号的变化,那么输出模式主要是控制芯片引脚的高低从而控制外围器件;例如控制一盏灯的亮灭只要控制这个I/O引脚的电平为高或者为低就可以了。其中在输出模式下又有两种输出类型,分别是推挽输出和开漏输出。其主要是内部电路部分不一致。其中推挽输出可以真正的输出高电平和低电平。
(1)推挽输出
推挽输出结构是由两个MOS或者三极管收到互补控制的信号控制,两个管子始终是一个在导通一个在截止,当上面三极管导通时输出高电平,下面三极管导通时输出低电平。其结构如下图2-1所示:
图2-1 推挽输出结构原理
(2)开漏输出
开漏输出和推挽输出最大的区别就是开漏输出无法真正输出高电平,即在高电平时没有驱动能力,需要借助外部上拉电阻才能完成对外的驱动。其结构如图2-2所示,只有一个三极管当三极管截止时需要外部上拉电阻提供驱动,导通时将电平拉低。
图2-2 开漏输出结构原理
2.3 模拟量模式上面所说的输入模式和输出模式都是对数字量0和1的操作,而模拟量模式顾名思义就是对模拟量信号的操作,分为模拟量输入和模拟量输出两种模式,即模拟量转数字量(ADC)和数字量转模拟量(DAC)。根据芯片的性能不同其分辨率也不一致,这个在我们后续介绍模拟量时再专门介绍。
2.4 复用功能复用功能是指除了输入模式、输出模式、模拟量模式的需要使用芯片内部外设或者其它功能时,例如我们在使用串口、I2C、SPI、以太网等时就需要将相应的I/O口复用为对应的外设功能才可以正常使用。
3 内部上下拉电阻有的单片机具有内部上下拉电阻的配置,其功能主要是将不确定的信号箝位为固定的电平状态,一般可以配置为上拉、下拉和浮空(既不上拉也不下拉)。
4 I/O引脚速度I/O引脚的速度又称为输出驱动电路的响应速度,一般芯片在内部I/O的输出部分安排了多个响应速度不同的输出驱动电路,用户可以根据自己的需要选择合适的驱动电路,通过选择速度来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。像STM32F4的芯片就具有2MHz(低速)、25MHz(中速)、50MHz(快速)、100MHz(高速)可供选择。
5 总结I/O口需要掌握的知识大概就这么多,主要是功能模式、上下拉、引脚速度以及输出类型这四个方面;这些知识也是我们必须要掌握的,因为I/O口是我们芯片与外围电路的交互口而我们程序里面最终操作的对象都是这些I/O口。一般我们需要操作某个I/O口实现某个功能时都是要先对这些点进行一个基本的配置。大家对嵌入式方面的知识感兴趣的话可以关注我,我会不定期地持续带大家一起学习嵌入式方面的相关知识,有问题的欢迎大家在评论区留言!!!