SIM900A+STM32发送1K数据出错率较大!

2020-01-23 14:35发布

用STM32控制SIM900A,发送1K数据出错率较大。10%左右,DTU不出错,请问原因在哪里。是不是SIM900A一段时间后需清内部存储区?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
34条回答
dreampet
1楼-- · 2020-01-24 17:53
谢谢!我测试一下!
jack_1860
2楼-- · 2020-01-24 19:16
 精彩回答 2  元偷偷看……
solojimes
3楼-- · 2020-01-24 22:36
SIM900A,
我有时候用来传50,60K的数据文件,
大部分时候都是对的,
当然也有校验出错的时候,
但是出现的概率不大。
catch2000
4楼-- · 2020-01-25 01:54
发送数据的程序如下:
char gprs_tcp_send(unsigned char *sendData, int iLen)
{
        char snd_data[64] = {0};
        //char CTRLZ[2] = {0x1a, 0x00};

#if 0
        gprs_buffer_clr();
        sprintf(snd_data, "AT+CIPSEND?=%d ", iLen);
        AtSndData(snd_data);
        if (AtRcvData(GPRS_TIMEOUT, "CIPSNED:") < iLen)
        {
                return GPRS_ERROR;
        }
#endif
       
        gprs_buffer_clr();
        sprintf(snd_data, "AT+CIPSEND=%d ", iLen);
        AtSndData(snd_data);
        if (AtRcvData(GPRS_TIMEOUT, ">") != GPRS_OK)
        {
                return GPRS_ERROR;
        }

        //AtSndHexData(sendData, iLen);
        AtCommand_hex(sendData, iLen);
       
        // Ôö¼Ó·¢ËͽáÊø±êÖ¾ 2013/03/12
        //_delay_ms(5);
        //USART_SendData(USART2, 0x1a);
       
        //AtSndData(CTRLZ);
        if (AtRcvData(GPRS_TIMEOUT_MAX, " SEND OK ") != GPRS_OK)
        {
                return GPRS_ERROR;
        }
        return GPRS_OK;
}
jack_1860
5楼-- · 2020-01-25 01:58
初始化程序流程如下:
   上电序列
   
   测试串口通讯是否正常
   AT

   读取模块波特率
   AT+IPR?

   检查SIM卡状态
   AT+CSMINS?
   
   国际移动台设备标示请求
   AT+CIMI

   设置接收数据是否显示IP头,0 不显示;1 显示
   AT+CIPHEAD=1
  
   设置传输模式,0 非透传;1 透传;
   AT+CIPMODE=0

   接收数据时在IP头显示传输协议,0 不显示;1 显示
   AT+CIPSHOWTP=0

   是否已注册到GSM网络
   AT+CREG?

   设置命令定义的PDP上下文参数
   AT+CGDCONT=1,"IP","CMNET"

   建立TCP连接或注册UDP端口号
   AT+CIPSTART="TCP","222.128.7.227",8886
jack_1860
6楼-- · 2020-01-25 05:30
实在不知道为什么?请大家帮忙分析一下,谢谢!

一周热门 更多>