欢迎来到天天文库
浏览记录
ID:55825842
大小:609.00 KB
页数:12页
时间:2020-06-09
《通用数字量输入输出.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第七讲:通用数字量输入/输出(GPIO)1、GPIO工作原理2、GPIO寄存器3、GPIO编程4、基于F28335GPIO的跑马灯实验外界二进制信息(数字量)要被CPU处理,要给存储器存放,就需要外界信息源与两者之间的交换接口,这样的交换接口若用来进行通用目的数字量的输入输出,就被称为通用数字量输入/输出接口,简称GPIO。F28335DSP有多达88个GPIO口,对应着芯片引出的88个引脚,随着芯片的封装与尺寸的确定,引脚数目是有限的,所以这88个引脚多数都是功能复用的,即可以灵活配置为输入引脚,也可以灵活配置为
2、输出引脚,即可以作为通用I/O引脚,也可以作为特殊功能口(如SCI、SPI、ECAN等),非常灵活,用户根据需要,可以通过GPIOMUX(输入输出多路选择器,复用开关)寄存器来进行相关配置,下边详细介绍GPIO的工作原理及其配置过程。GPIO工作原理F28335DSP将这88个GPIO口分成了A、B、C三大组,A组包括GPIO0至GPIO31,B组包括GPIO32至GPIO63,C组包括GPIO64至GPIO87,每个引脚都复用了多个功能,同一时刻,每个引脚只能用该引脚的一个功能。究竟工作在哪个模式下,可以通过GP
3、IOMux(复用开关)寄存器配置每个引脚的具体功能(通用数字量I/O或者外设专用功能)。如果将这些引脚选择数字量I/O模式,可以通过方向寄存器GPxDIR配置数字量I/O的方向,即是作为输入引脚还是作为输出引脚;还可以通过量化寄存器GPxQUAL对输入信号进行量化限制,从而可以消除数字量I/O引脚的噪声干扰。此外,有下面4种方式对GPIO引脚进行读写操作:GPIO工作原理1、可以通过GPxDAT寄存器独立读/写I/O信号;2、利用GPxSET寄存器写1(写0无效)对I/O口进行置位3、利用GPxCLEAR寄存器写1
4、(写0无效)对I/O口进行清零;4、利用GPxTOOGLE寄存器置1后(写0无效)来将I/O输出电平翻转,原来高电平变成低电平,原来低电平则变成高电平。GPIO工作原理GPIO工作原理GPIO工作原理GPIO寄存器GPIO寄存器structGPIO_CTRL_REGS{unionGPACTRL_REGGPACTRL;unionGPA1_REGGPAQSEL1;unionGPA2_REGGPAQSEL2;unionGPA1_REGGPAMUX1;unionGPA2_REGGPAMUX2;unionGPADAT_REG
5、GPADIR;unionGPADAT_REGGPAPUD;Uint32rsvd1;unionGPBCTRL_REGGPBCTRL;unionGPB1_REGGPBQSEL1;unionGPB2_REGGPBQSEL2;unionGPB1_REGGPBMUX1;unionGPB2_REGGPBMUX2;unionGPBDAT_REGGPBDIR;unionGPBDAT_REGGPBPUD;Uint16rsvd2[8];unionGPC1_REGGPCMUX1;unionGPC2_REGGPCMUX2;unionGPC
6、DAT_REGGPCDIR;unionGPCDAT_REGGPCPUD;};采用上述结构体定义可以直接对GPIO的寄存器进行操作,完成外部引脚的初始化操作。例如,将IOA全部设置GPIO功能,输出状态,0量化:voidGpio_Select(void){Uint16var1;Uint16var2;Uint16var3;var1=0x0000;var2=0xffff;var3=0x0000;EALLOW;GpioCtrlRegs.GPAMUX1=var1;//GPIO0-15GpioCtrlRegs.GPAMUX2=
7、var1;//GPIO16-31GpioCtrlRegs.GPADIR.all=var2;//GPIO0-31GpioCtrlRegs.GPAQSEL1.all=var3;GpioCtrlRegs.GPAQSEL2.all=var3;EDIS;}GPIO编程应用F28335一共有88个GPIO,分为3组,分别是A、B、C。其中A组GPIO可以通过软件配置为外部中断1、2以及NMI功能,B组GPIO可以通过软件配置为外部中断3、4、5、6、7功能。而C组的GPIO不能配置为中断功能。如果将某GPIO配置为外部中断功能
8、,那么下面是设置步骤:1.将数字量I/O配置为GPIO功能;2.将数字量I/O配置为输入方向;3.将数字量I/O量化配置正确;4.利用外部中断选择寄存器选择相应的引脚为外部中断源;5.为此GPIO触发信号设置极性,上升沿、下降沿或者双边沿;voidGPIO_xint(void){ELLOW;GpioCtrlRegs.GPBMUX2.bit.GPIO54=0;
此文档下载收益归作者所有