当前位置:首页 >> 信息与通信 >>

基于SIM900实现SIM卡上网


基于 SIM900 实现 SIM 卡上网 ********************************LoongEmbedded******************************** 作者:LoongEmbedded(kandi) 时间:2010.06.13 类别:WINCE 驱动开发 ********************************LoongEmbedded******************************** 1. 硬件环境 CPU:S3C2443X GPRS 模块:SIM900 CPU 和 SIM900 的物理端口连接如下: GPH0 -------------TX GPH1 -------------RX GPH8 -------------CTS GPH9 -------------RTS GPF6 -------------DCD GPE13 -------------DSR GPF4 -------------通过中间模拟电路再连接到 SIM900 的供电引脚 GPG13 -------------POWERKEY GPL9 -------------RESET 相关电路图如下:

1

2. 软件环境 WINCE6.0 3. 实现 3.1 串口驱动相关实现 ⑴ 在 ser_smdk2443.cpp 文件的 CreateSerialObject 函数中加入下面关于 GPRS 的内容 CSerialPDD * CreateSerialObject(LPTSTR lpActivePath, PVOID pMdd,PHWOBJ pHwObj, DWORD DeviceArrayIndex) { CSerialPDD * pSerialPDD = NULL; RETAILMSG( TRUE, (TEXT("DEBUG: CreateSerialObject %d\r\n"), DeviceArrayIndex)); switch (DeviceArrayIndex) { case 0: ///< UART0: GPRS pSerialPDD = new CPdd2443Serial0(lpActivePath,pMdd, pHwObj); break; case 1: ///< UART1: debug,GPRS_DEBG pSerialPDD = new CPdd2443Serial1(lpActivePath,pMdd, pHwObj); break; case 2: ///< UART2: GPS pSerialPDD = new CPdd2443Serial2(lpActivePath, pMdd, pHwObj); break; case 3: ///< UART3:bluetooth pSerialPDD = new CPdd2443Serial3(lpActivePath, pMdd, pHwObj); break; } if (pSerialPDD && !pSerialPDD->Init()) { delete pSerialPDD; pSerialPDD = NULL; } return pSerialPDD; } ⑵在类 CPdd2443Serial0 的定义中假如下面内容用于 UART0 和 SIM900 的 TX/RX 建立物理 连接,本设计不使用硬件流控,所以 RTS 和 CTS 端没有配置为相应的功能端口 class CPdd2443Serial0 : public CPdd2443Uart { ………………… virtual BOOL Init() { …………………………………… m_pIOPregs->GPHCON &= ~(0x3<<0 | 0x3<<2 ); m_pIOPregs->GPHCON |= (0x2<<0 | 0x2<<2 ); m_pIOPregs->GPHUDP |= (0x2<<(0) | 0x2<<(2)); m_pIOPregs->GPHUDP &= ~(0x2<<(16) | 0x2<<(18));

2

m_pDTRPort = (volatile ULONG *)&(m_pIOPregs->GPFDAT); m_pDSRPort = (volatile ULONG *)&(m_pIOPregs->GPGDAT); m_dwDTRPortNum = 0; m_dwDSRPortNum = 3; ……………………………………………….. return CPdd2443Uart::Init(); } return FALSE; }; ………………………………………………. }; ⑶ 串口驱动相关注册表,采用 COM3 ;===============GPRS: UART0 (physical COM3 connector P1) (Serial) COM3=============== [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial1] "DeviceArrayIndex"=dword:0 "Irq"=dword:1c "MemBase"=dword:50000000 "MemLen"=dword:30 ;; 2c "InterruptBitsShift"=dword:0 ; UART 0 Interrupt Sub Register shift bit. "ISTTimeouts"=dword:200 ; every 512 ticks checking Modem status. "Prefix"="COM" "Index"=dword:3 "Dll"="serial_smdk2443.dll" "Order"=dword:0 "Priority"=dword:0 "Port"="COM3:" "DeviceType"=dword:0 "FriendlyName"="GPRS COM3" "Tsp"="unimodem.dll" "IClass"="{CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}" "DevConfig"=hex: 10,00, 00,00, 05,00,00,00, 10,01,00,00, 00,4B,00,00, 00,00, 08, 00, 00, 00,00,00,00

3.2 对 SIM900 模块的时钟及 IO 口控制 这部分的控制需要根据 SIM900 的 datasheet 的具体描述来控制。 ⑴我在 OEMInit() ConfigureGPIO()中加入如下控制代码 /****************************************kandi start***************************************/ //////////////////3G/////////////////////////// #ifdef MX500B

add

3

//threeG_GPIO4=1,normal mode:RF is working s2443IOP->GPLCON &= ~(0x3<<12); s2443IOP->GPLCON |= (0x1<<12); s2443IOP->GPLUDP &= ~(0x3<<12); s2443IOP->GPLDAT |= (0x1<<6); #endif //////////////////////////GPRS/////////////////////////// //GPRS_DCD s2443IOP->GPFCON &= ~(0x3<<12); s2443IOP->GPFCON |= (0x1<<12); s2443IOP->GPFDAT &= ~(0x1<<6); //GPRS_DSR s2443IOP->GPECON &= ~(0x3<<26); s2443IOP->GPECON |= (0x1<<26); s2443IOP->GPEDAT &= ~(0x1<<13); //GPRS_CTS s2443IOP->GPHCON &= ~(0x3<<16); s2443IOP->GPHCON |= (0x1<<16); s2443IOP->GPHDAT &= ~(0x1<<8); //GPRS_RTS s2443IOP->GPHCON &= ~(0x3<<18); s2443IOP->GPHCON |= (0x1<<18); s2443IOP->GPHDAT &= ~(0x1<<9); //EN_GPRS s2443IOP->GPFCON &= ~(0x3<<8); s2443IOP->GPFCON |= (0x1<<8); s2443IOP->GPFDAT |= (0x1<<4); //GPRS_POWERKEY s2443IOP->GPGCON &= ~(0x3<<26); s2443IOP->GPGCON |= (0x1<<26); s2443IOP->GPGUDP &= ~(0x3<<26); s2443IOP->GPGDAT &= ~(0x1<<13); #ifdef MX500B //threeG_RESET s2443IOP->GPLCON &= ~(0x3<<10); s2443IOP->GPLCON |= (0x1<<10); s2443IOP->GPLUDP &= ~(0x3<<10);

