SIM900A模块AT命令手册 V1.05

需积分: 18 3 下载量 19 浏览量 更新于2024-07-19 收藏 2.08MB PDF 举报
"SIM900A_AT命令手册_V1.05.pdf" SIM900A模块是一款由芯讯通无线科技(上海)有限公司生产的GSM/GPRS通信模块,广泛应用于各种嵌入式系统和物联网设备中。该手册是开发者和工程师使用SIM900A模块进行通信功能配置和管理的重要参考资料。手册详细列出了模块支持的各种AT(Attention)命令,这些命令用于控制和配置模块的行为。 手册的内容涵盖了多个方面,包括但不限于: 1. **基本操作**:如模块的初始化、信号强度查询(AT+CSQ)、网络注册状态(AT+COPS)等基础功能。 2. **语音和短信服务**:如拨号通话(ATD)、发送和接收短信(AT+CMGF、AT+CMGS)等。 3. **数据连接与GPRS**:SIM900A支持GPRS数据通信,手册详细解释了如何设置APN(AT+SAPBR)、建立PDP上下文(AT+CIPDPDP)、开启和关闭TCP/UDP连接(AT+CIPSTART、AT+CIPCLOSE)等。 4. **高级功能**:如蜂窝网络状态查询(AT+CGATT),网络时间获取(AT+CCLK),以及调制解调器的音频控制(AT+SPWM)、回声控制(AT+ECHO)等。 5. **错误处理与诊断**:通过AT命令可以进行故障排查,例如检查SIM卡状态(AT+CPIN)、查看呼叫状态(AT+CLCC)等。 6. **硬件控制**:SIM900A还提供了对GPIO(通用输入输出)和PWM(脉宽调制)的控制,通过AT+SGPIO和AT+SPWM命令,可以配置模块的硬件接口。 7. **网络服务**:如GSM网络繁忙状态查询(AT+GSMBUSY)、IP数据包接收控制(AT+CIPRXGET)和快速关闭TCP连接(AT+CIPQRCLOSE)。 手册的版本历史显示了随着产品的发展和升级,SIMCom不断添加新的AT命令以满足更多功能需求。例如,从V1.00到V1.05,增加了多项新命令,如GPRS提示(AT+CR)、GPIO控制(AT+SGPIO)、PWM配置(AT+SPWM)等,表明模块的功能在持续扩展和完善。 对于使用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 上传