目录
一、概述 { #chapter-1 }
本文详细介绍了如何通过配置海思SS528芯片的复用控制寄存器、GPIO_DIR寄存器和GPIO_DATA寄存器,使能GPIO20_6并设置其输出高电平。步骤包括使能GPIO功能、选择输出模式以及写入输出值。最后,使用SDK提供的寄存器工具进行了测试验证。
文章根据[海思](SS528芯片提供的《22AP30 H.265编解码处理器用户指南.pdf》
文档(文档路径:SS528ReleaseDoc\hardware\chip
),演示怎样操作GPIO寄存器来控制某个IO口输出高电平,本文控制的是GPIO20_6
。
关于如何操作寄存器的步骤,在文档的13.6.3有提供说明,结合本文目的分为三个步骤:
- 配置复用控制寄存器,使能GPIO功能;
参考“管脚复用控制寄存器” 配置管脚的相应位,使能需要使用的GPIO管脚功能。
- 配置GPIO_DIR寄存器,选择输出;
配置寄存器GPIO_DIR,选择作为输入或输出。
- 配置GPIO_DATA寄存器,写入输出值 1 ,表示输出高电平。
当配置成输入管脚时,读取GPIO_DATA寄存器可查看输入信号值;
当配置成输出管脚时,通过GPIO_DATA寄存器写入输出值,可控制GPIO管脚输出电平。
二、配置复用控制寄存器,使能GPIO功能 {#chapter-2}
复用是指该管脚有多种功能,可以根据控制寄存器里的值,来选择使用哪个功能。
关于GPIO管脚复用控制寄存器的说明在 22AP30_PINOUT_CN.xlsx (文档路径:SS528ReleaseDoc\hardware\chip),打开22AP30_PINOUT_CN.xlsx,在下面选择表格管脚控制寄存器,按Ctrl+F搜索GPIO20_6,找到我们要配置的管脚寄存器,如下图:
根据表格信息知道,
寄存器地址0x17c701d0
寄存器的值可以配置为0x1200,表示 使能GPIO功能、IO6挡位8、关闭上拉、打开下拉
三、配置GPIO_DIR
寄存器,选择输出 {#chapter-3}
要配置寄存器,首先需要找到它的地址,GPIO_DIR寄存器是采用 基地址+偏移地址 的方式来获得的。
GPIO20基地址在《22AP30 H.265编解码处理器用户指南.pdf》的13.6.4可以查到,为:0x110a_4000。
GPIO_DIR的偏移地址为400,GPIO20_6设置为输出功能,即设置的值第6位为1,其他都为0,用二进制表示为0100 0000,转换为十六进制为0x40;
小结:
GPIO20_6的GPIO_DIR寄存器地址为:0x110a4400
GPIO20_6设置为输出,值为:0x40。
四、配置GPIO_DATA
寄存器,输出高电平{#chapter-4}
要配置寄存器,首先需要找到它的地址,GPIO_DATA寄存器也是采用 基地址+偏移地址 的方式来获得的。
GPIO20基地址在《22AP30 H.265编解码处理器用户指南.pdf》的13.6.4可以查到,为:0x110a_4000,它的偏移地址给了一个范围,我们选择0x3FC,表示寄存器的[7:0]操作全部有效。如下图:
我们要使GPIO20_6输出高电平,即设置的值第6位为1,其他都为0,用二进制表示为0100 0000,转换为十六进制为0x40;
小结:
GPIO20_6的GPIO_DATA寄存器地址为:0x110a43fc
GPIO20_6设置为输出,值为:0x40。
五、测试 {#chapter-4}
根据海思SDK提供的寄存器工具,测试GPIO操作,测试工具在SDK包的 路径为:SS528V100R001C02SPC003\SS528V100_SDK_V2.0.0.3\osdrv\tools\board\reg-tools-1.0.0\bin
测试命令如下:
# 配置复用寄存器
bspmm 0x17c701d0 0x00001200
# 配置方向寄存器为输出
bspmm 0x110a4400 0x40
# 配置输出高电平
bspmm 0x110a43fc 0x40
# 配置输出高电平
bspmm 0x110a43fc 0x00