目录
- 一、概述
- 二、配置复用控制寄存器,使能GPIO功能
- 三、配置`GPIO_DIR`寄存器,选择输出
- 四、配置`GPIO_DATA`寄存器,输出高电平
- 五、测试
一、概述
这篇文章根据海思SS528芯片提供的
《22AP30 H.265编解码处理器用户指南.pdf》
文档(文档路径:SS528ReleaseDoc\hardware\chip
),演示怎样操作GPIO寄存器来控制某个IO口输出高电平,本文控制的是GPIO20_6
。
关于如何操作寄存器的步骤,在文档的
13.6.3
有提供说明,结合本文目的分为三个步骤:
- 配置复用控制寄存器,使能GPIO功能;
- 配置
GPIO_DIR
寄存器,选择输出;- 配置
GPIO_DATA
寄存器,写入输出值 1 ,表示输出高电平。
二、配置复用控制寄存器,使能GPIO功能
复用是指该管脚有多种功能,可以根据控制寄存器里的值,来选择使用哪个功能。
关于GPIO管脚复用控制寄存器的说明在22AP30_PINOUT_CN.xlsx
(文档路径:SS528ReleaseDoc\hardware\chip
),打开22AP30_PINOUT_CN.xlsx
,在下面选择表格管脚控制寄存器
,按Ctrl+F
搜索GPIO20_6
,找到我们要配置的管脚寄存器,如下图:
根据表格信息知道,
- 寄存器地址
0x17c701d0
- 寄存器的值可以配置为
0x1200
,表示使能GPIO功能、IO6挡位8、关闭上拉、打开下拉
三、配置GPIO_DIR
寄存器,选择输出
要配置寄存器,首先需要找到它的地址,
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
寄存器,输出高电平
要配置寄存器,首先需要找到它的地址,
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
。
五、测试
根据海思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
如果文章有帮助的话,点赞👍、收藏⭐,支持一波,谢谢 😁😁😁