#ifndef _EC20MODULE_H #define _EC20MODULE_H #include #include "usart.h" #include "syslib.h" /***************************************** *ec20module内部常变量 ****************************************/ #define EC20_UART COM1 //STM32与EC20通信串口的映射 #define MODULE_CMDPACK_LEN 1288 //EC20 module相关命令字符串的最大长度 #define SIM_ICCID_LEN 25 //存放 SIM卡ICCID号 数组的长度 #define EC20_VER_LEN 20 //粗放EC20模块 软件版本号 数组的长度 #define EC20_VOL_LEN 4 //存放EC20模块电压 数组的长度 #define CSQ_LEN 3 //存放EC20模块信号质量 数组的长度 /*EC20 3.6V供电稳压片使能引脚:高电平使能*/ #define EC20_POW_PORT PE #define EC20_POW_PIN PIN15 #define EC20_POW PEout(EC20_POW_PIN) /*EC20 硬件复位引脚:常态低电平,高电平脉冲复位EC20*/ #define EC20_RST_PORT PE //PE15 #define EC20_RST_PIN PIN11 #define EC20_RST PEout(EC20_RST_PIN) /***************************************** *ec20module用户自定义数据类型 ****************************************/ typedef enum { AT_MODE = 0 , //AT命令模式 USER_MODE = 1 , //接收sever用户数据模式 } EC20RECMODE_e ; //EC20串口工作模式 typedef struct { uint8_t cmdNum ; //命令序号 char *cmdStr ; //发送命令字符串 uint16_t timeout ; //接收回码超时时间t=revTimeout*100ms char *trueStr ; //正确的回码子串 volatile int trueOffset ; //正确回码字符子串在ec20AtBuf中的偏移地址 char *falseStr ; //指令处理失败返回的字符串指针 RunResult revResult ; //处理结果 uint8_t rtyNum ; //失败后重发次数 }EC20_CMD_DATA_s; //ec20通用命令收发参数结构体 typedef struct { char ec20SoftVer[EC20_VER_LEN+1] ; //存放EC20模块的软件版本 char ec20Voltage[EC20_VOL_LEN+1] ; //存放EC20模块的供电电压 char csq[CSQ_LEN+1] ; //3+1bytes 存放信号质量CSQ char simICCID[SIM_ICCID_LEN+1] ; //25+1bytes 存放SIM卡的ICCID号 }ModuleParam_s ; //EC20存放模块参数的结构体 /***************************************** *ec20可供外部使用的常变量 ****************************************/ #define MAX_IP_LEN 16 //IPV4 IP地址的最大长度 #define PORT_MAXLEN 6 //IPV4 端口的最大长度(0-65535) #define EC20_ATBUF_LEN 320 //ec20AtBuf缓冲区长度 #define EC20_HTTPBUF_LEN 320 //ec20AtBuf缓冲区长度 #define EC20_FTPBUF_LEN (2048+256) //ec20FtpBuf缓冲区长度 extern ModuleParam_s sEc20Param ; //声明ModuleParam_s结构体变量sEc20Param,存放EC20一些信息,供上层调用 extern volatile bool httpDataMode ; //串口模式:接收http数据模式 extern volatile bool ftpDataMode ; //串口模式:接收ftp数据模式 extern char ec20AtBuf[EC20_ATBUF_LEN] ; //EC20 AT命令回码存放缓冲区 extern char ec20HttpBuf[EC20_HTTPBUF_LEN] ; //EC20 AT命令回码存放缓冲区 extern char ec20FtpBuf[EC20_FTPBUF_LEN] ; //EC20 FTP返回数据存放缓冲区 extern volatile int ec20FtpBufIndex ; //ec20FtpBuf缓冲区写指针 extern FrameQueue_s sTcpQueue ; //环形帧缓冲区,存储模块返回的tcp相关数据 extern FrameQueue_s sUrcQueue ; //环形帧缓冲区,存储模块返回的URC数据 /***************************************** *内部函数声明 ****************************************/ RunResult EC20_SendModuleCmd( uint8_t cmdNum, char *format,... ) ; // EC20通过串口发送module相关命令 void EC20_Uart_Init(void) ; //初始化EC20_UART void EC20_GPIO_Init( void ) ; //初始化EC20相关控制IO void EC20_POWON(void) ; //EC20 3.6V供电稳压片使能上电 void EC20_POWOFF(void) ; //EC20 3.6V供电稳压片失能断电 RunResult EC20_START(void) ; //EC20开机上电、等待串口“RDY”回码 RunResult EC20_Handshake( void ) ; //mcu与EC20通过EC20_UART握手 RunResult EC20_CloseEcho(void) ; //关闭EC20 AT命令的回显 void Ec20ReceiveFrameCallback(char *recvBuf, uint16_t recvLen) ; //EC20_UART串口帧中断回调函数 /***************************************** *对外接口函数声明 ****************************************/ extern void Ec20AtBufReset(void) ; //ec20AtBuf缓冲区 初始化 extern void Ec20HttpBufReset(void) ; //ec20HttpBuf缓冲区 初始化 extern void Ec20FtpBufReset(void) ; //ec20FtpBuf缓冲区初始化 extern RunResult EC20_CLOSE(void) ; //EC20关机流程 软关机+断电 extern RunResult EC20_Query_SoftRelese(char *version) ; //获取EC20的软件版本号 extern RunResult EC20_Query_Voltage(char *voltage) ; //获取EC20的供电电压 extern RunResult EC20_Module_Init( void ) ; //EC20模块相关初始化 #endif