SIM900A模块AT命令手册详解

需积分: 18 2 下载量 21 浏览量 更新于2024-07-21 收藏 2.08MB PDF 举报
SIM900A_AT命令手册_V1.05是一份详细阐述SIM900A模块AT命令使用的参考资料,由芯讯通无线科技(上海)有限公司编写。这份手册旨在帮助用户通过AT指令有效地操作和开发基于SIM900A模块的应用程序。手册内容包括基本的AT命令操作、GPRS网络连接、数据传输以及模块配置等多个方面。 SIM900A模块是一款GSM/GPRS通信模块,广泛应用于物联网设备和移动通信设备中。它支持多种AT命令,如: 1. **电话和短消息服务**:包括拨号(ATD)、挂断(ATH)、发送短信(AT+CMGS)、接收短信(AT+CMGR)等命令。 2. **网络连接与数据服务**:如设置GPRS上下文(AT+SAPBR)、建立TCP/UDP连接(AT+CIPSTART)、关闭连接(AT+CIPCLOSE)等,用于实现数据传输。 3. **网络状态查询**:如查询网络注册状态(AT+Cgreg)、查询SIM卡状态(AT+CPIN)等。 4. **模块配置**:包括设置模块工作模式(如语音、数据、短信等)、调整电源管理(AT+CFUN)、控制蜂窝网络信号强度(AT+CSQ)等。 5. **硬件控制**:SIM900A还允许控制GPIO引脚状态(AT+SGPIO)、PWM输出(AT+SPWM),甚至模拟拨号音(AT+STTONE)。 6. **调试与诊断**:例如,开启或关闭回显功能(AT+ECHO)有助于在调试过程中查看输入和输出,而AT+CALS则可能涉及校准某些参数。 7. **GPRS高级功能**:如PDP上下文激活(AT+CIPDPDP)、UDPMODE配置(AT+CIPUDPMODE)用于定制GPRS连接方式。 8. **数据传输控制**:如获取接收数据(AT+CIPRXGET)、关闭特定连接(AT+CIPQRCLOSE)和设置会话持续时间(AT+CIPSCONT)。 9. **其他功能**:如检查模块是否忙于处理网络事务(AT+GSMBUSY),这些功能进一步增强了模块的灵活性和可靠性。 手册的各个版本(V1.00至V1.05)都进行了相应的更新和增强,添加了新的命令来适应不断发展的技术和应用需求。例如,V1.01增加了CLCC(查询未接、已接和正在进行的呼叫列表)和CR(清除缓存)命令,V1.03则增强了SPWM和ECHO命令的功能,同时引入了GPRS相关的SAPBR、CIPRXGET、CIPQRCLOSE和CIPSCONT命令,以优化网络数据处理。 SIM900A_AT命令手册是开发人员和工程师的重要工具,它提供了详尽的指令集和操作指南,帮助用户充分利用SIM900A模块的功能,构建高效稳定的通信解决方案。在使用过程中,务必注意遵守手册中的注意事项,如系统的验证责任、版本更新的公告以及版权保护等规定。

void SIM900A_Init(void) { USART_InitTypeDef USART_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1, ENABLE); // 配置USART1的GPIO GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); // 配置USART1 USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART1, &USART_InitStructure); USART_Cmd(USART1, ENABLE); // 等待SIM900A模块启动 delay_ms(5000); } void SIM900A_SendCommand(char* command) { while(*command) { USART_SendData(SIM900A_USART, *command++); while(USART_GetFlagStatus(SIM900A_USART, USART_FLAG_TC) == RESET); } } void SIM900A_SendSMS(char* phoneNumber, char* message) { SIM900A_SendCommand("AT+CMGF=1"); // 设置短信格式为文本模式 SIM900A_SendCommand("AT+CMGS=\"+86"); // 设置手机号码 SIM900A_SendCommand(phoneNumber); SIM900A_SendCommand("\""); SIM900A_SendCommand(message); // 发送短信内容 USART_SendData(SIM900A_USART, 0x1A); // 发送Ctrl+Z结束短信 while(USART_GetFlagStatus(SIM900A_USART, USART_FLAG_TC) == RESET); } void SIM900A_SendSMS_Chinese(char* phoneNumber, char* message) { char ucs2Message[200]; u8 i; u8 j; SIM900A_SendCommand("AT+CMGF=0"); // 设置短信格式为PDU模式 SIM900A_SendCommand("AT+CSCS=\"UCS2\""); // 设置字符集为UCS2 SIM900A_SendCommand("AT+CSMP=17,167,0,8"); // 设置短信参数 SIM900A_SendCommand("AT+CMGS=\"+86"); // 设置手机号码 SIM900A_SendCommand(phoneNumber); SIM900A_SendCommand("\""); for(i = 0, j = 0; i < strlen(message); i += 2, j += 4) { sprintf(&ucs2Message[j], "%02X%02X", message[i+1], message[i]); } ucs2Message[j] = '\0'; SIM900A_SendCommand(ucs2Message); // 发送短信内容 USART_SendData(SIM900A_USART, 0x1A); // 发送Ctrl+Z结束短信 while(USART_GetFlagStatus(SIM900A_USART, USART_FLAG_TC) == RESET); }

2023-06-12 上传