(完整版)DSP GPIO相关寄存器的设置最详细的一份资料了
- 格式:doc
- 大小:24.50 KB
- 文档页数:6
DSP28335 GPIO模块DSP28335 GPIO模块分为三类IO口:PORTA(0-31),PORTB(32-63),PORTC(64-87)对GPIO模块的设置主要通过三类寄存器来完成,分别是:控制寄存器、数据寄存器、中断寄存器。
1、控制寄存器GPxCTRL; // GPIO x Control Register (GPIO0 to 31)//设置采样窗周期T=2*GPXCTRL*Tsysclk;GPxQSEL1; // GPIO x Qualifier Select 1 Register (GPIO0 to 15)(32-47)GPxQSEL2; // GPIO x Qualifier Select 2 Register (GPIO16 to 31)(48-63) //每两位控制一个引脚,确定是3周期采样还是6周期采样或者不用采样GPxMUX1; // GPIO x Mux 1 Register (GPIO0 to 15)(32-47)(64-79)GPxMUX2; // GPIO x Mux 2 Register (GPIO16 to 31)(48-63)(80-95)//配置各个引脚的功能,0:I/O功能,1:外设功能。
GPxDIR; // GPIO x Direction Register (GPIO0 to 31)(32-63)(64-95)//配置每个引脚是输入还是输出,0:数字量输入;1:数字量输出。
GPxPUD; // GPIO x Pull Up Disable Register (GPIO0 to 31)(32-63)(64-95) //使能或禁止jie口的内部上拉2、数据寄存器GPxDAT; // GPIO Data Register (GPIO0 to 31)(32-63)(64-95)GPxSET; // GPIO Data Set Register (GPIO0 to 31)(32-63)(64-95)GPxCLEAR; // GPIO Data Clear Register (GPIO0 to 31)(32-63)(64-95)GPxTOGGLE; // GPIO Data Toggle Register (GPIO0 to 31)(32-63)(64-95)3、中断寄存器GPIOXINT1SEL; // XINT1 GPIO Input SelectionGPIOXINT2SEL; // XINT2 GPIO Input SelectionGPIOXNMISEL; // XNMI_Xint13 GPIO Input SelectionGPIOXINT3SEL; // XINT3 GPIO Input SelectionGPIOXINT4SEL; // XINT4 GPIO Input SelectionGPIOXINT5SEL; // XINT5 GPIO Input SelectionGPIOXINT6SEL; // XINT6 GPIO Input SelectionGPIOXINT7SEL; // XINT7 GPIO Input SelectionGPIOLPMSEL; // Low power modes GP I/O input select 可以对GPIO0-63进行外部中断设置。
GPIO的寄存器BSRR和BRR端⼝位设置/复位寄存器BSRR:注:如果同时设置了BSy和BRy的对应位,BSy位起作⽤。
位31:16 BRy: 清除端⼝x的位y (y = 0…15)这些位只能写⼊并只能以字(16位)的形式操作。
0:对对应的ODRy位不产⽣影响1:清除对应的ODRy位为0位15:0 BSy: 设置端⼝x的位y (y = 0…15)这些位只能写⼊并只能以字(16位)的形式操作。
0:对对应的ODRy位不产⽣影响1:设置对应的ODRy位为1端⼝位复位寄存器BRR:位31:16 保留。
位15:0 BRy: 清除端⼝x的位y (y = 0…15)这些位只能写⼊并只能以字(16位)的形式操作。
0:对对应的ODRy位不产⽣影响1:清除对应的ODRy位为0使⽤⽅法:1.混合改变需要置1的端⼝对应的位,在低16位⾥置1需要置0的端⼝对应的位,在⾼16位⾥置1,不改变的,都置0.然后写寄存器BSRR2.改变引脚为低需要置0的端⼝对应的位,在低16位⾥置1,然后写寄存器BRR3.改变引脚为⾼需要置1的端⼝对应的位,在低16位⾥置1⾼16为全0然后写寄存器BSRR另外就是,STM32的库,GPIO_SetBits,GPIO_ResetBits,可以对多个引脚操作的,就是把需要操作的引脚⽤“|”(或运算)。
最⽅便的还是⾃⼰直接写寄存器(⽅法1)。
第⼀步:第⼀你要⽤的IO⼝⽐如说要⽤A⼝的⾼8位定义 GPIOA_USE=0xF0第⼆步:写BSRR寄存器。
GPIOA->BSRR=data&&GPIOA_USE第三步:写BRR寄存器。
GPIOA->BRR=(~data)&&GPIOA_USE假设data为8位要写⼊的数据:GPIO_SetBits(GPIOD, data & 0xff00);GPIO_ResetBits(GPIOD, (~data & 0xff00));也可以直接操作这两个寄存器:GPIOD->BSRR = data & 0xff00;GPIOD->BRR = ~data & 0xff00;规则:⼀、置GPIOD->BSRR低16位的某位为'1',则对应的I/O端⼝置'1';⽽置GPIOD->BSRR低16位的某位为'0',则对应的I/O端⼝不变。
gpio寄存器介绍GPIO寄存器在BCM2835中,共有54个GPIO管脚,其中GPIO寄存器有GPFSELn、GPSETn、GPCLRn等,下面具体描述这些寄存器的作用:·寄存器 GPFSEL0 ~ GPFSEL5 ---- 功能寄存器,指定管脚为输入、输出等, 每3位决定一个管脚:o 000 = GPIO Pin 9 is an inputo 001 = GPIO Pin 9 is an outputo 100 = GPIO Pin 9 takes alternate function 0o 101 = GPIO Pin 9 takes alternate function 1o 110 = GPIO Pin 9 takes alternate function 2o 111 = GPIO Pin 9 takes alternate function 3o 011 = GPIO Pin 9 takes alternate function 4o 010 = GPIO Pin 9 takes alternate function 5其中:(寄存器---地址---描述)* GPFSEL0 --- 0x7E200000 --- 决定GPIO0-GPIO9管脚的功能* GPFSEL1 --- 0x7E200004 --- 决定GPIO10-GPIO19管脚的功能* GPFSEL2 --- 0x7E200008 --- 决定GPIO20-GPIO29管脚的功能* GPFSEL3 --- 0x7E20000c --- 决定GPIO30-GPIO39管脚的功能* GPFSEL4 --- 0x7E200010 --- 决定GPIO40-GPIO49管脚的功能* GPFSEL5 --- 0x7E200014 --- 决定GPIO50-GPIO53管脚的功能·寄存器 GPSET0 - CPSET1 ---- 设为1, 每一位决定一个管脚o 0 = No effecto 1 = Set GPIO pin n其中:(寄存器---地址---描述)* GPSET0 --- 0x7E20001C --- 决定GPIO0-GPIO31管脚* GPSET1 --- 0x7E200020 --- 决定GPIO32-GPIO53管脚·寄存器 GPCLR0 - GPCLR1 ---- 设为0, 每一位决定一个管脚o 0 = No effecto 1 = Clear GPIO pin n其中:(寄存器---地址---描述)* GPSET0 --- 0x7E200028 --- 决定GPIO0-GPIO31管脚* GPSET1 --- 0x7E20002C --- 决定GPIO32-GPIO53管脚。
(笔记)GPIO基本原理与寄存器配置(STM32篇)背景:因ST系列MCU在⾏业中应⽤最⼴,故本⽂以ST的MCU的GPIO进⾏详细讲解每⼀种功能应⽤类型的使⽤。
⼀、STM32F10X 引脚说明STM32F103ZET6⼀共有7组IO⼝,每组IO⼝有16个IO,分别为GPIOA~GPIOG,每组分别为PA0到PA16,STM32F103RCT6⼀个有4组IO⼝,分别为GPIOA到GPIOD,不同的是此芯⽚的GPIOD组只有GPIOD0⾄D2 三个IO⼝,并⾮16个。
这就是常⽤F1系列的芯⽚引脚,其⼤部分引脚不仅可以当作GPIO使⽤,还可以复⽤为外设功能引脚,⽐如说串⼝引脚(USART,TIM 等)。
⼆、GPIO的基本结构和⼯作⽅式I/O端⼝位的基本结构IO脚的基本⼯作⽅式:STM32 的 IO ⼝相⽐ 51 ⽽⾔要复杂得多,所以使⽤起来也困难很多。
⾸先 STM32 的 IO ⼝可以由软件配置成如下 8 种模式:(1)GPIO_Mode_IN_FLOATING 输⼊浮空模式(2)GPIO_Mode_IPU 输⼊上拉模式(3)GPIO_Mode_IPD 输⼊下拉模式(4)GPIO_Mode_AIN 模拟输⼊模式(5)GPIO_Mode_Out_OD 开漏输出模式(6)GPIO_Mode_AF_OD 开漏复⽤输出模式(7)GPIO_Mode_Out_PP 推挽输出模式(8)GPIO_Mode_AF_PP 推挽复⽤输出模式三、GPIO的基本⼯作⽅式讲解♣输⼊浮空模式在此状态下,I/O⼝的电平信号进⼊输⼊数据寄存器,此时的I/O电平信号是不确定的,完全由外部输⼊决定,如果在该引脚悬空(在⽆信号输⼊)的情况下,读取该端⼝的电平是不确定的。
且电压具有不确定性。
♣输⼊上拉模式上拉就是将⼀个不确定的信号拉到⼀个固定的值,如上图所⽰,通过I/O⼝来的信号就被上拉电阻拉到了VDD。
所以,和浮空输⼊相⽐来说,当I/O⼝被悬空的状态下,输⼊端的电平可以保持在⾼电平。
gpio手册祥细解
GPIO(General-Purpose Input/Output)是通用输入/输出接口的缩写,它是微控制器芯片上常见的接口之一。
GPIO接口可以用于控制外部设备、读取外部设备的状态或者实现与其他设备的通信。
在微控制器中,GPIO接口通常由多个寄存器组成,每个寄存器控制一个特定的GPIO引脚。
每个GPIO引脚都可以被配置为输入或输出模式,并且可以设置不同的工作模式和触发方式。
GPIO接口的主要寄存器包括:
1.端口配置寄存器(GPIOx_CRL/CRH):用于配置GPIO 引脚的工作模式和触发方式。
2.端口输入数据寄存器(GPIOx_IDR):用于读取GPIO 引脚的输入状态。
3.端口输出数据寄存器(GPIOx_ODR):用于设置GPIO 引脚的输出状态。
4.端口位清除寄存器(GPIOx_BRR):用于清除指定的GPIO位。
5.端口位设置/清除寄存器(GPIOx_BSRR):用于设置或清除指定的GPIO位。
6.端口配置锁定寄存器(GPIOx_LCKR):用于锁定GPIO 引脚的配置寄存器,防止意外修改。
在使用GPIO接口时,首先需要配置GPIO引脚的工作模式和触发方式,然后可以通过读取或设置端口输入/输出数据寄存器来控制外部设备或读取外部设备的状态。
同时,也可以使用位清除、位设置/清除等操作来控制特定的GPIO位。
需要注意的是,不同的微控制器可能具有不同的GPIO接口和寄存器配置,因此在使用时需要参考具体的微控制器手册或数据手册进行操作。
GPIO模式配置与详解⼀、GPIO配置(1)GPIO_Mode_AIN 模拟输⼊(2)GPIO_Mode_IN_FLOATING 浮空输⼊(3)GPIO_Mode_IPD 下拉输⼊(4)GPIO_Mode_IPU 上拉输⼊(5)GPIO_Mode_Out_OD 开漏输出(6)GPIO_Mode_Out_PP 推挽输出(7)GPIO_Mode_AF_OD 复⽤开漏输出(8)GPIO_Mode_AF_PP 复⽤推挽输出GPIO_Speed_10MHz 最⾼输出速率10MHzGPIO_Speed_2MHz 最⾼输出速率2MHzGPIO_Speed_50MHz 最⾼输出速率50MHz1.1 I/O⼝的输出模式下,有3种输出速度可选(2MHz、10MHz和50MHz),这个速度是指I/O⼝驱动电路的响应速度⽽不是输出信号的速度,输出信号的速度与程序有关(芯⽚内部在I/O⼝的输出部分安排了多个响应速度不同的输出驱动电路,⽤户可以根据⾃⼰的需要选择合适的驱动电路)。
通过选择速度来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的⽬的。
⾼频的驱动电路,噪声也⾼,当不需要⾼的输出频率时,请选⽤低频驱动电路,这样⾮常有利于提⾼系统的EMI性能。
当然如果要输出较⾼频率的信号,但却选⽤了较低频率的驱动模块,很可能会得到失真的输出信号。
关键是GPIO的引脚速度跟应⽤匹配(推荐10倍以上?)。
⽐如:1.1.1 对于串⼝,假如最⼤波特率只需115.2k,那么⽤2M的GPIO的引脚速度就够了,既省电也噪声⼩。
1.1.2 对于I2C接⼝,假如使⽤400k波特率,若想把余量留⼤些,那么⽤2M的GPIO的引脚速度或许不够,这时可以选⽤10M的GPIO引脚速度。
1.1.3 对于SPI接⼝,假如使⽤18M或9M波特率,⽤10M的GPIO的引脚速度显然不够了,需要选⽤50M的GPIO的引脚速度。
1.2 GPIO⼝设为输⼊时,输出驱动电路与端⼝是断开,所以输出速度配置⽆意义。
配置流程To plan configuration of the GPIO module, consider the following steps:Step 1. Plan the device pin-out:00Through a pin multiplexing scheme, a lot of flexibility is provided for assigning functionality to the GPIO-capable pins. Before getting started, look at the peripheral options available for each pin, and plan pin-out for your specific system. Will the pin be used as a general purpose input or output (GPIO) or as one of up to three available peripheral functions? Knowing this information will help determine how to further configure the pin.通过一个管脚复用的计划,可以给GPIO管脚组的功能赋予更多灵活性。
在开始之前,先查看每个管脚的外设可用的选项,然后为你特定的系统计划管脚的用途。
管脚是被用于输入输出的通用用途还是用作三个外设功能中的一个?搞清楚信息能够帮助你更好的配置管脚。
Step 2. Enable or disable internal pull-up resistors: 00To enable or disable the internal pullup resistors, write to the respective bits in the GPIO pullup disable (GPAPUD and GPBPUD) registers. For pins that can function as ePWM output pins, the internal pullup resistors are disabled by default. All other GPIO-capable pins have the pullup enabled by default. The AIOx pins do not have internal pull-up resistors.通过向GPIO取消上拉寄存器(GPAPUD和GPBPUD)特定为写0/1,来使能或者取消内部上拉电阻。
STM32 GPIO 相关寄存器每个GPIO端口有两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH)分别控制每个端口的高八位和低八位,如果IO口是0-7号的话,则写CRL寄存器,如果IO口是8-15号的话,则写CRH寄存器,两个32位数据寄存器(GPIOx_IDR,GPIOx_ODR)一个是只读作输入数据寄存器,一个是只写作输出寄存器,一个32位置位/复位寄存器(GPIOx_BSRR),一个16位复位寄存器(GPIOx_BRR)和一个32位锁定寄存器(GPIOx_LCKR)。
常用的IO端口寄存器只有四个:CRH,CRL,IDR,ODR.数据手册中列出的每个I/O端口的特定硬件特征, GPIO端口的每个位可以由软件分别配置成多种模式。
每个I/O端口位可以自由编程,然而I/0端口寄存器必须按32位字被访问(不允许半字或字节访问)。
另外,STM32的每个端口使用前都要将其时钟使能,STM32的GPIO的时钟统一挂接在APB2上,具体的使能寄存器为RCC_APB2ENR,该寄存器的第2位到第8位分别控制GPIOx(x=A,B,C,D,E,F,G)端口的时钟使能,当外设时钟没有启用时,程序不能读出外设寄存器的数值,如打开PORTA 时钟:RCC—>APB2ENR|=1〈<2; //使能PORTA时钟使能外设时钟后,GPIOA的十六位就可以按照设定的状态工作了,之后就是具体设置哪一位了以第八位为例即高位的首位,在GPIOx_CRH寄存器中进行设置,GPIOA的每一位都有该寄存器的四位来设定相应的参数,这四位中的高两位(CNF0,CNF1)设置GPIO的输入输出模式,低两位(MODE0,MODE1)是设置GPIO的输出频率,具体可以参考STM32参考手册。
GPIOA->CRH&=0XFFFFFFF0; //清掉PA8原来的设置,同时屏蔽其它端口,不影响其它端口的设置GPIOA—〉CRH|=0X00000003;//PA8 推挽输出十六进制中的3 换成二进制 00 11 前两位00表示推挽输出,11代表输出频率50Mhz,若CRH|=0x4,表示模拟输入模式(ADC用),0x3表示推挽输出模式(作输出口用,50M速率),0x8表示上/下拉输入模式(做输入口用),0xB表示复用输出(使用IO口的第二功能,50M速率). 这是对一位的操作,当然也可以多位操作,因为STM32对GPIO操作必须是32位全字操作,设置完成后GPIOA的第8位就可以使用了之后给GPIOA—>ODR=0x xxxx xxxx送数据就行了。
每个通用I/O 端口都受多路复用(MUX),方向(DIR),数据(DAT),置位(SET),清除(CLEAR),以及切换(TOGGLE)寄存器的控制。
下面介绍这些寄存器的功能.GPxMUX 寄存器(x=A,B,D,E,F,G)每个I/O 端口都有一个MUX(多路复用)寄存器.这个寄存器用来在每个引脚(PIN)的外设操作及I/O 操作之间进行选择。
复位时所有通用I/O 引脚都配置成数字I/O 功能。
任何一个引脚都可通过16 位的多路复用寄存器GPxMUX 进行外设或GPIO 功能的设置:当GPxMUX。
bit = 0,相应的一个引脚配置成I/O 功能;当GPxMUX。
bit = 1,相应的一个引脚配置成外设功能。
GPxDIR 寄存器(x=A,B,D,E,F,G)每个I/O 端口都有一个方向控制寄存器。
不论是将相应的I/O 引脚配置成输入还是输出,都由方向寄存器控制。
复位时,所有通用I/O 引脚均配置成输入。
当GPxDIR。
bit = 0,引脚配置成输入;当GPxDIR。
bit = 1,引脚配置成输出。
在采用GPxDIR 寄存器位将输入端口改变成输出端口之前,引脚的当前电平反映到GPxDAT 寄存器中.当端口的方向从输入改变成输出时,GPxDAT 寄存器的值用来确定引脚的电平。
例如,如果引脚已经从内部上拉,则复位后上拉将致使GPxDAT 寄存器对应位为1用于反映引脚的当前高电平。
当端口的方向从输入改变成输出时,GPxDAT 寄存器已经为1 的位强迫该引脚为同一高电平。
这样,在电平不变的情况下,引脚能够从输入转换为输出。
GPxDAT 寄存器(x=A,B,D,E,F,G)每个I/O 端口都有一个数据寄存器,它是一个读/写寄存器.读入的该寄存器的值反映了输入限制后输入引脚当前的电平,写寄存器可设置输出引脚为相应的电平。
当GPxDAT。
bit = 0,并且引脚设置为输出,则把引脚拉成低电平;当GPxDAT.bit = 1,并且引脚设置为输出,则把引脚拉成高电平。
gpio常用寄存器解释GPIO是通用输入输出的缩写,是一种常见的硬件接口。
在嵌入式系统或单片机开发中,GPIO常用于与外部设备进行数据交互。
GPIO常用寄存器是用来控制和设置GPIO引脚的寄存器。
下面是几个常用的GPIO寄存器的解释:1. GPIO方向寄存器(GPIODIR):该寄存器用于设置GPIO引脚的输入或输出方向。
当某一位为1时,表示该引脚为输出模式;当某一位为0时,表示该引脚为输入模式。
2. GPIO数据寄存器(GPIODATA):该寄存器用于读取或设置GPIO引脚的数据。
当引脚为输出模式时,可以通过该寄存器设置引脚的输出值;当引脚为输入模式时,可以通过该寄存器读取引脚的输入值。
3. GPIO中断使能寄存器(GPIOIE):该寄存器用于启用GPIO引脚的中断功能。
当某一位为1时,表示该引脚的中断功能被启用;当某一位为0时,表示该引脚的中断功能被禁用。
4. GPIO中断状态寄存器(GPIOIS):该寄存器用于检测GPIO引脚的中断状态。
当某一位为1时,表示该引脚触发了中断;当某一位为0时,表示该引脚未触发中断。
读取该寄存器后,需清零相应引脚的中断状态。
5. GPIO上升/下降沿触发寄存器(GPIOIBE):该寄存器用于设置GPIO引脚的中断触发方式。
当某一位为1时,表示该引脚的中断触发方式为上升沿和下降沿;当某一位为0时,表示该引脚的中断触发方式为边沿触发。
通过使用这些GPIO常用寄存器,开发者可以灵活地控制和配置GPIO引脚的操作模式、数据传输和中断触发等功能。
在嵌入式系统中,GPIO的应用非常广泛,例如控制外部LED灯的亮灭、读取外部传感器的数据等。
熟悉并理解这些寄存器对于嵌入式系统的开发非常重要。
DSP实验应用GPIO控制实验一 GPIO控制一.实验基本原理 1. 程序功能:通过对GPIO的设置来实现对实验板上LED(3D0)的亮灭的控制具体可分为对DPLL 和GPIO的控制.(1)时钟电路 a) C5509的时钟电路由一个DPLL和一个时钟模式寄存器CLKMD组成b) 在CLKMD的控制下,DPLL对外部输入时钟进行分频、倍频和锁相,为CPU及外设提供工作时钟CLKIN pin DPLL CLKOUT pinCLKMD CLKMD pin (2)时钟模式寄存器CLKMD相关控制字含义:IAI:退出省电状态后如何进行跟踪,是继续省电状态之前的设定还是重新进行整个跟踪锁定IOB:发生失锁时时钟电路的动作,是继续输出时钟信号还是切换到旁路模式PLLMULT:锁定模式下的倍频次数 PLLDIV:锁定模式下的分频次数(3)GPIO -C5509有8个相互独立的可编程GPIO管脚(IO0 ~IO7)构成 -各个GPIO管脚的方向控制(输入或输出)由方向寄存器IODIR设定-各个GPIO管脚上的输入/输出电平由寄存器IODATA控制 2.芯片支持库(1)DSP片上外设种类及其应用日趋复杂(2)提供一组标准的方法(APIs:函数、数据类型、宏)用于配置、控制和管理DSP 片上外设(3)免除用户编写配置和控制片上外设所必需的定义和代码(4)CSL库函数大多数是用C语言编写的,并已对代码的大小和速度进行了优化(5)CSL库是可裁剪的:即只有被使用的CSL模块才会包含进应用程序中(6)CSL库是可扩展的:每个片上外设的API相互独立,增加新的API,对其他片上外设没有影响二.实验所用到的硬件资源和在片外围电路硬件资源CPU、LED、蜂鸣器、电阻、电容等在片外围电路时钟发生器、通用输入/输出口等三.参数设置CPU时钟:PLL multiply value=24; PLL divide value =1;CLKOUT=PLLMULT/(PLLDIV+1)*CLKIN =24/2*12M=144MHZ小灯亮或灭的时间:N*13*16*65536/(144*10^6)=1.1s(N为指令周期) 四.实验流程图五.程序 #include #include#include void delay(); /*锁相环的设置*/PLL_Config myConfig = {0, //IAI: the PLL locks using the same process that was underway //before the idle mode was entered 1, //IOB: If the PLL indicates a breakin the phase lock,//it switches to its bypass mode and restarts the PLL phase-locking//sequence24, //PLL multiply value; multiply 24 times1 //Divide by2 PLL divide value; it can be either PLL dividevalue//(when PLL is enabled), or Bypass-mode divide value//(PLL in bypass mode, if PLL multiply value is set to 1) }; main() {/*初始化CSL库*/CSL_init();/*设置系统的运行速度为144MHz*/PLL_config(&myConfig); /*确定方向为输出*/ // ioport unsigned int*IODIR; // IODIR=(unsigned int *)0x3400; // ioport unsigned int *IODATA;// IODATA=(unsigned int *)0x3401;// *clkmd =0x21f3; // 晶振12Hz,9Hz=0x21f3;// 144MHz=0x2613 GPIO_RSET(IODIR,0xFF); while(1) {GPIO_RSET(IODATA,0x0c0); delay();GPIO_RSET(IODATA,0x000); delay();} }void delay() {Uint32 j = 0,k = 0; for(j = 0;j<0xc0;j++) {for(k = 0;k<0xffff;k++)}}{}感谢您的阅读,祝您生活愉快。
DSP28335 GPIO模块DSP28335 GPIO模块分为三类IO口:PORTA(0-31),PORTB(32-63),PORTC(64-87)对GPIO模块的设置主要通过三类寄存器来完成,分别是:控制寄存器、数据寄存器、中断寄存器。
1、控制寄存器GPxCTRL; // GPIO x Control Register (GPIO0 to 31)//设置采样窗周期T=2*GPXCTRL*Tsysclk;GPxQSEL1; // GPIO x Qualifier Select 1 Register (GPIO0 to 15)(32-47)GPxQSEL2; // GPIO x Qualifier Select 2 Register (GPIO16 to 31)(48-63) //每两位控制一个引脚,确定是3周期采样还是6周期采样或者不用采样GPxMUX1; // GPIO x Mux 1 Register (GPIO0 to 15)(32-47)(64-79)GPxMUX2; // GPIO x Mux 2 Register (GPIO16 to 31)(48-63)(80-95)//配置各个引脚的功能,0:I/O功能,1:外设功能。
GPxDIR; // GPIO x Direction Register (GPIO0 to 31)(32-63)(64-95)//配置每个引脚是输入还是输出,0:数字量输入;1:数字量输出。
GPxPUD; // GPIO x Pull Up Disable Register (GPIO0 to 31)(32-63)(64-95) //使能或禁止jie口的内部上拉2、数据寄存器GPxDAT; // GPIO Data Register (GPIO0 to 31)(32-63)(64-95)GPxSET; // GPIO Data Set Register (GPIO0 to 31)(32-63)(64-95)GPxCLEAR; // GPIO Data Clear Register (GPIO0 to 31)(32-63)(64-95)GPxTOGGLE; // GPIO Data Toggle Register (GPIO0 to 31)(32-63)(64-95)3、中断寄存器GPIOXINT1SEL; // XINT1 GPIO Input SelectionGPIOXINT2SEL; // XINT2 GPIO Input SelectionGPIOXNMISEL; // XNMI_Xint13 GPIO Input SelectionGPIOXINT3SEL; // XINT3 GPIO Input SelectionGPIOXINT4SEL; // XINT4 GPIO Input SelectionGPIOXINT5SEL; // XINT5 GPIO Input SelectionGPIOXINT6SEL; // XINT6 GPIO Input SelectionGPIOXINT7SEL; // XINT7 GPIO Input SelectionGPIOLPMSEL; // Low power modes GP I/O input select 可以对GPIO0-63进行外部中断设置。
[转载]DSP—GPIO介绍原⽂地址:DSP—GPIO介绍作者:珠慕锋TI⽂档: TSM320X2833X System control and interrupt regerence guide ----- SPRUFBO0~87 共88个I/O端⼝,其中GPIO0~GPIO31可以配置成8个核⼼中断。
28335的GPIO⼝可以分为三组,分别为A⼝(GPIO0~GPIO31),B⼝(GPIO32~GPIO63)和C⼝(GPIO64~GPIO87)。
1 GPXCTRL (A,B) 设定采样频率2 GPXQSELX(A,B,1,2) 采样次数3 GPXDIR(A,B,C)数据⽅向设置4 GPXPUD 设置内部上拉与否貌似设置成上拉之后就会变成外设功能引脚(也有⽹友解释,⼀般作为输出⼝的时候,都会设置成上拉,⽬的就是提⾼驱动能⼒,⽽对于输⼊⼝⽆所谓)5 GPXDAT 作为输出时:写⼊1、0 对应输出⾼、低电平作为输⼊时:读⼊1、0 对应输⼊⾼、低电平6 GPXSET 作为输出时:写⼊1会拉⾼引脚7 GPXCLEAR 作为输出时:写⼊1会拉低引脚8GPXTOGGLE 作为输出时:写⼊1会输出⽬前引脚状态相反的电平 1---0 0---19 GPIOXINTnSEL n=1~7 。
GPIO0~GPIO31 可以配置成7个核⼼可屏蔽中断XINT1~XINT7 interrupt 和⼀个不可屏蔽中断XNMI Interrupt。
10 GPIOLPMSEL 配置GPIO0~GPIO31 bits=1 相应的管脚上的信号可以唤醒处于停⽌或者等待低功耗状态的CPU。
11 GPxMUXn这个部分的学习可以先看GPIO的寄存器,因为寄存器的信息解释基本上就可以⽤来掌握GPIO的使⽤了,并且最GPIO有了⼀个了解,对于各个寄存器的名字和功能都有⼀个⽐较明确的理解。
接下来可以看看GPIO寄存器前⾯的介绍,对GPIO有更进⼀步的理解。
GPIO的操作规则和步骤⼀个名词,GPIO,英⽂全称是general purpose input/output,意为通⽤输⼊输出⼝。
DSP最终都是通过程序和外部模块或者设备产⽣数据交换的,所以,必须了解她的输⼊输出端⼝。
都还记得51单⽚机的输⼊输出⼝吧,虽然我好久没有给51编制过程序了,但是还记得51的输⼊输出端⼝是可以直接拿来赋值使其输出,或者直接⽤⼀条if语句去检测有⽆数据输⼊,相⽐⽽⾔,DSP的输⼊输出端⼝在这⽅⾯就复杂的多了。
⼀点要记住,DSP的GPIO端⼝,必须先设置后使⽤,具体需要⾃⼰编程设置某⼀个⼝线以下的⼏个点:1,该⼝是使能它的第⼀功能还是第⼆功能(因为很多端⼝都有复⽤的第⼆功能);2,该⼝如果使⽤输⼊输出功能,那么到底是⽤作输⼊,还是⽤作输出;以上两项设置完毕之后,就可以对GPIO⼝进⾏读或者写的操作了,不管读还是写⼀个⼝,都有相关的数据寄存器来存放你写到该⼝的值,或者外部输⼊给了这个端⼝,你需要通过读取这个数据寄存器得到这个外部输⼊的数据,仅此⽽已。
TI把GPIO分成了6组,这六组分别是GPIOA,GPIOB,GPIOD,GPIOE,GPIOF,GPIOG,这其中的每⼀组都包含了⼀个DSP实实在在的展⽰给外界的多个引脚,我们以GPIOA为例来看看仅仅是第⼀组GPIOA她究竟是包含了那些引脚。
可以看到,仅仅GPIOA这⼀组,包含了16个引脚,图⽚中第⼆列即为TI在出⼚时给这款DSP引脚所命的名称,通过查阅2812的176针LQFP封装定出了这16个引脚分别对应了92,93,94,95,98,101,102,104,106,107,109,116,117,122,123,124脚。
下⾯我们以GPIOA这⼀组为例,来看看相关寄存器的设置以及使⽤。
寄存器包含两⼤类,第⼀类叫控制寄存器,第⼆类叫数据寄存器。
控制寄存器包含三个:GPAMUX,GPADIR,GPAQUAL----功能选择,⽅向设置,输⼊限定;数据寄存器包含4个:GPADAT,GPASET,GPACLEAR,GPATOGGLE----数据,置⼀,清零,取反;前已述及,通过控制寄存器去设置GPIO的功能,通过数据寄存器去获取或者写⼊数据。
每个通用I/O 端口都受多路复用(MUX),方向(DIR),数据(DAT),置位(SET),清除(CLEAR),以及切换(TOGGLE)寄存器的控制。
下面介绍这些寄存器的功能。
GPxMUX 寄存器(x=A,B,D,E,F,G)
每个I/O 端口都有一个MUX(多路复用)寄存器。
这个寄存器用来在每个引脚(PIN)的外设操作及I/O 操作之间进行选择。
复位时所有通用I/O 引脚都配置成数字I/O 功能。
任何一个引脚都可通过16 位的多路复用寄存器 GPxMUX 进行外设或GPIO 功能的设置:
当GPxMUX.bit = 0,相应的一个引脚配置成I/O 功能;
当GPxMUX.bit = 1,相应的一个引脚配置成外设功能。
GPxDIR 寄存器(x=A,B,D,E,F,G)
每个I/O 端口都有一个方向控制寄存器。
不论是将相应的I/O 引脚配置成输入还是输出,都由方向寄存器控制。
复位时,所有通用I/O 引脚均配置成输入。
当GPxDIR.bit = 0,引脚配置成输入;
当GPxDIR.bit = 1,引脚配置成输出。
在采用GPxDIR 寄存器位将输入端口改变成输出端口之前,引脚的当前电平反映到GPxDAT 寄存器中。
当端口的方向从输入改变成输出时,GPxDAT 寄存器的值用来确定引脚的电平。
例如,如果引脚已经从内部上拉,则复位后上拉将致使GPxDAT 寄存器对应位为1用于反映引脚的当前高电平。
当端口的方向从输入改变成输出时,GPxDAT 寄存器已经为1 的位强迫该引脚为同一高电平。
这样,在电平不变的情况下,引脚能够从输入转换为输出。
GPxDAT 寄存器(x=A,B,D,E,F,G)。