第五章 通用输入输出端口(GPIO)

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

//所有中断,标志清零。
IER = 0x0000; //关闭CPU中断,清除所有CPU中断标志;
IFR = 0x0000;
InitPieVectTable(); //初始化PIE向量表,将指针指向ISR
#if EXAMPLE1 // 该例程使用GPxDAT寄存器反转触发I/O引脚
Gpio_example1();
GPIO的寄存器
寄存器分为两大类,功能控制和数据。 功能控制寄存器: • 功能选择控制寄存器GPxMUX • 方向控制寄存器GPxDIR • 输入限定控制寄存器GPxQUAL
GPIO的寄存器
功能选择控制寄存器GPxMUX 复用功能选择寄存器GPxMUX设置GPIO为数字量 I/O或外设I/O; 如果GPxMUX.bit=0,配置为数字I/O功能; 如果GPxMUX.bit=1,配置为外设I/O功能; 复位时所有GPIO配置为数字量I/O;
GPIO的寄存器
方向寄存器GPxDIR 方向寄存器GPxDIR配置数字量IO的输入/输出方向。 如果GPxDIR.bit=0,配置为输入; 如果GPxDIR.bit=1,配置为输出; 复位时所有GPIO引脚均设置为输入 ;
输入限定控制寄存器
• 在引脚输入时,实际情况下经常会遇到干扰。 • 输入限定寄存器可以对输入信号进行量化,改善
输入信号,从而去除不希望的噪声干扰。 • 输入信号不限定
输入限定
输入信号被限定是指只有宽度满足要求的信号才能 输入,限定输入信号可以有效抑制噪声的进入。
设置GPxQUAL寄存器,配置输入限定器,决定引 脚量化采样周期 ;
输入限定
• 设置GPxQUAL寄存器中QUALPRD的值为n,则 限定的采样周期为2n*SYSCLKOUT。
5.3
GPIO应用举例
LED硬件电路,L1~L8接 DSP的GPIO端口
对GPIO端口取反输出的三种方法
使用GPxDAT寄存器反转触发I/O引脚 void Gpio_example1(void) {
//当使用GPxDAT寄存器时,可能会丢失输入信号。 //如果端口有输入信号,可以使用 // CLEAR/SET/TOGGLE 寄存器实现反转触发I/O引脚
#endif
#if EXAMPLE2 //该例程使用GPxSET/GPxCLEAR寄存器反转触发I/O引脚
Gpio_example2();
#endif
#if EXAMPLE3
//该例程使用GPxTOGGLE寄存器反转触发I/O引脚
Gpio_example3();
#endif
}
本章重点小结
‘28X系列DSP的通用数字输入输出GPIO端口是复用 功能引脚,通过GPxMUX、GPxDIR、GPxQUAL等复 用功能控制寄存器以及GPxDAT、GPxSET、 GPxCLEAR和GPxTOGGLE等GPIO数据寄存器对引脚 的功能和操作进行控制;
while(1) {
GpioDataRegs.GPASET.all =0xAAAA; GpioDataRegs.GPACLEAR.all =0x5555; delay_loop(); GpioDataRegs.GPACLEAR.all =0xAAAA; GpioDataRegs.GPASET.all =0x5555;
GPIO的寄存器
寄存器分为两大类,功能控制和数据。 数据寄存器: • 数据寄存器GPxDAT ,读写每个引脚信号 。 • 置位寄存器GPxSET ,设置每个引脚为高电
平; • 清除寄存器GPxCLEAR ,清除每个引脚信
号; • 取反寄存器GPxTOGGLE ,反转触发每个引
脚信号;
GPIO的寄存器
• 输入信号应该在5*QUALPRD *2个时钟周期内保 持稳定的值才能被识别。
• 由于外部输入信号与SYSCLKOUT异步,因此至 少保持6个采样周期才能被可靠识别。
输入限定控制寄存器
位 名称
功能定义
7~0 QUALPRD
设置输入限定的采样周期 0x00:不限定,与SYSCLKOUT同步; 0x01:QUALPRD=2个SYSCLKOUT周期; 0x02:QUALPRD=4个SYSCLKOUT周期;
数据寄存器: • 数据寄存器GPxDAT ,读写每个引脚信号 。 每个IO都有一个数据寄存器,当IO配置为输 出时,向GPxDAT中写数据就可以决定输出状 态; GPxDAT.bit=0,输出变低; GPxDAT.bit=1,输出变高。
GPIO的寄存器
数据寄存器: • 置位寄存器GPxSET ,设置每个引脚为高电
delay_loop(); } }
使用TOGGLE寄存器反转触发I/O引脚
void Gpio_example3(void) { //先将端口设置成已知状态
GpioDataRegs.GPASET.all =0xAAAA; GpioDataRegs.GPACLEAR.all =0x5555;
//使用TOGGLE寄存器将引脚状态反转,被写1 //的位将使引脚状态反转,写0的位不改变引脚状态 while(1) { GpioDataRegs.GPATOGGLE.all = 0xFFFF; delay_loop(); } }
端口设置
void Gpio_select(void)
{
Uint16 var1;
Uint16 var2;
Uint16 var3;
var1= 0x0000;
// sets GPIO Muxs as I/Os
var2= 0xFFFF;
// sets GPIO DIR as outputs
var3= 0x0000;
while(1)
{ GpioDataRegs.GPADAT.all =0xAAAA; delay_loop();
GpioDataRegs.GPADAT.all delay_loop(); } }
=0x5555;
使用SET/CLEAR寄存器反转触发I/O引脚
void Gpio_example2(void) {
GPIO复用引脚的结构
GPIO的寄存器
寄存器分为两大类,功能控制和数据。 功能控制寄存器: • 功能选择控制寄存器GPxMUX • 方向控制寄存器GPxDIR • 输入限定控制寄存器GPxQUAL
GPIO功能控制寄存器列表:
名称
地址
大小(*16)
GPAMUX
0x0000 70C0 1
GPADIR
GPFDIR
0x0000 70D5 1
GPGMUX
0x0000 70D8 1
GPGDIR
0x0000 70D9 1
wk.baidu.com
寄存器说明 GPIOA功能选择控制寄存器 GPIOA方向控制寄存器 GPIOA输入限定控制寄存器 GPIOB功能选择控制寄存器 GPIOB方向控制寄存器 GPIOB输入限定控制寄存器 GPIOD功能选择控制寄存器 GPIOD方向控制寄存器 GPIOD输入限定控制寄存器 GPIOE功能选择控制寄存器 GPIOE方向控制寄存器 GPIOE输入限定控制寄存器 GPIOF功能选择控制寄存器 GPIOF方向控制寄存器 GPIOG功能选择控制寄存器 GPIOG方向控制寄存器
GPIOA端口的引脚和控制器位映射
GPIOB端口的引脚和控制器位映射
GPIOD端口的引脚和控制器位映射
GPIOE端口的引脚和控制器位映射
GPIOF端口的引脚和控制器位映射
GPIOG端口的引脚和控制器位映射
GPIO复用引脚的结构
如果一个引脚被设定为 数字量I/O,却没有禁止 相应的外设功能,那么输 入信号会同时进入数字量 I/O和外设I/O,外设会发 出中断请求。如果外设中 断被允许,CPU就可能响 应中断,造成错误操作!
平; 每个IO口有一个置1寄存器,只能写不能读, 也就是只能用在输出上,写1可以使输出为1, 写0没有变化。 GPxSET .bit=0,被忽略; GPxSET .bit=1,且引脚配置为输出,则输出 变高。
GPIO的寄存器
数据寄存器: • 清除寄存器GPxCLEAR ,清除每个引脚信
号; 每个IO口有一个清0寄存器,只能写不能读, 也就是只能用在输出上,写1可以使输出清0, 写0没有变化。 GPxCLEAR .bit=0,被忽略; GPxCLEAR .bit=1,且引脚配置为输出,则输 出清0。
// sets the Input qualifier values
EALLOW;
GpioMuxRegs.GPAMUX.all=var1;
//将GPIO端口设置成数字量I/O
GpioMuxRegs.GPADIR.all=var2; // 将GPIO端口设置为输出
GpioMuxRegs.GPAQUAL.all=var3; //设置GPIO输入限定值
…… 0xff:QUALPRD=510个SYSCLKOUT周期 。
GPIO功能控制寄存器列表:
名称
地址
大小(*16)
GPAMUX
0x0000 70C0 1
GPADIR
0x0000 70C1 1
GPAQUAL 0x0000 70C2 1
GPBMUX
0x0000 70C4 1
GPBDIR
0x0000 70C5 1
可以将引脚设定为片内外设的输入输出引 脚,也可以设定为通用输入输出引脚(数 字量IO);
5.1
输入/输出端口概述
‘28xDSP为用户提供了56个通用的数字 I/O引脚,这些引脚基本上都是多功能复用 引脚 。
通用输入/输出多路复用器GPIO就是I/O引 脚的管理机构,它将56个引脚分成了6组来 进行管理,其中GPIOA和GPIOB各管理16 个引脚,GPIOD管理4个引脚,GPIOE管 理3个引脚,GPIOF管理15个引脚, GPIOG管理2个引脚。
GPEMUX
0x0000 70D0 1
GPEDIR
0x0000 70D1 1
GPEQUAL 0x0000 70D2 1
GPFMUX
0x0000 70D4 1
GPFDIR
0x0000 70D5 1
GPGMUX
0x0000 70D8 1
GPGDIR
0x0000 70D9 1
寄存器说明 GPIOA功能选择控制寄存器 GPIOA方向控制寄存器 GPIOA输入限定控制寄存器 GPIOB功能选择控制寄存器 GPIOB方向控制寄存器 GPIOB输入限定控制寄存器 GPIOD功能选择控制寄存器 GPIOD方向控制寄存器 GPIOD输入限定控制寄存器 GPIOE功能选择控制寄存器 GPIOE方向控制寄存器 GPIOE输入限定控制寄存器 GPIOF功能选择控制寄存器 GPIOF方向控制寄存器 GPIOG功能选择控制寄存器 GPIOG方向控制寄存器
0x0000 70C1 1
GPAQUAL 0x0000 70C2 1
GPBMUX
0x0000 70C4 1
GPBDIR
0x0000 70C5 1
GPBQUAL 0x0000 70C6 1
GPDMUX
0x0000 70CC 1
GPDDIR
0x0000 70CD 1
GPDQUAL 0x0000 70CE 1
GPIO的寄存器
数据寄存器: • 取反寄存器GPxTOGGLE ,反转触发每个引
脚信号; 每个IO口有一个翻转寄存器,只能写不能读, 也就是只能用在输出上,写1可以使输出翻转, 写0没有变化。 GPxTOGGLE .bit.=0,被忽略; GPxTOGGLE.bit.=1,且引脚配置为输出,则 输出翻转。
GPBQUAL 0x0000 70C6 1
GPDMUX
0x0000 70CC 1
GPDDIR
0x0000 70CD 1
GPDQUAL 0x0000 70CE 1
GPEMUX
0x0000 70D0 1
GPEDIR
0x0000 70D1 1
GPEQUAL 0x0000 70D2 1
GPFMUX
0x0000 70D4 1
EDIS;
}
主程序
void main(void)
{
InitSysCtrl(); //系统初始化:PLL、WatchDog、使能外设时钟
Gpio_select();
//GPIO设置
DINT;
//清除所有中断,初始化PIE向量表,关闭CPU中断
InitPieCtrl(); //将PIE控制寄存器初始化为默认值,即所有PIE中断被关闭,
第五章 通用输入/输出端口(GPIO)
5.1 输入/输出端口概述
5.2 GPIO寄存器 5.3 GPIO应用举例
‘28x
DSP 内 部 结 构 通用输入
输出端口
5.1
输入/输出端口概述
‘28x DSP有多个通用输入输出引脚GPIO ; 很多为复用引脚,由复用功能选择寄存器 GPxMUX选择具体功能;
相关文档
最新文档