ARM里面GPRS数据传输

GPRS数据传输流程

GPRS远程无线数据传输主要是通过串口完成对SIM100 GSM/GPRS进行短信的收发操作。当有短信到来时,SIM100 GSM/GPRS将发送“+CMTI: "SM", N”给ARM的串口,其中N为短信编号。如第五条,则N为5,串口收到短信后,处理函数先根据“+CMTI: "SM", 5”的内容解析出收到的短信的ID为5,打包成“AT+CMGR=5”的命令发给GPRS模块,约1~2秒之后该模块会返回一个确认数据“AT+CMGR =5”,再过一段时间,该模块才返回ID号为5的短信,其内容为:“+CMGR:"RECREAD","+8613978319414", "04/07/22,10:54:23+00" #13#10dX# 13#10#13#10 OK”。为了确保控制的合法性,程序先对发送过来的短信号码进行合法性检查,只有与设定的手机号码相符合的短信的内容才作为控制命令处理,而对于其他的短信,都给予屏蔽掉,阻止错误操作。

若通过GPRS模块发送短信,ARM系统先向GPRS模块发送控制命令“AT+CMGS=XXXX” ,GPRS模块收到命令后返回“AT+CMGS=XXXX#13#10>”信息,等待输入要发送的短信内容。如若发送内容为“Your Car Has Stolen!”,系统程序先将此内容通过串口发给GPRS模块,之后再发确认命令“ctl+z”,表示数据发送完毕。GPRS模块收到短信数据和确认命令后,马上向ARM系统返回“AT+CMGS=XXXX#13#10>#13#10 Your Car Has Stolen!#13#10”信息,表示系统发送的数据和命令已经被GPRS模块接收到。然后GPRS模块将短信数据发送给车主手机,大约5秒之后 GPRS模块给系统返回是否发送成功的回馈信息,如果返回“#13#10+CMGS:19#13#10#13#10 OK#13#10”表示成功发送,结束。如果返回“ERROR”表示发送失败,则在下次轮循中系统会继续发送同样内容的短信,直到发送成功为止。

3.2 FLASH的读写技术

由于不同厂商的FLASH存储器在结构和读写操作是有区别的,所以FLASH存储器的烧写、擦除程序一般不具有通用性。系统所用的FLASH是 SST39LV160,可以对任一扇区进行读、写或擦除操作,而不影响其他部分的数据。对FLASH的编程指令只能使二进制位由‘1’变为‘0’,而擦除命令可使‘0’变为‘1’,因此正确的操作顺序必须是先擦除,后编程,否则就会导致FLASH存储器复位,致使操作命令无法完成。当FLASH存储器被擦除后,读出的内容全是0XFF。

对SST39LV160进行烧写操作需要遵循几个固定的步骤。每个步骤是首先向FLASH 存储器的特定寄存器写入地址和数据命令,然后由其内部的编程或擦除算法自动完成编程或擦除操作。如擦除操作,第一步程序向地址1(0X5555)写数据1 (0XAAAA),第二步向地址2(0X2AAA)写数据2(0X5555),第三步再向地址1(0X5555)写数据3(0X8080),这样完成了擦除扇区的第一阶段,接着的第二阶段与第一阶段几乎一样,只不过最后一次是向地址0X10000写数据0X3030,然后程序再用一个循环,来检测该扇区的内容是否变成了0XFF。如果该扇区的内容变成了0XFF,那么说明擦除扇区的操作已经完成,可以进行下一步的操作,写数据到FLASH的指定地址了。写操作和擦除类似,也是遵循几个固定的步骤,其具体步骤应参考对应FLASH芯片的技术资料。写操作执行后应对数据进行检查,如果成功写入则进行下一字节的写入,否则继续等待,如果超时,则退出。由于无论是编程或擦除都需要一定的时间,程序应根据其内部的操作检测机制,判断操作是否完成或操作是否正确,以确定是否执行下一步操作。

在我们的系统中,系统程序利用FLASH第17号扇区来存放车主的手机号码,从首地址开始存放。通常对该扇区的操作程序是:先把该扇区的所有内容读到SDRAM中(共4K),之后将要写的电话号码写入到17扇区的首地址后的11个单元中,因为第17号扇区我们并没有全部用到,所以可以省去将4K内容读到SDRAM的步骤,只需要直接向17号扇区的首地址0x10000开始,写入车主手机号码就可以了。  

你可能感兴趣的:(编程,算法,Flash,存储,手机,电话)