第5章-数字输入输出系统设计(三版)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
GPIO的推挽输出模式。GPIO推挽输出是指输出端口采用 推挽放大电路以输出更大的电流。
读控制
写控制 内部总线
引脚输出
GPIO的准双向输出模式
GPIO的准双向I/O模式。GPIO的准双向I/O模式就是可以 在需要输入的时候读外部的数据(输入),需要输出的 时候就向端口发送数据。
锁存的 输出数据
2 个 CPU 时钟 延时
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11|GPIO_Pin_12;
/*PD11/12输入*/
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;/*高阻输入*/
GPIO_Init(GPIOD, &GPIO_InitStructure);
STM32F10x的GPIO配置寄存器
MODE:GPIO工作模式选择 00输入,01为10MHz输出,10为2MHz输出,11为50MHz输出;
CNF:(1)MODE=00时,作为输入模式选择 00 模拟输入 01高阻输入 10上下拉输入 11保留 (2)MODE!=00时,作为输出模式选择 00推挽输出 01开漏输出 10复用推挽输出 11复用开漏输出。
读取端口管脚的输 出
GPIO_ReadOutputData GPIO_SetBits GPIO_ResetBits GPIO_WriteBit
GPIO_Write
GPIO_ReadOutputData(GPIO_TypeDef* GPIOx) GPIO_SetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pin) GPIO_ResetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pin) GPIO_WriteBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin, BitAction BitVal)
VIH VIL
1.26V 0.6V
VOL
0.4V
VOL
0.1V VOL
0.1V VOL
0.1V
0V
0V
0V
0V
数字信号的逻辑电平
4000 CMOS (4.5V~5.5V)
5.0V
74HC CMOS (4.5V~5.5V)
5.0V
74HCT CMOS (4.5V~5.5V) 5.0V
VOH 4.6V VOH 4.4V VOH 4.4V
GPIO端口二极管和ESD保护
(a)二极管钳位保护 (b)ESD专用器件保护
GPIO端口的中断
为什么需要GPIO中断呢?
普通的GPIO端口作为输入端口时,可随时读取其状 态,但微控制器在处理其它事务时,靠不断查询 引脚的状态,效率是低下的,解决这一问题的有 效方法是采用中断机制。当引脚有变化时产生一 个中断请求,微控制器在中断服务程序中去做相 应引脚中断的处理任务,从而提高了效率。
74 TTL (4.5V~5.5V)
5.0V
74LS TTL (4.5V~5.5V)
5.0V
VIH
3.5V VIH
3.5V
VIH
2.0V
VIL
1.5V
VIL
1.0V VIL
0.8V
VOL
0.05V VOL
0.1V VOL
0.1V
0V
0V
0V
VOH
2.7V
VOH
2.4V
VIH
2.0V VIH
2.0V
VIL
0.8V VIL
0.8V
VOL
0.4V VOL
0.5V
读取端口管脚的输 入
Fra Baidu bibliotekGPIO_ReadInputData
GPIO_ReadInputData(GPIO_TypeDef* GPIOx)
读取GPIO端口输入
GPIO_ReadOutputDataBit GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)
GPIO端口中断触发方式
ARMCortex-M系列包括M0和M3这两个典型系列微控制器生产厂家对GPIO 均配置有中断输入方式,可实现单边沿触发(只在上升沿触发或只在下 降沿触发)、双边沿触发(上升沿和下降沿均触发)以及电平触发(高电 平或低电平触发)的多种中断输入方式。
STM32F10x GPIO引脚
/*初始化GPIOD端口*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 ;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 ;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO端口引脚功能选择:
LPC1700引脚
STM32F10x的GPIO相关寄存器
对GPIO操作就是对GPIO相关寄存器进行操作,典型ARM芯片STM32F10x系 列微控制器GPIO端口的每个GPIO端口的相关寄存器有:
(1)两个32位配置寄存器:配置输入输出模式和输出频率
GPIOx_CRL
GPIOx_CRH
U4
U3
U5
输入 数据
强上拉
很弱上拉
弱上拉 外部引脚
U2
U1
GPIO的上拉和下拉
GPIO的引脚内部可配置为上拉或下拉,如果内部没有配置方式,则可以 外接上拉电阻或下拉电阻。所谓上拉指的是引脚与电源VDD或VCC之 间接一个大小100K左右的电阻,下拉指的是引脚与负电源VSS或地 GND之间接一个100K左右的电阻。
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_7;//PD2/3/4/7入 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; /*速度10MHz*/ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; /*推挽输出*/
STM32F10x的GPIO操作函数
GPIO函数名
原型
功能
GPIO_Init
GPIO_Init(GPIO_TypeDef* GPIOx,GPIO_InitTypeDef* GPIO_InitStruct)
初始化GPIOx
GPIO_ReadInputDataBit GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)
第5章数字输入输出系统设计
5.1 通用输入输出(GPIO)端口 5.2 数字信号的逻辑电平及其转换
主要内容
5.3 数字输入接口的扩展 5.4 数字输出接口的扩展
5.5 数字输入输出接口的一般结构 5.6 人机交互通道设计
5.1 通用输入输出(GPIO)端口
GPIO端口(General Purpose Input Output Port)即通用输入/输 出端口,是可编程的通用并行I/O接口,主要用于需要数字 量输入/输出的场合。输入缓冲、输出锁存。基本结构:
GPIO端口保护措施
GPIO作为输入输出基本端口直接与外界相连接,由于外 部GPIO引脚受到环境及外部连接的器件的影响,使 GPIO引脚上呈现的信号干扰很多,如受到强干扰尖脉 冲的侵入,容易造成引脚的损坏,因此当今嵌入式微 控制器的GPIO引脚已在内部均加上了一定的保护措施。
主要有两种形式的保护: (1)采用二极管钳位的方式来保护 (2)采用ESD器件的方式保护。
(2)两个32位数据寄存器:存放输入数据和数据数据
输入寄存器GPIOx_IDR 寄存器GPIOx_ODR)
(3)两个32置复位寄存器:置位指定引脚,复位指定引脚
32位置位/复位寄存器(GPIOx_BSRR)
16位复位寄存器(GPIOx_BRR)
(4)一个32位锁定寄存器:锁存数据,一般很少使用
GPIOx_LCKR
GPIO_Init(GPIOD, &GPIO_InitStructure);
/*初始化GPIOD端口*/
GPIO_SetBits(GPIOD,GPIO_Pin_2|GPIO_Pin_3| GPIO_Pin_4| GPIO_Pin_7|);
/*PD2:LED1、PD3:LED3、PD4:LED3、PD7:LED4全为1灭*/
STM32F10x的GPIO操作实例
【例5.1】假设PD2、PD3、PD4和PD7为推挽输出作为LED发光二极管(LED1~LED4)
输出控制,0亮,1灭,PD11、PD12、PC13和PA0为上拉输入,作为KEY1~KEY4四个
按键输入,设置各PORTA、PORTC和PORTD工作频率为10MHz出。并让LD1~LD4全
5.0V
VIH
3.5V VIH
3.5V
VIH
2.0V
VIL
1.5V
VIL
1.0V VIL
0.8V
VOL
0.05V VOL
0.1V VOL
0.1V
0V
0V
0V
VOH
2.7V
VOH
2.4V
VIH
2.0V VIH
2.0V
VIL
0.8V VIL
0.8V
VOL
0.4V VOL
0.5V
0V
0V
LVTTL
LVCMOS
(3.0V~3.6V) (3.0V~3.6V)
LVCMOS
3.3V
3.3V
VOH
3.2V
VOH
2.4V
(2.3V~2.7V) 2.5V
LVCMOS (1.6V~2.0V)
VIH
2.0V VIH
2.0V VOH
2.0V
1.8V
VIH
1.7V
VOH
1.35V
VIL
0.8V VIL
0.7V VIL
0.7V
GPIO_Write(GPIO_TypeDef* GPIOx, u16 PortVal)
读取GPIO端口输出
设置数据端口位 清除数据端口位 设置或者清除数据
端口位 向指定GPIO数据端
口写入数据
STM32F10x的GPIO操作步骤
一、初始化GPIO端口 1、用RCC_APB2PeriphClockCmd函数使能GPIO时钟 2、用GPIO_Init函数初始化GPIO端口 二、读GPIO端口数据 1、用GPIO_ReadInputDataBit函数读取指定GPIO引脚的电平状态 2、用GPIO_ReadInputData函数读取指定GPIO整个端口的16位数据 三、写GPIO端口数据 1、用GPIO_SetBits函数置位多个指定I/O引脚(高电平输出) 2、用GPIO_ResetBits函数复位多个指定I/O引脚(低电平输出) 3、用GPIO_WriteBit函数写指定一个I/O引脚高低电平 4、用GPIO_Write函数写指定一个完整GPIO端口16位数据
5.2 数字逻辑电平及其转换
为何要进行逻辑电平转换?
因为越来越多的处理器为了节约和降低能耗,都把 电源电压降低了。
功率:P∝k×C×F×U2/R 这样不同电源供电的芯片之间进行连接时,逻辑电
平如果不一样,则必须导致信息交互的失败。 即使同电源供电不同逻辑器件如CMOS与TTL之间逻辑
电平也不致。 因此必须进行不同逻辑之间的转换。
部灭。
初始化程序:
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA| RCC_APB2Periph_GPIOC
|RCC_APB2Periph_GPIOD, ENABLE); /*使能GPIOA,C,D端口时钟*/
D1
内部总线
外部引脚
U1 D2
GPIO的开漏输出模式
GPIO开漏输出模式是在普通输出模式基础上,使输出 MOS管的漏极开路的一种输出方式。
锁存的 数据
(a)开漏输出示意图
引脚输出
输出低时可灌入 20mA 电流
开漏控制
锁存的数据
U1
输出使能
U2
(b)开漏输出控制原理图
P-MOS
外部引脚
N-MOS
GPIO的推挽输出模式
数字信号的逻辑电平
4000 CMOS (4.5V~5.5V)
5.0V
74HC CMOS (4.5V~5.5V)
5.0V
74HCT CMOS (4.5V~5.5V) 5.0V
VOH
4.6V VOH
4.4V VOH
4.4V
74 TTL (4.5V~5.5V)
5.0V
74LS TTL (4.5V~5.5V)
GPIO基本工作模式
GPIO的I/O 管脚上 I/O 类型可由软件独立地配 置为不同的工作模式。主要工作模式包括:
(1)高阻输入模式 (2)开漏输出模式 (3)推挽输出模式 (4)准双向I/O模式 (5)端口的上下拉
GPIO的高阻输入模式
GPIO的输入模式决定了GPIO具有输入缓冲功能,由GPIO 端口内部三态门控制。由于三态门控制输入状态的读 取,在读无效时呈高阻状态,因此又称为高阻输入模 式。
相关文档
最新文档