SIM900A AT命令手册 V1.03:模块操作指南

5星 · 超过95%的资源 需积分: 4 117 下载量 158 浏览量 更新于2024-07-31 1 收藏 1.96MB PDF 举报
"SIM900A_AT命令手册_V1.03" SIM900A模块是一款基于GSM/GPRS网络的通信模块,主要用于实现语音、短信和数据传输功能。AT命令是控制SIM900A模块的主要方式,通过发送特定的ASCII字符串指令,用户可以配置模块参数、进行网络注册、拨打电话、发送短信等操作。SIM900A_AT命令手册_V1.03是芯讯通无线科技(上海)有限公司提供的一份详细文档,用于指导用户如何使用这些AT命令。 手册包含了多个版本的历史记录,每个版本都进行了相应的更新和改进。例如,V1.00是初始版本,根据SIM900A模块的AT命令测试报告编写;V1.01增加了多个新命令,如AT+CALS用于校准频率,AT+CBTE用于蓝牙测试,AT+STTONE设置振铃音,AT+CIPDPDP和AT+CIPUDPMODE涉及GPRS数据连接,AT+SGPIO和AT+SPWM分别用于GPIO和PWM的控制,而AT+ECHO则用于开启或关闭命令回显功能。 在后续的版本中,手册继续添加了新的内容。V1.02增加了AT+CLCC命令,用于查询当前呼叫状态,以及AT+CR命令,允许写入操作。V1.03版本中,AT+SPWM再次出现,可能是对之前版本的补充或修正,同时加入了AT+ECHO的更新,可能提供了更多的选项或优化了回显功能。此外,还引入了AT+GSMBUSY,用于查询模块是否忙于GSM通话,AT+CIPRXGET用于获取接收数据的状态,AT+CIPQRCLOSE用于关闭TCP/UDP连接,以及AT+CIPSCONT,可能与IP连接状态有关。 手册强调,虽然SIMCom提供了此手册作为开发指南,但用户在使用过程中需自行负责系统的验证和兼容性测试,因为SIMCom不对额外的信息或客户系统集成承担任何独立测试的责任。同时,手册内容可能会随着产品升级而更新,用户应保持关注最新版本。 SIM900A_AT命令手册_V1.03是开发基于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 上传