5508|11

82

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请教访问GPIO的结构体IOPreg的意义 [复制链接]

小弟用2440,操作GPIO的的时候,需要把IO口映射到如下的结构体中
typedef struct  {
                unsigned int  rGPACON;                        // 00
                unsigned int  rGPADAT;
                unsigned int  rPAD1[2];
   
                unsigned int  rGPBCON;                        // 10
                unsigned int  rGPBDAT;
                unsigned int  rGPBUP;
                unsigned int  rPAD2;
   
                unsigned int  rGPCCON;                        // 20
                unsigned int  rGPCDAT;
                unsigned int  rGPCUP;
                unsigned int  rPAD3;
   
                unsigned int  rGPDCON;                        // 30
                unsigned int  rGPDDAT;
            unsigned int  rGPDUP;
            unsigned int  rPAD4;
   
                unsigned int  rGPECON;                        // 40
                unsigned int  rGPEDAT;
                unsigned int  rGPEUP;
                unsigned int  rPAD5;
   
                unsigned int  rGPFCON;                        // 50
                unsigned int  rGPFDAT;
                unsigned int  rGPFUP;
                unsigned int  rPAD6;
   
                unsigned int  rGPGCON;                        // 60
                unsigned int  rGPGDAT;
                unsigned int  rGPGUP;
                unsigned int  rPAD7;
   
                unsigned int  rGPHCON;                        // 70
                unsigned int  rGPHDAT;
                unsigned int  rGPHUP;
                unsigned int  rPAD8;
   
                unsigned int  rMISCCR;                        // 80
                unsigned int  rDCKCON;               
                unsigned int  rEXTINT0;
                unsigned int  rEXTINT1;               
                unsigned int  rEXTINT2;                        // 90
                unsigned int  rEINTFLT0;
                unsigned int  rEINTFLT1;
                unsigned int  rEINTFLT2;
                unsigned int  rEINTFLT3;                // A0
                unsigned int  rEINTMASK;
                unsigned int  rEINTPEND;
                unsigned int  rGSTATUS0;                // AC
                unsigned int  rGSTATUS1;                // B0
                unsigned int  rGSTATUS2;                // B4 ;;; SHL
                unsigned int  rGSTATUS3;                // B8
                unsigned int  rGSTATUS4;                // BC
       
                unsigned int  rFLTOUT;                        // C0
                unsigned int  rDSC0;
                unsigned int  rDSC1;
                unsigned int  rMSLCON;

                unsigned int  rGPJCON;                        // D0
                unsigned int  rGPJDAT;
                unsigned int  rGPJUP;
                unsigned int  rPAD9;
       
}IOPreg;

找了很久也找不到这个结构体的说明,比如我要设置IO口是输入还是输出的要怎么设置,这个参数是什么含义???

最新回复

学习一下,俺也在这个定义~~  详情 回复 发表于 2010-6-21 20:34
点赞 关注

回复
举报

71

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
一般来说,BSP里会把soc的很多寄存器映射到一个结构体(就是楼主贴的这一堆),然后通过MmMapIOSpace等函数把这个结构体和寄存器映射起来。
所以结构体的顺序一定要和寄存器的layout顺序一致,这样才能一一映射嘛。
楼主要先阅读soc手册的找到相应的寄存器。
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
楼主,如果是在2410的平台上,wince4.2或者wince4.2升级wince5.0的BSP,那么这个文件在HALL\INC下面的2410.h里面
这个东西很有趣,使用一个32位地址绑定到IOPreg,然后根据C语言的结构体存储特点,来访问unsigned int  rGPJUP这些寄存器,unsigned int  在PB下刚好占据4个字节,刚好和这些寄存器的物理地址互相之间相差4个字节想吻合,所以就可以通过IOPreg来访问这些寄存器了。
在别的平台上你只要仔细找找BSP下面的文件,你也可以找到。别担心,就是那几个文件而已,你看过几次自然胸有成竹了
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

4
 
LS,我也找到这个文件,并且已经可以操作GPIO的输入输出,只是我想知道这个结构体的具体定义,每个参数分别是什么意思,因为之后,我想应该会有说明档吧,我用的是2440,结构定义上好象和2410差不多,请知道的出来说一下!!!
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 3 楼 linchunfu 的回复:
LS,我也找到这个文件,并且已经可以操作GPIO的输入输出,只是我想知道这个结构体的具体定义,每个参数分别是什么意思,因为之后,我想应该会有说明档吧,我用的是2440,结构定义上好象和2410差不多,请知道的出来说一下!!!


-------------看这些变量的名字就知道是2440/2410的端口啊,寄存器了。你看看2440的数据手册就知道了
 
 
 

回复

99

帖子

0

TA的资源

一粒金砂(初级)

6
 
结构体变量的意义要通过IOPREG这个东西来确定是什么意思,通常会把IOPREG绑定到一个寄存器的地址上,然后就可以通过+4来访问下一个寄存器了
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

7
 
顶下楼上的,说得很清楚.在2440.H的文件中会把这些变量与具体的地址绑起来的,你直接操作这些IO就可以了啊
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

8
 
明白了,之前没去看s3c2440的文档,还想再问一下,我不是太明白pull up上拉是什么意思,pull up对于一个pin来说具体的意义应该是什么,如果我要定义按键pin脚的话,是不是应该定义pull up为enable
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

9
 
引用 7 楼 linchunfu 的回复:
明白了,之前没去看s3c2440的文档,还想再问一下,我不是太明白pull up上拉是什么意思,pull up对于一个pin来说具体的意义应该是什么,如果我要定义按键pin脚的话,是不是应该定义pull up为enable


----------我也是初学者,这个按键引脚我也没有试过,不过我觉得这个上拉应该和单片机的上拉的意思和作用是一样的,上拉一般是指一端拉接上高电平(通过软件控制ARM9内部的一个MOS管脚导通,具体看单片机的做法,好像2440的芯片手册没有讲得那么详细)一般用来读外部引脚的的电平状态。总之你多看BSP的驱动源码,你自然会知道是怎么回事。
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

10
 
pull up上拉,有时也有可能是上升沿看具体语境了.
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

11
 
具体看看datasheet应该能明白的
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

12
 
学习一下,俺也在这个定义~~
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表