4722|9

73

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

如何用程序控制I/O口使得输出低电平以开启SIM300模块? [复制链接]

各位大虾:
   今遇到一棘手问题:程序在使用SIM300模块进行通信的时候,发现SIM300模块开启的时候需要给它的PWRKEY引脚供低电平2秒钟,我怎么写程序能控制PWRKEY引脚呢?我用的是2440,硬件的连接我不清楚,但我估计应该是使用通用I/O连接的。

ps:是否应用程序无能为力?要写驱动程序?
哪位大虾给个提示,谢谢!

最新回复

这年头,好东西都隐藏了  详情 回复 发表于 2009-8-15 22:20
点赞 关注

回复
举报

72

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
应用与驱动实现都可以,看你想怎么做了!
 
 

回复

77

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
是要写驱动程序,不过非常简单,如果有需要的话给我发邮件liukun0408@126.com
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

4
 
驱动中完成非常简单。参考一下wince 的GPIO操作。
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

5
 
用evc写可以吗?
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(中级)

6
 
如果是用CE5.0的平台的话可以用EVC来写,但必须知道其硬件的连接,也就是用哪根GPIO来拉低电平
如果是CE6的话估计就不行了,只能在驱动级实现,然后通过IOCTL由AP来调用
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

7
 
  1. //------------------以GPG8,GPG9口为例子---------------------
  2. // Pointer to device control registers
  3. volatile S3C2440A_IOPORT_REG *v_pIOPregs;

  4. BOOL InitializeAddresses(VOID)
  5. {
  6.         BOOL        RetValue = TRUE;
  7.        
  8.         /* IO Register Allocation */
  9.         //RETAILMSG(1,(TEXT("GPG Run Test: %u \r\n"), v_pIOPregs->GPGDAT));
  10.         DEBUGMSG(ZONE_PDD, (_T("NLedDriverInitialize: invoked2\r\n")));
  11.         v_pIOPregs = (volatile S3C2440A_IOPORT_REG *)VirtualAlloc(0, sizeof(S3C2440A_IOPORT_REG), MEM_RESERVE, PAGE_NOACCESS);
  12.         if (v_pIOPregs == NULL)
  13.         {
  14.                 ERRORMSG(1,(TEXT("For IOPregs : VirtualAlloc failed!\r\n")));
  15.                 DEBUGMSG(ZONE_PDD, (_T("NLedDriverInitialize:VirtualAlloc  fail\r\n")));
  16.                 RetValue = FALSE;
  17.         }
  18.         else
  19.         {
  20.                 if (!VirtualCopy((PVOID)v_pIOPregs, (PVOID)(S3C2440A_BASE_REG_PA_IOPORT >> 8), sizeof(S3C2440A_IOPORT_REG), PAGE_PHYSICAL | PAGE_READWRITE | PAGE_NOCACHE))
  21.                 {
  22.                         ERRORMSG(1,(TEXT("For IOPregs: VirtualCopy failed!\r\n")));
  23.                         DEBUGMSG(ZONE_PDD, (_T("NLedDriverInitialize:VirtualCopy failed\r\n")));
  24.                         RetValue = FALSE;
  25.                 }
  26.         }
  27.         if (!RetValue)
  28.         {
  29.                 if (v_pIOPregs)
  30.                 {
  31.                         VirtualFree((PVOID) v_pIOPregs, 0, MEM_RELEASE);
  32.                 }

  33.                 v_pIOPregs = NULL;
  34.         }

  35.         return(RetValue);
  36. }

  37. BOOL WINAPI
  38. NLedDriverInitialize(
  39.                     VOID
  40.                     )
  41. {
  42.     //DEBUGMSG(ZONE_PDD, (_T("NLedDriverInitialize: invoked\r\n")));
  43.         //现在可行了,这个打印函数有了
  44.         RETAILMSG(1,(TEXT("---------NLedDriverInitialize---------\r\n")));
  45.     if (!InitializeAddresses())
  46.             return (FALSE);

  47.     //----------GPG8 Setting------------
  48.     v_pIOPregs->GPGCON  &= ~(0x3 << 16);
  49.     v_pIOPregs->GPGCON  |=  (0x1 << 16);
  50.     v_pIOPregs->GPGDAT  &= ~(0x1 << 8);//输出低电平
  51.         v_pIOPregs->GPGDAT  |= (0x1 << 8);//输出高电平
  52.     v_pIOPregs->GPGUP   |=  (0x1 << 8);//禁止上拉,在上电没有执行程序的时候上拉高电平输出
  53.     //v_pIOPregs->GPGUP   &= ~(0x1 << 8);//使能上拉

  54.         DEBUGMSG(ZONE_PDD, (_T("TEST GPG8 run\r\n")));

  55.         //----------GPG9 Setting------------
  56.     v_pIOPregs->GPGCON  &= ~(0x3 << 18);
  57.     v_pIOPregs->GPGCON  |=  (0x1 << 18);
  58.     v_pIOPregs->GPGDAT  &= ~(0x1 << 9);//输出低电平
  59.         //v_pIOPregs->GPGDAT  |= (0x1 << 9);//输出高电平
  60.     v_pIOPregs->GPGUP   |=  (0x1 << 9);//禁止上拉,在上电没有执行程序的时候上拉高电平输出
  61.     //v_pIOPregs->GPGUP   &= ~(0x1 << 9);//使能上拉
  62.         DEBUGMSG(ZONE_PDD, (_T("TEST GPG9 run\r\n")));

  63.     gLEDThread= CreateThread(0, 0, (LPTHREAD_START_ROUTINE) NLED_Thread, 0, 0, 0);

  64.     return (TRUE);
  65. }
复制代码
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

8
 
S3C2440A_IOPORT_REG这些变量定义是否要安装了platform builder之后才有啊?
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

9
 
BSP里定义的,跟PB没有关系
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

10
 
这年头,好东西都隐藏了
 
 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表