(完整版)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,来使能或者取消内部上拉电阻。
每个通用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)。