CAAS 发表于 2012-3-29 07:32:32

求助SIM300 ERROR 515 错的解决

请高手看看我的问题在哪里,顽固的515错!
SIM300初始化后发TEXT短信没问题,但发PDU短信则返回515错
该错的解释是:在初始化期间或在指令执行过程当中GSM MODEM又接受新的指令,将会出现此错误。您必须等到初始化完成或指令执行完毕。
程序如下

char Init_SIM300( void )
{
static char *n;
   
n=AT_CMD_Reply( "AT\r", "OK\r\n" );      //发AT回车变更波特率9600 应返回OK
Sim300_TXD( "AT+CSCLK=0\r" );
delay_500ms();
//n=AT_CMD_Reply( "AT+CSCS=\"GSM\"\r", "OK\r\n" );
n=AT_CMD_Reply( "AT+CSQ\r", "CSQ" );   //信号质量查询       
n=AT_CMD_Reply( "AT+CREG?\r", "+CREG: 0,1\r\n" ); //网络注_册信息CREG:0,1已注_册

//AT+CNMI=<mode>,<mt>,<bm>,<ds>,<bfr>
//mode=0 先将通知缓存起来,再按照<mt>的值进行发送(mt=0)故不通知TE
//mt=0   接受的短消息存储到默认的内存位置(包括class 3)不通知TE
//bm=0   小区广播不通知
//ds=0   状态报告不通知
//bfr=1始终为1
AT_CMD_Reply( "AT+CNMI=2,2,0,1,0\r", "OK" );        //新消息提示设置;
return 4;                                                               //返回码=4,连接成功
}       

void Sim300_TXD( char *tx_str )
{
char i,len;

len = (char)strlen(tx_str);
i = 0;
while( i<len )
{
SC550_TX_buf = *(tx_str+i);
TX_IN_FIFO_p = ++TX_IN_FIFO_p & (TX_BUF_LEN-1);
i++;
}
_NOP();
_NOP();
_NOP();
_NOP();
}


char* AT_CMD_Reply( char *cmd, char *ans )
{
static char *n;
uchar len;

Sim300_TXD( cmd );                                  
delay_1s();
len = RXBUF_to_PACKBUF();
n = PACK_delay_Comp( len, ans );// 每秒查找比较1次 找到即退出 否则持续4秒
return n;                        //n=0 没找到,否则n值为字串首址
}

/*==============================================================================
* 在定时器0中断服务程序
*=============================================================================*/
#pragma interrupt_handler timer0_ovf_isr:17
void timer0_ovf_isr(void)
/*定时器0(500uS)中断服务程序功能
*其一:
*如果16C550发送队列(256字节)的入队指针与出队指针不等,说明有新数据要发送,
*服务程序自SC550_TX_buf向THR写入数据

*/
{
unsigned char c;

CLI();
if( TX_OUT_FIFO_p != TX_IN_FIFO_p )
//if( (SC550_LSR & 0X20)==0x20 ||(SC550_LSR & 0x10)== 0x10 )
   if( (SC550_LSR & 0X20)==0x20 )
   {
      c = SC550_TX_buf[ TX_OUT_FIFO_p ];
                if( c == 0x1A ) {
                  _NOP();
                        _NOP();
                        _NOP();
                        _NOP();
                        _NOP();
                        _NOP();
                        _NOP();
                        _NOP();
                        _NOP();
                        _NOP();
                        _NOP();
                        _NOP();
                  }
                SC550_THR = c;
      TX_OUT_FIFO_p = ++ TX_OUT_FIFO_p & (TX_BUF_LEN-1);
   }

       
TCNT0 = 0x8D; //reload counter value
SEI();
}
PUD发送缓冲区映像

PUD发送后接收缓冲区映像

与SIM300的接口芯片为16C550

CAAS 发表于 2012-3-29 08:54:46

烦请高手光顾一下

CAAS 发表于 2012-4-1 08:08:47

CAAS 发表于 2012-3-29 08:54 static/image/common/back.gif
烦请高手光顾一下

原因找到、问题解决,是短信中心号码不正确!
望能对光顾者有帮助
页: [1]
查看完整版本: 求助SIM300 ERROR 515 错的解决