海思GPIO应用程序和寄存器操作

前期

    海思操作GPIO,可以通过海思自带命令himm直接操作寄存器配置,具体请查看博主文章:海思芯片上GPIO操作;

本博客主要是通过代码的形式去实现对GPIO的控制,当然无论是哪种方式,其原理都是差不多的。

一、应用程序控制GPIO

    对于应用程序,需要操作底层驱动,才能达到控制外设GPIO的作用,驱动程序这里就不多说明,可以去下载驱动源码:https://download.csdn.net/download/u012478275/11269118;编译驱动程序,在设备上加载驱动,生成设备/dev/hi_gpio,应用程序可以直接操作这个设备驱动来控制外设;

1、打开或者关闭设备驱动

打开:hDevGPIO = open( gpio_dev_name, O_RDWR );

关闭:close( hDevGPIO );

2、设置GPIO方向

group_dir_info.GroupNumber = gpio_GroupNum; // GPIO组号
group_dir_info.BitNumber = gpio_BitNum; // GPIO 位号
group_dir_info.value = gpio_dir; // GPIO方向  0:收入  1:输出
GPIO_SET_DIR  = 0x01;

ioctl( hDevGPIO, GPIO_SET_DIR, ( unsigned long ) &group_dir_info );

例如:配置GPIO5_5为输出  

group_dir_info.GroupNumber = 5;
group_dir_info.BitNumber = 5;
group_dir_info.value = 1; 

3、读取写GPIO值

group_data_info.GroupNumber = gpio_GroupNum; // GPIO组号
group_data_info.BitNumber = gpio_BitNum; // GPIO 位号
group_data_info.value = gpio_dir; // 值
GPIO_READ_BIT = 0x03;// 读取
GPIO_WRITE_BIT = 0x4;//写入

ioctl( hDevGPIO, GPIO_WRITE_BIT, ( unsigned long ) &group_data_info );

例如:配置GPIO5_5值为1

group_dir_info.GroupNumber = 5;
group_dir_info.BitNumber = 5; 
group_dir_info.value = 1; 

4、应用程序代码下载:https://download.csdn.net/download/u012478275/11269182

二、寄存器配置函数

HI_S32 HI_MPI_SYS_SetReg(HI_U32 u32Addr, HI_U32 u32Value); //设置寄存器
HI_S32 HI_MPI_SYS_GetReg(HI_U32 u32Addr, HI_U32 *pu32Value);//读取寄存器

例如:  把复用寄存器muxctrl_reg54复用为GPIO5_5;

HI_MPI_SYS_SetReg(0x120F00D8,0x01);

 

你可能感兴趣的:(海思开发)