我是靠谱客的博主 清新大雁,最近开发中收集的这篇文章主要介绍GPIO模块功能测试1.功能描述2.端口复用3.如何操作4.测试代码分析,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

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内部寄存器实现,具体配置方法为:

  1. 设置GPIO_TS[0:1]=0b00,选择GPIO_TCR[0]为输入输出控制信号;
  2. 设置GPIO_TCR[0]=0b0,选择GPIO0端口为输入模式;
  3. 设置GPIO_ODR[0]=0b0,不使能漏极开路模式;
  4. 设置GPIO_IS1[0:1]=0b01,选择ExINT0;
  5. 从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

  1. 首先配置GPIO_ODR为:GPIO通路为正常输出口;
  2. 配置GPIO_TSH为:选择GPIO_TCR为GPIO信号源;
  3. 配置GPIO_TCR为:GPIO端口方向为输入;
  4. 配置GPIO_ISH为:选择输入信号为GPIO_RR寄存器;
  5. 配置GPIO_RR1寄存器为:加载到中断控制器的信号为高电平;
  6. 使能外部中断,观察是否能够进入中断。

4.5.2选择输入信号源为外部中断源

  1. 首先配置GPIO_ODR为:GPIO通路为正常输出口;
  2. 配置GPIO_TSH为:选择GPIO_TCR为GPIO信号源;
  3. 配置GPIO_TCR为:GPIO端口方向为输入;
  4. 配置GPIO_ISH为:选择加载到中断控制器的信号源为外部中断源;
  5. 读GPIO_IR外部输入寄存器,观察外部是否给到中断;
  6. 使能外部中断,观察是否能够进入中断。

        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选择输入信号源为保持逻辑

  1. 首先配置GPIO_ODR为:GPIO通路为正常输出口;
  2. 配置GPIO_TSH为:选择GPIO_TCR为GPIO信号源;
  3. 配置GPIO_TCR为:GPIO端口方向为输入;
  4. 配置GPIO_ISH为:选择加载到中断控制器的信号源为保持逻辑;
  5. 读GPIO_IR外部输入寄存器,观察逻辑是否保持;
  6. 使能外部中断,观察是否能够进入中断。

        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.测试代码分析所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部