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

基于SIM900实现SIM卡上网


基于 SIM900 实现 SIM 卡上网 ********************************LoongEmbedded******************************** 作者:LoongEmbedded(kandi) 时间:2010.06.13 类别:WINCE 驱动开发 ********************************LoongEmb

edded******************************** 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


相关文章:
基于SIM900实现SIM卡上网
基于SIM900实现SIM卡上网_信息与通信_工程科技_专业资料。基于SIM900实现SIM卡上网1. 硬件环境 CPU:S3C2443X GPRS 模块:SIM900 CPU 和 SIM900 的物理端口连接如...
GSMGPR基于SIM900A的应用与实现
通” ,取一部手机行遍全球之意,其实现手段为全球使用同一个 移动电话网络标准...11 天线 SIM卡 防静电 串口 SIM900A 单片机 电源图 3.2 硬件系统设计功能...
SIM900_GPRS_调试笔记
SIM900 1、如果您的网络环境是基于 ADSL 线路上网,...SIM 卡,这两个品牌的 SIM 卡默认开通 CMNET 数据...
3、SIM800-sim900系类模块GPRS部分调试笔记
3、SIM800-sim900系类模块GPRS部分调试笔记_电子/...如果您的网络环境是基于 ADSL 线路上网,那么绝大...SIM 卡,这两个品牌的 SIM 卡默认开通 CMNET 数据...
基于SIM900A远程短信控制模块2路输出
基于SIM900A远程短信控制模块2路输出_电子/电路_工程科技_专业资料。SIM900A短信控制模块 远程短信开关 远程控制开关 开机前准备步骤步骤一.插入移动或联通电话卡(...
SIM900A各功能指令
SIM 卡未满的时候, SIM900A 模块会返回数据给...否则无法实现通信,推荐在 ADSL 网络下进行测试, 并...2.7.1 TCP 连接 TCP 是基于连接的协议,在收发数据...
SIM900A V4 使用简介
SIM900A 模块输出串口输出的高电压 就为 5V, 实现...SIM 卡接口: 模块还有一个推拉式 SIM 卡槽。 ...7 执行任何功能以前,一定要看模块是否已经注册到网络...
SIM900A GSM 模块使用
SIM900A GSM 模块使用_信息与通信_工程科技_专业资料。基于51单片机的GSM 模块...GSM 1. 电话卡和信号 2. 产生通信费用 3.SIM900A 串口通信的 GSM 模块 AT...
GPRS无线模块SIM900A硬件设计注意事项
GPRS无线模块SIM900A硬件设计注意事项_电子/电路_工程...主要原因是从模块开机到注册网络这段时间内,射频发射...SIM 卡部分参考设计如下图所示: MODULESMF05CSIM_...
SIM900A模块-单片机
软件部分通过 KeilC 软件进行编程,实现棉蚜快速监测装置的远程控制。 基于 SIM900A 的农业远程控制系统通过用户手机向 GSM 网络发送短信,接收 用户机的控制命令对...
更多相关标签:
sim900a | sim900 | sim900a at命令手册 | sim900a模块 | sim800a sim900a 区别 | sim900a中文资料 | sim900a gprs接收数据 | sim800 sim900区别 |