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

5星 · 超过95%的资源 需积分: 4 13 下载量 92 浏览量 更新于2024-07-23 收藏 1.96MB PDF 举报
"SIM900A_AT指令手册_V1.03" SIM900A模块是一款基于GSM/GPRS网络的通信模块,主要应用于各种需要无线数据传输的设备中。AT指令集是控制该模块的主要方式,允许用户通过简单的文本命令来配置模块参数、建立和管理通信连接。这份《SIM900A_AT命令手册》详细列出了SIM900A模块所支持的AT指令,旨在帮助开发者和工程师快速理解和使用该模块。 手册涵盖了多个方面,包括基本的模块设置、网络注册、电话呼叫、短消息服务(SMS)、GPRS数据连接等。例如: 1. **基本设置**:通过AT命令可以进行基本的模块设置,如日期和时间设置(AT+CCLK),模块的模式切换(AT+CMGF,选择短信模式:PDU或文本)。 2. **网络操作**:模块能够通过AT+COPS命令搜索和选择运营商网络,AT+CGATT则用于GPRS附着与分离,确保模块能接入GPRS服务。 3. **电话功能**:AT+CLIP和AT+CLCC指令分别提供了来电号码显示和当前呼叫状态查询,而ATD用于拨打电话。 4. **短信服务**:AT+CMGS用于发送短信,AT+CMGL用于读取、删除或查看存储的短信,AT+CMGW用于编写待发送的短信。 5. **GPRS连接**:对于数据传输,AT+CIPSTART用于开启TCP/UDP连接,AT+CIPSEND用于发送数据,AT+CIPCLOSE关闭连接。此外,AT+CIPRXGET和AT+CIPQRCLOSE分别用于获取接收的数据和强制关闭连接。 6. **扩展功能**:SIM900A还支持一些高级功能,如GPIO(通用输入输出)控制(AT+SGPIO),PWM(脉宽调制)设置(AT+SPWM),以及GSM模块的忙状态查询(AT+GSMBUSY)。 手册的每个版本都有相应的更新,如V1.01增加了新的命令,如用于蜂窝基站测试的AT+CALS,PWM控制的AT+SPWM,以及回显设置的AT+ECHO等。版本V1.03进一步完善了AT+SPWM和AT+ECHO的指令,并新增了GSM模块忙状态查询的AT+GSMBUSY,以及GPRS数据连接相关的AT+CIPRXGET和AT+CIPQRCLOSE。 在使用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 上传