概述
目录
1.功能描述
2.端口复用
3.如何操作
4.测试代码分析
4.1GPIO_VERIFICATION01- GPIO复位值验证
4.2GPIO_VERIFICATION02- GPIO读写验证
4.3GPIO_VERIFICATION03- GPIO正常输入/输出功能验证
4.4GPIO_VERIFICATION04- GPIO模拟漏极开路功能验证
4.5GPIO_VERIFICATION05- GPIO_IS输入选择功能验证
4.5.1通过软件配置选择输入信号为GPIO_RR
4.5.2选择输入信号源为外部中断源
4.5.3选择输入信号源为保持逻辑
1.功能描述
GPIO(通用输入输出接口)模块是可综合内核,一方面它可复用各种具有不同功能的模块I/O管脚,管脚起模块中定义的功能,减少模块I/O的数量。
另一方面GPIO模块不包含实际的模块I/O单元,只提供了A管脚(数据输入驱动)、TS管脚(三态控制驱动)和Z管脚(接收器输出)。用来进行数据的输入输出。
每路GPIO可通过编程输出“选择寄存器”来选择“输出寄存器”作为相应GPIO输出的源。
每路寄存器可通过编程“三态选择寄存器”来选择“三态控制寄存器”作为GPIO三态控制信号的源。
每路GPIO具有3个可选择的“输入源”输入给其他片上逻辑。每个可选择的输入源都可通过按位编程“输入选择寄存器”来选择“接受寄存器”、GPIO输入管脚或来自片内的其他输出信号作为其信号源。
对GPIO漏极开路寄存器编程能够控制GPIO的三态驱动单元,使之模拟漏极开路驱动。
GPIO具有标准APB总线从设备接口,可通过APB接口来与系统处理器和其他内部逻辑收发数据。除输入寄存器外的其他所有寄存器都是可以通过APB访问来读写的,输入寄存器为只读寄存器。
所有寄存器位和内核输入输出信号为一一对应关系。
2.端口复用
芯片GPIO管脚复用包括复用为外部中断、复用为其他模块功能管脚。
芯片复位后默认使用管脚复用模式,在该模式下,64路GPIO通道均使用其复用管脚。使用GPIO通用数据输入输出接口需通过配置GPIO内部寄存器实现,具体配置方法为:
- 设置GPIO_TS[0:1]=0b00,选择GPIO_TCR[0]为输入输出控制信号;
- 设置GPIO_TCR[0]=0b0,选择GPIO0端口为输入模式;
- 设置GPIO_ODR[0]=0b0,不使能漏极开路模式;
- 设置GPIO_IS1[0:1]=0b01,选择ExINT0;
- 从GPIO引脚来的外部中断信号ExINT0即出现对应在EXT_INT_REQ0信号线上。GPIO1~7配置对应中断控制器的EXT_INT_IRQ1~7端口,具体方法与GPIO0配置类似,只需将寄存器的对应位进行配置即可。
3.如何操作
实际使用时,GPIO相当于一个输入输出的I/O管脚,可以定义成高阻、输入或输出,可以用作操作控制位,点LED灯等。
也可以接口复用,定义为模块管脚,管脚起模块中定义的功能。
4.测试代码分析
4.1GPIO_VERIFICATION01- GPIO复位值验证
对寄存器复位值进行验证,复位值为功能规范中各寄存器复位值。
4.2GPIO_VERIFICATION02- GPIO读写验证
对寄存器读写功能进行验证,读写值为输入测试值&可读写段位。
4.3GPIO_VERIFICATION03- GPIO正常输入/输出功能验证
验证GPIO能够在GPIO_TCR、GPIO_ODR等控制下正确接收/发送数据。
首先设置GPIO_ODR为正常输入口(不使能漏极开路驱动),GPIO_OS输出选择寄存器选择GPIO_OR输出寄存器进行数据输出,GPIO_TS三态选择寄存器选择发送信号源为GPIO_TCR,选择后GPIO_TCR选择端口方向为输出,设置输出数据并进行验证。主要看灯的状态,高亮低灭。更改GPIO_TCR状态为端口输入,设置输入数据并进行验证。主要看灯的状态,高亮低灭。
4.4GPIO_VERIFICATION04- GPIO模拟漏极开路功能验证
验证GPIO能够在GPIO_ODR寄存器控制下正确模拟漏极开路状态。
GPIO_TS三态选择寄存器选择发送信号源为GPIO_TCR,GPIO_TCR选择端口方向为输出, GPIO_OS输出选择寄存器选择GPIO_OR输出寄存器进行数据输出,GPIO_IS1选择加载到中断控制器的信号源为GPIO_RR,选择输出寄存器GPIO_OR输出全高电平,观察灯是否全亮。
GPIO_ODR寄存器设置为漏极开路状态,为高阻态,观察输出寄存器OR灯是否全灭。
设置GPIO_ODR为正常输出口(不使能漏极开路驱动),观察输出寄存器OR灯是否全亮。
设置GPIO_ODR为漏极开路状态,为高阻态,观察输出寄存器OR灯是否全灭
4.5GPIO_VERIFICATION05- GPIO_IS输入选择功能验证
4.5.1通过软件配置选择输入信号为GPIO_RR
- 首先配置GPIO_ODR为:GPIO通路为正常输出口;
- 配置GPIO_TSH为:选择GPIO_TCR为GPIO信号源;
- 配置GPIO_TCR为:GPIO端口方向为输入;
- 配置GPIO_ISH为:选择输入信号为GPIO_RR寄存器;
- 配置GPIO_RR1寄存器为:加载到中断控制器的信号为高电平;
- 使能外部中断,观察是否能够进入中断。
4.5.2选择输入信号源为外部中断源
- 首先配置GPIO_ODR为:GPIO通路为正常输出口;
- 配置GPIO_TSH为:选择GPIO_TCR为GPIO信号源;
- 配置GPIO_TCR为:GPIO端口方向为输入;
- 配置GPIO_ISH为:选择加载到中断控制器的信号源为外部中断源;
- 读GPIO_IR外部输入寄存器,观察外部是否给到中断;
- 使能外部中断,观察是否能够进入中断。
GPIO中断控制器0-15信号源对应关系如下:
中断源 | ||
GPIO_EXT0_INTR | GPIO_IS1H=0x1 | GPIO_IR:1 |
GPIO_EXT1_INTR | GPIO_IS1H=0x4 | GPIO_IR=10 |
GPIO_EXT2_INTR | GPIO_IS1H=0x10 | GPIO_IR=100 |
GPIO_EXT3_INTR | GPIO_IS1H=0x40 | GPIO_IR=1000 |
GPIO_EXT4_INTR | GPIO_IS1H=0x100 | GPIO_IR=10000 |
GPIO_EXT5_INTR | GPIO_IS1H=0x400 | GPIO_IR=100000 |
GPIO_EXT6_INTR | GPIO_IS1H=0x1000 | GPIO_IR=1000000 |
GPIO_EXT7_INTR | GPIO_IS1H=0x4000 | GPIO_IR=10000000 |
GPIO_EXT8_INTR | GPIO_IS1H=0x10000 | GPIO_IR=100000000 |
GPIO_EXT9_INTR | GPIO_IS1H=0x40000 | GPIO_IR=1000000000 |
GPIO_EXT10_INTR | GPIO_IS1H=0x100000 | GPIO_IR=10000000000 |
GPIO_EXT11_INTR | GPIO_IS1H=0x400000 | GPIO_IR=100000000000 |
GPIO_EXT12_INTR | GPIO_IS1H=0x1000000 | GPIO_IR=1000000000000 |
GPIO_EXT13_INTR | GPIO_IS1H=0x4000000 | GPIO_IR=10000000000000 |
GPIO_EXT14_INTR | GPIO_IS1H=0x10000000 | GPIO_IR=10000000000000 |
GPIO_EXT15_INTR | GPIO_IS1H=0x40000000 | GPIO_IR=100000000000000 |
4.5.3选择输入信号源为保持逻辑
- 首先配置GPIO_ODR为:GPIO通路为正常输出口;
- 配置GPIO_TSH为:选择GPIO_TCR为GPIO信号源;
- 配置GPIO_TCR为:GPIO端口方向为输入;
- 配置GPIO_ISH为:选择加载到中断控制器的信号源为保持逻辑;
- 读GPIO_IR外部输入寄存器,观察逻辑是否保持;
- 使能外部中断,观察是否能够进入中断。
GPIO中断控制器0-15信号源对应关系如下:
中断源 | |
GPIO_EXT0_INTR | GPIO_IS1H=0x2 |
GPIO_EXT1_INTR | GPIO_IS1H=0x8 |
GPIO_EXT2_INTR | GPIO_IS1H=0x20 |
GPIO_EXT3_INTR | GPIO_IS1H=0x80 |
GPIO_EXT4_INTR | GPIO_IS1H=0x200 |
GPIO_EXT5_INTR | GPIO_IS1H=0x800 |
GPIO_EXT6_INTR | GPIO_IS1H=0x2000 |
GPIO_EXT7_INTR | GPIO_IS1H=0x8000 |
GPIO_EXT8_INTR | GPIO_IS1H=0x20000 |
GPIO_EXT9_INTR | GPIO_IS1H=0x80000 |
GPIO_EXT10_INTR | GPIO_IS1H=0x200000 |
GPIO_EXT11_INTR | GPIO_IS1H=0x800000 |
GPIO_EXT12_INTR | GPIO_IS1H=0x2000000 |
GPIO_EXT13_INTR | GPIO_IS1H=0x8000000 |
GPIO_EXT14_INTR | GPIO_IS1H=0x20000000 |
GPIO_EXT15_INTR | GPIO_IS1H=0x80000000 |
最后
以上就是清新大雁为你收集整理的GPIO模块功能测试1.功能描述2.端口复用3.如何操作4.测试代码分析的全部内容,希望文章能够帮你解决GPIO模块功能测试1.功能描述2.端口复用3.如何操作4.测试代码分析所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复