SIM900A模块AT命令手册:快速开发指南

需积分: 9 2 下载量 156 浏览量 更新于2024-07-21 收藏 2.07MB PDF 举报
"SIM900A_AT命令手册是针对SIM900A模块的一份详细指南,旨在帮助开发者理解和使用AT命令来控制和配置该模块。手册包含了多个版本的更新,提供了丰富的命令介绍和使用说明,以加速开发进程。SIMCom公司对此手册的内容不做任何明示或暗示的担保,且保留所有专利技术的所有权。手册中列举了各种AT命令,如AT+CALS用于校准传感器,AT+CBTE用于蓝牙测试,AT+STTONE设置振铃音调,AT+CIPDPDP管理PDP上下文,AT+CIPUDPMODE设置GPRS数据模式,AT+SGPIO配置GPIO引脚,AT+SPWM管理脉宽调制,以及AT+ECHO控制回显功能等。此外,手册还记录了版本历史,例如V1.01增加了多个命令,V1.02增加了CLCC和CR命令,V1.03则对SPWM、ECHO和GSMBUSY等命令进行了更新。" SIM900A模块是一款广泛应用于GSM/GPRS通信的硬件组件,通过AT命令集可以实现短信收发、电话拨打电话、网络连接等功能。AT命令是串行通信中的一种标准协议,允许用户与模块进行交互并控制其操作。 在SIM900A_AT命令手册中,每个命令都有详细的语法、参数解释和使用示例。例如,`AT+CLCC`命令用于查询当前呼叫状态,而`AT+CR`则是用于写入存储器的命令。`AT+CIPRXGET`允许获取网络接收的数据,`AT+CIPQRCLOSE`则用于关闭TCP/UDP连接。这些命令对于开发基于SIM900A的通信应用至关重要。 手册中的`AT+CALS`命令用于校准传感器,这对于确保模块在各种环境下的准确工作非常关键。`AT+CBTE`涉及蓝牙测试,可能用于检测和测试SIM900A的蓝牙功能。`AT+STTONE`允许用户自定义模块的振铃音调,适应不同的应用需求。`AT+CIPDPDP`和`AT+CIPUDPMODE`则是GPRS网络连接管理的一部分,分别用于管理PDP上下文和设定数据传输模式,对于建立和维护数据连接至关重要。 `AT+SGPIO`命令则涉及到对模块的GPIO(通用输入/输出)引脚的配置,允许开发者将SIM900A用作简单的数字I/O设备。`AT+SPWM`用于设置和控制脉宽调制信号,这在需要模拟信号输出或电机控制等应用中很有用。最后,`AT+ECHO`命令控制终端的回显功能,有助于调试和优化通信过程。 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 上传