SIM900A AT命令手册 v1.05:模块操作指南

需积分: 18 0 下载量 163 浏览量 更新于2024-07-20 收藏 2.08MB PDF 举报
"SIM900A_AT命令手册_V1.05" SIM900A模块是一款基于GSM/GPRS网络的通信模块,常用于物联网设备和嵌入式系统中,提供语音、短信和数据传输功能。AT命令是与SIM900A模块交互的主要方式,通过发送特定的AT指令,可以控制模块的各种操作。手册《SIM900A模块AT命令手册》V1.05版本详细列出了这些命令,帮助开发者理解和使用该模块。 手册的目的是帮助客户快速掌握如何使用AT命令来操作SIM900A模块,从而加速产品开发和工程实施。然而,SIMCom公司并不对其提供的附加信息进行独立验证,责任在于客户或系统集成商,他们需确保整个系统的兼容性和稳定性。 SIM900A模块支持的AT命令包括但不限于以下部分: 1. **网络注册和状态查询**:如`AT+COPS`用于设置和查询网络运营商,`AT+CGATT`用于GPRS附着和分离。 2. **通话和短信管理**:`ATD`命令拨打电话,`AT+CMGF`切换短信模式(文本或PDU),`AT+CMGS`发送短信。 3. **GPRS连接**:`AT+CIPSTART`启动TCP/UDP连接,`AT+CIPSEND`发送数据,`AT+CIPCLOSE`关闭连接。 4. **数据传输和PDP上下文**:`AT+CIPDPDP`和`AT+CIPUDPMODE`涉及PDP上下文的操作,用于GPRS数据服务的建立和管理。 5. **模块配置**:`AT+CGDCONT`设置GPRS数据承载,`AT+CIPSCONT`控制IP连接状态。 6. **I/O控制**:`AT+SGPIO`和`AT+SPWM`用于管理模块的GPIO和PWM输出,以实现硬件接口的控制。 7. **回声控制**:`AT+ECHO`命令允许调整模块的回声特性,这对于调试时避免反馈噪声很重要。 8. **错误处理和状态报告**:`AT+CGERROR`查询GPRS错误,`AT+CR`则用于接收模块的运行日志。 9. **其他高级功能**:如`AT+SAPBR`配置和管理访问点参数,`AT+CIPRXGET`获取接收的数据,`AT+CIPQRCLOSE`关闭特定的查询连接。 手册的不同版本中,SIMCom添加了新的AT命令以扩展模块的功能,例如V1.01增加了`AT+CLCC`用于查询呼叫列表和`AT+CR`用于接收GPRS事件提示,V1.03中加入了`AT+CIPSCONT`控制IP会话持续性。 《SIM900A模块AT命令手册_V1.05》是开发者和工程师的宝贵参考资料,提供了全面的SIM900A模块操作指南,有助于深入理解模块的工作原理以及如何利用AT命令进行有效的通信和数据交换。

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 上传