【六一】【海思SS528】GPIO寄存器操作 - 使能GPIO管脚输出高、低电平

目录

  • 一、概述
  • 二、配置复用控制寄存器,使能GPIO功能
  • 三、配置`GPIO_DIR`寄存器,选择输出
  • 四、配置`GPIO_DATA`寄存器,输出高电平
  • 五、测试


【六一】【海思SS528】GPIO寄存器操作 - 使能GPIO管脚输出高、低电平_第1张图片

一、概述

这篇文章根据海思SS528芯片提供的《22AP30 H.265编解码处理器用户指南.pdf》文档(文档路径:SS528ReleaseDoc\hardware\chip),演示怎样操作GPIO寄存器来控制某个IO口输出高电平,本文控制的是 GPIO20_6

关于如何操作寄存器的步骤,在文档的13.6.3有提供说明,结合本文目的分为三个步骤:

  • 配置复用控制寄存器,使能GPIO功能;
  • 配置GPIO_DIR寄存器,选择输出;
  • 配置GPIO_DATA寄存器,写入输出值 1 ,表示输出高电平。
    【六一】【海思SS528】GPIO寄存器操作 - 使能GPIO管脚输出高、低电平_第2张图片

【六一】【海思SS528】GPIO寄存器操作 - 使能GPIO管脚输出高、低电平_第3张图片

二、配置复用控制寄存器,使能GPIO功能

复用是指该管脚有多种功能,可以根据控制寄存器里的值,来选择使用哪个功能。
关于GPIO管脚复用控制寄存器的说明在 22AP30_PINOUT_CN.xlsx (文档路径:SS528ReleaseDoc\hardware\chip),打开22AP30_PINOUT_CN.xlsx,在下面选择表格管脚控制寄存器,按Ctrl+F搜索GPIO20_6,找到我们要配置的管脚寄存器,如下图:
【六一】【海思SS528】GPIO寄存器操作 - 使能GPIO管脚输出高、低电平_第4张图片

根据表格信息知道,

  • 寄存器地址0x17c701d0
  • 寄存器的值可以配置为0x1200,表示 使能GPIO功能、IO6挡位8、关闭上拉、打开下拉
    【六一】【海思SS528】GPIO寄存器操作 - 使能GPIO管脚输出高、低电平_第5张图片

【六一】【海思SS528】GPIO寄存器操作 - 使能GPIO管脚输出高、低电平_第6张图片

三、配置GPIO_DIR寄存器,选择输出

要配置寄存器,首先需要找到它的地址,GPIO_DIR寄存器是采用 基地址+偏移地址 的方式来获得的。

GPIO20基地址在《22AP30 H.265编解码处理器用户指南.pdf》13.6.4可以查到,为:0x110a_4000
【六一】【海思SS528】GPIO寄存器操作 - 使能GPIO管脚输出高、低电平_第7张图片

GPIO_DIR的偏移地址为400,GPIO20_6设置为输出功能,即设置的值第6位为1,其他都为0,用二进制表示为0100 0000,转换为十六进制为0x40;
【六一】【海思SS528】GPIO寄存器操作 - 使能GPIO管脚输出高、低电平_第8张图片

小结

  • GPIO20_6的GPIO_DIR寄存器地址为:0x110a4400
  • GPIO20_6设置为输出,值为:0x40

【六一】【海思SS528】GPIO寄存器操作 - 使能GPIO管脚输出高、低电平_第9张图片

四、配置GPIO_DATA寄存器,输出高电平

要配置寄存器,首先需要找到它的地址,GPIO_DATA寄存器也是采用 基地址+偏移地址 的方式来获得的。

GPIO20基地址在《22AP30 H.265编解码处理器用户指南.pdf》13.6.4可以查到,为:0x110a_4000,它的偏移地址给了一个范围,我们选择0x3FC,表示寄存器的[7:0]操作全部有效。如下图:
【六一】【海思SS528】GPIO寄存器操作 - 使能GPIO管脚输出高、低电平_第10张图片

我们要使GPIO20_6输出高电平,即设置的值第6位为1,其他都为0,用二进制表示为0100 0000,转换为十六进制为0x40;

小结

  • GPIO20_6的GPIO_DATA寄存器地址为:0x110a43fc
  • GPIO20_6设置为输出,值为:0x40

【六一】【海思SS528】GPIO寄存器操作 - 使能GPIO管脚输出高、低电平_第11张图片

五、测试

根据海思SDK提供的寄存器工具,测试GPIO操作,测试工具在SDK包的 路径为:SS528V100R001C02SPC003\SS528V100_SDK_V2.0.0.3\osdrv\tools\board\reg-tools-1.0.0\bin

测试结果如图:
【六一】【海思SS528】GPIO寄存器操作 - 使能GPIO管脚输出高、低电平_第12张图片

测试命令如下:

# 配置复用寄存器
bspmm 0x17c701d0 0x00001200

# 配置方向寄存器为输出
bspmm 0x110a4400 0x40

# 配置输出高电平
bspmm 0x110a43fc 0x40

# 配置输出高电平
bspmm 0x110a43fc 0x00

在这里插入图片描述
如果文章有帮助的话,点赞、收藏⭐,支持一波,谢谢

你可能感兴趣的:(嵌入式开发,单片机,fpga开发,嵌入式硬件)