duhao

duhao

0个粉丝

8

问答

0

专栏

0

资料

duhao  发布于  2014-11-11 11:51:26
采纳率 0%
8个问答
4783

GPIO管脚配置方式

 
最近开始学海思板,之前学2440配置gpio时,记得寄存器配置方法比较简单,先通过控制寄存器配置gpio为输入或输出,之后再通过数据寄存器控制它的电平高低,但是海思的管脚配置方式好像不一样,如果通过复用寄存器配置管脚的功能为gpio输入输出口了,接下来要怎么控制它是输入还是输出,高电平还是低电平啊?
我来回答
回答4个
时间排序
认可量排序

wonrowl

0个粉丝

10

问答

0

专栏

2

资料

wonrowl 2014-11-13 16:11:23
认可0
查数据手册对应的寄存器,其实一样,只是海思提供了 himm这个应用层的软件,可以直接操作,不用到底层去进行类似ioremap的操作了

lejianz

0个粉丝

1

问答

0

专栏

1

资料

lejianz 2016-06-19 23:04:56
认可0
这是HI3531的/etc/init.d/rcS的内容,结合HIMM工具,我们分析一下。
#GPIO17 3~6                               
himm 0x200F0234 0                         
himm 0x200F0238 0                         
himm 0x200F023C 0                         
himm 0x200F0240 0                         
#GPIO17 DIR                               
himm 0x20260400 0x20                      
#GPIO17_5 BUZZER                          
himm 0x20260080 0x20                      
                                          
ifconfig eth0 192.168.0.140               
ifconfig eth1 192.168.1.163               
                                          
telnetd&                                 
                                         
#GPIO17_5 BUZZER                         
himm 0x20260080 0x0
 
 
 
 
#GPIO17 3~6                               
himm 0x200F0234 0                         
himm 0x200F0238 0                         
himm 0x200F023C 0                         
himm 0x200F0240 0   
 这四行是定义GPIO17的3~6引脚为GPIO1的功能,即用作IO管 脚用。
 
 
 地址计算为基地址0X200F0000, 再加上0X234, 定义GP17.3的地址。
 
 
 
 
#GPIO17 DIR                               
himm 0x20260400 0x20                      
这是定义GPIO17.5脚为输出引脚,即方向引脚。记住:0X400都是方向引脚,一个组只有一个寄存器

#GPIO17_5 BUZZER                          
himm 0x20260080 0x20          
 这里直接输出17_5的引脚为高电平,引脚为高,蜂鸣器开始响了。 0X20为0B0010_0000,  也就是BIT5, 管脚号是GPIO17_0~GPIO17_7,
这里的0x20260080 的数据寄存器

再加上偏移地址0X080,  计算方法为:  0X20260000 + (1 《  (5 + 2))
其中5为管脚号, 2为右移MASK地址PADDR[9:2]
 

#GPIO17_5 BUZZER                        
himm 0x20260080 0x0
在运行了网络配置和TELNET程序后,置GPIO17_5脚为低电平,关掉蜂鸣器。

csuzhsh

1个粉丝

14

问答

0

专栏

0

资料

csuzhsh 2016-06-20 13:52:21
认可0
我们写了一个这样的驱动,直接用驱动来控制。

liusir

1个粉丝

28

问答

0

专栏

2

资料

liusir 2017-06-15 22:29:21
认可0
本帖最后由 liusir 于 2017-6-15 22:34 编辑

1.配置GPIO控制寄存器(使能GPIO功能)

2.配置GPIO方向寄存器(输入输出)
操作管脚哪一个,就配置dir寄存器的哪一位。
例:gpio1_3,则输出配置就是 gpio1dir = 0x8.

3.配置GPIO数据寄存器(需要读写的GPIO管脚值)

注:海思平台读写寄存器的两种方式

uboot下:
        使用uboot的内存地址读写命令
linux系统中:
        海思提供了系统中直接读写寄存器的命令
        读:himm reg_addr
        写:himm reg_addr value
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区