海思Hi3516开发日记之GPIO的使用
1 新建工程
在Ubuntu的QT Creator中,新建工程Hi3516Project。
2 添加海思相关库文件到工程
(1)复制SDK包中的文件,路径为
1 | ./Hi3516CV500_SDK_V2.0.2.0/package/mpp_smp_linux/ |
(2)复制该文件夹下的lib、include以及/sample/common文件夹到工程目录。

(3)在工程名字上右键选择“Add Existing Directory…”,添加加入的头文件以及相关例程。

(4)在pro文件中,加入海思链接库
1 | LIBS += -L /lib -ltde -lmpi -lupvqe -ldnvqe\ |
3 设计ui
(1)打开主ui文件,添加一个按钮,功能为GPIO测试。并将相应的槽函数设置为跳转到GPIO页面。
(2)新建GPIO类,打开ui文件,添加两个按钮,功能分别为打开GPIO7_2引脚和关闭GPIO7_2引脚。


4 海思Hi3516GPIO操作流程
(1)先设置GPIO复用为输出(以GPIO7_2为例)
查阅海思寄存器表,复用地址为0x112F_004C,寄存器的值为0 时表示复用为GPIO,所以使用命令himm 0x112F0054 0。

(2)设置GPIO的方向
查阅海思Hi3516 GPIO寄存器及基地址表,GPIOn对应的寄存器地址为:GPIOn基地址+该寄存器偏移地址。
表1 芯片GPIO寄存器对应的基地址
GPIO控制器 | 基地址 |
---|---|
GPIO11 | 0x120D_B000 |
GPIO10 | 0x120D_A000 |
GPIO9 | 0x120D_9000 |
GPIO8 | 0x120D_8000 |
GPIO7 | 0x120D_7000 |
GPIO6 | 0x120D_6000 |
GPIO5 | 0x120D_5000 |
GPIO4 | 0x120D_4000 |
GPIO3 | 0x120D_3000 |
GPIO2 | 0x120D_2000 |
GPIO1 | 0x120D_1000 |
GPIO0 | 0x120D_0000 |
表2 GPIO寄存器概览
偏移地址 | 名称 | 描述 |
---|---|---|
0x000~0x3FC | GPIO_DATA | GPIO数据寄存器 |
0x400 | GPIO_DIR | GPIO方向控制寄存器 |
0x404 | GPIO_IS | GPIO中断触发寄存器 |
0x408 | GPIO_IBE | GPIO双沿触发中断寄存器 |
0x40C | GPIO_IEV | GPIO触发中断条件寄存器 |
0x410 | GPIO_IE | GPIO中断屏蔽寄存器 |
0x414 | GPIO_RIS | GPIO原始中断状态寄存器 |
0x418 | GPIO_MIS | GPIO屏蔽状态中断寄存器 |
0x41C | GPIO_IC | GPIO中断清除寄存器 |
- GPIO_DATA为GPIO数据寄存器。用来对输入或输出数据进行缓存。当配置GPIO_DIR中对应位为输出时,写入GPIO_DATA寄存器的值将会输出到相应的管脚(注意需要配置正确的管脚复用);如果配置为输入时,将会读取相应输入管脚的值。
- GPIO_DIR为GPIO方向控制寄存器。用来配置GPIO管脚方向。
Bits | Access | Name | Description |
---|---|---|---|
[7:0] | RW | gpio_dir | GPIO方向控制寄存器。bit[7:0]分别对应 GPIO_DATA[7:0],各比特可独立控制。 0:输入; 1:输出。 |
我们要想设置GPIO7_2的方向为输出,GPIO7基地址为0x120D7000,加上方向偏移的0x400为0x120D7400。第二个引脚设置为1,二进制为0000 0100就是0x04。所以使用命令:
1 | himm 0x120D7400 0x04 |
(3)设置GPIO的值

我们操作GPIO7_2就是0b 00 0001 0000 也就是0x010 加上偏移也就是0x120D7010,让GPIO7_2输出高就是himm 0x120D7010 0b0000 0100 也就是himm 0x120D7010 0x04。
5 设置按钮槽函数
1 | /* |
6 移植到开发板运行
(1)设置QT环境变量
1 | export QWS_MOUSE_PROTO=IntelliMouse:/dev/input/mice; |
(2)运行海思hb
1 | ./sample_hifb 0 |
(3)运行程序
1 | ./Hi3516Project -qws |

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小w的世界!