4

s2443IOP->GPLDAT |= (0x1<<5); for(i=0;i<20;i++) { i=i; } s2443IOP->GPLDAT &= ~(0x1<<5); OALMSG(1, (L"OEMInit kandi test 1111\r\n")); #else //GPRS_RESET s2443IOP->GPLCON &= ~(0x3<<18); s2443IOP->GPLCON |= (0x1<<18); s2443IOP->GPLUDP &= ~(0x3<<18); s2443IOP->GPLDAT |= (0x1<<9); for(i=0;i<20;i++) { i=i; } s2443IOP->GPLDAT &= ~(0x1<<9); OALMSG(1, (L"OEMInit kandi test 22222\r\n")); #endif ⑵在 CMC.dll 驱动增加下面内容 因为我们的产品很多是通信模块,故创建 cmc.dll 来对 GPS、GPRS、3G、RFID 和 BT 等模 块进行控制, CMC_Init() CmcGPIOInit()加入如下内容来满足 3G 模块和 SIM900 模块时 在 序的要求 #ifdef MX500B //threeG_RESET v_pIOP_CMC_regs->GPLDAT |= (0x1<<5); RETAILMSG(CMC_DEBUG_MESSAGE, (L"CmcGPIOInit kandi test 1111\r\n")); #else //GPRS_RESET v_pIOP_CMC_regs->GPLDAT |= (0x1<<9); Sleep(1000); v_pIOP_CMC_regs->GPGDAT |= (0x1<<13); RETAILMSG(CMC_DEBUG_MESSAGE, (L"CmcGPIOInit kandi test 222222\r\n")); #endif 4. 注意的问题 ⑴因为我们的系统没有使用硬件流控的方式,所以在 WINCE 自带的控制面板下,新建一个 连接的时候,流控方式也必须选为“none”

5

5.

6


相关文章:
SIM900A模块-单片机
软件部分通过 KeilC 软件进行编程,实现棉蚜快速监测装置的远程控制。 基于 SIM900A 的农业远程控制系统通过用户手机向 GSM 网络发送短信,接收 用户机的控制命令对...
GPRS无线模块SIM900A硬件设计注意事项
GPRS无线模块SIM900A硬件设计注意事项_电子/电路_...主要原因是从模块开机到注册网络这段时间内,射频发射...3.4SIM 卡部分设计 模块支持 1.8/3.0V 的 SIM ...
SIM900A模块系列调试(未完)
Sim900a 调试文档 当供电没有问题时, 如果还是发现模块网络指示灯还是快闪, 那么可以更换一个正在使用的 移动或联通卡再试试,考虑到可能是模块对 SIM 卡不兼容。...
SIM900A各功能指令
SIM 卡未满的时候, SIM900A 模块会返回数据给...否则无法实现通信,推荐在 ADSL 网络下进行测试, 并...2.7.1 TCP 连接 TCP 是基于连接的协议,在收发数据...
SIM900A V4 使用简介
SIM900A 模块输出串口输出的高电压 就为 5V, 实现...SIM 卡接口: 模块还有一个推拉式 SIM 卡槽。 ...7 执行任何功能以前,一定要看模块是否已经注册到网络...
基于SIM900A远程短信控制模块2路输出
基于SIM900A远程短信控制模块2路输出_电子/电路_工程科技_专业资料。SIM900A...开机前准备步骤步骤一.插入移动或联通电话卡(SIM 卡缺口朝内,有金属面的朝下,...
基于sim900a的智能家居远程防盗报警系统的设计56128596
√设计 B.论文 适用专业 上机时数 主要研究内容 以单片机为核心,基于 sim900a 无线通信模块,设计一个通过短消息进行远程 报警功能的系统。主要内容包括:单片机最...
3、SIM800-sim900系类模块GPRS部分调试笔记
3、SIM800-sim900系类模块GPRS部分调试笔记_电子/...如果您的网络环境是基于 ADSL 线路上网,那么绝大...SIM 卡,这两个品牌的 SIM 卡默认开通 CMNET 数据...
嵌入式mini stm32基于sim900a的温度实时报警系统_图文
嵌入式mini stm32基于sim900a的温度实时报警系统_信息与通信_工程科技_专业资料...表明 SIM 卡没有插入或 TC35 正在进行网络登录;当 LED 为 75 ms 亮/3s 熄...
SIM900A GSM 模块使用
SIM900A GSM 模块使用_信息与通信_工程科技_专业资料。基于51单片机的GSM 模块...GSM 1. 电话卡和信号 2. 产生通信费用 3.SIM900A 串口通信的 GSM 模块 AT...
更多相关标签: