美文网首页
GPIO寄存器操作 - 使能GPIO管脚输出高、低电平

GPIO寄存器操作 - 使能GPIO管脚输出高、低电平

作者: xqiiitan | 来源:发表于2024-11-14 09:44 被阅读0次

目录


一、概述 { #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,找到我们要配置的管脚寄存器,如下图:

管脚寄存器.png

根据表格信息知道,
寄存器地址0x17c701d0
寄存器的值可以配置为0x1200,表示 使能GPIO功能、IO6挡位8、关闭上拉、打开下拉

寄存器的值可以配置为0x1200.png

三、配置GPIO_DIR寄存器,选择输出 {#chapter-3}

要配置寄存器,首先需要找到它的地址,GPIO_DIR寄存器是采用 基地址+偏移地址 的方式来获得的。
GPIO20基地址在《22AP30 H.265编解码处理器用户指南.pdf》的13.6.4可以查到,为:0x110a_4000。

image.png

GPIO_DIR的偏移地址为400,GPIO20_6设置为输出功能,即设置的值第6位为1,其他都为0,用二进制表示为0100 0000,转换为十六进制为0x40;


image.png

小结:

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]操作全部有效。如下图:

image.png

我们要使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

相关文章

  • openwrt 编写驱动控制led

    一、编写GPIO驱动 查找 GPIO 寄存器配置(gpio0为例)查手册获取 GPIO0 设置相关的寄存器GPIO...

  • android gpio口控制

    android gpio口控制  GPIO口控制方式是在jni层控制的方式实现高低电平输出,类似linux的控制句...

  • 树莓派上使用C语言检测触碰传感器

    本实验室利用C语言来检测gpio接口的状态,然后控制led灯显示。灯为输出管脚,触碰传感器为输入管脚,即gpio接...

  • 嵌入式寄存器位操作

    位操作 在嵌入式编程中,常常需要涉及到寄存器的位操作,使能某个功能,设置 gpio select, 配置外设等。 ...

  • Arduino ESP8266 文档 - 硬件资料

    Digital IO(数字输入输出接口) Arduino中的管脚编号和ESP8266 GPIO管脚编号相对应。可以...

  • 12.28 嵌入式

    今天老师讲了GPIO工作原理和寄存器,GPIO的输入工作模式 输入浮空,输入上拉,输入下拉,模拟输入;输出模式 开...

  • GPIO笔记

    查看管脚状态 cat /sys/kernel/debug/gpio 用/sys/class/gpio方式控制GPI...

  • 2018年1月10日实习总结

    今天自学了dsp看视频听讲解,上午学习了gpio管脚,它分为A,B,C三组,配置各种寄存器设置控制和数据,和管脚复...

  • Linux GPIO 中断函数注册

    gpio中断函数设置方法 1.使能中断 enable_irq(gpio_to_irq(GPIO)); 2.声明定义...

  • 学习记录

    按键输入实验## 使能GPIO时钟 初始化GPIO 串口操作## 串口设置的一般步骤可以总结为如下几个步骤: 串口...

网友评论

      本文标题:GPIO寄存器操作 - 使能GPIO管脚输出高、低电平

      本文链接:https://www.haomeiwen.com/subject/lxrjjjtx.html