⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 msp430_gprs.c

📁 msp430 gsm gprs c 例子程序
💻 C
📖 第 1 页 / 共 3 页
字号:
/*  主程序修改说明记录  
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
2005年6月20日:  
程序文件说明:  
    根据新制作的PCB图(GPS-M22:V2.4)版本的原理图,此程序为对应的系统文件  
  
程序版本号:V2.32  
  
程序功能说明:  
    1,增加外部的SRAM,用于接收外接部件的大量数据的传输(增加W24L011AJ(128K),实际使用64K),锁存器74HC573。  
    2,串口的分配:    串口0     M22  
                    串口1     外接部件(调试串口)  
                    串口2     GPS  
                    串口3     车载电话  
                    串口4     显示终端  
    3,主要实现功能:  
        (1),与行使记录仪之间的交互通讯  
        (2),  
        (3),  
        (4),  
        (5),  
  
详细说明与行使记录仪之间的通讯流程:  
  
主控向记录仪发送的数据有:   1,每一秒种发送8个字节的经,纬度,(用于记录仪存储和运算)(记录仪不用给出ECHO)  
                            2,每隔1个小时发送一个查询当前记录仪时间,如果判断记录仪的时间和GPS的时间误差超过1秒,此时记录仪显示车辆速度为0,则发送矫正时间参数)  
                               记录仪需要给出ECHO  
                            3,主控接收到中心设置超速的限制值的参数设置(转发给记录仪)(记录仪需要给出ECHO)  
                            4,主控接收到中心设置间隔距离的限制值的参数设置(转发给记录仪)(记录仪需要给出ECHO)  
                            5,主控接收到中心设置疲劳驾驶的时间限制值的参数设置(转发给记录仪)(记录仪需要给出ECHO)  
  
记录仪表向主控发送的数据有:1,记录仪接收到主控的查询当前时间命令,则返回当前记录仪的时间和当前速度的值  
                            2,如果车辆速度超过设置的报警警戒值,则记录仪上发超速报警的信息,每间隔2秒发送一次,直至主控收到后返回响应,则停止发送超速报警信息  
                               如果记录仪在超速的状态下,判断不处于超速,则主动发送停止超速的的信息,直至主控收到后返回响应  
                            3,如果属于疲劳驾驶的状态下,记录仪应该向主控发送一个信息  
                            4,车辆行使状态下,根据数据上报的类型(按时间上报数据点,按距离上报数据点...)如果属于按距离上报数据点,则如果记录仪表每判断到一个间隔  
                               距离,则需要向主控发送一个信息  
  
主控查询大量记录仪数据的通讯形式:中心下发一个查询记录仪大量数据的下行命令,主控转发给记录仪,记录仪则分批读取数据发送给主控  
                                  主控先负责接收数据,每接收一包数据,先判断是否属于部分数据包,如果是,则将有效数据提取出来,依次存储在外部的扩展SRAM里。然后给出一个  
                                  接收到此数据包的响应,然后等待接收记录仪的下一个数据包。直至接收到记录仪发送过来的此数据全部转发完成的信息,则主控开始进行外部SRAM的数据  
                                  转发(TCP方式)]  
  
                                  所有的中心的查询命令和设置命令,主控均不做命令字的检验,,主控接收记录仪的所有命令的回应包括设置的响应,或者数据返回  
  
2005年8月30日  
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
*/   
/********************************************************\  
系统程序结构的说明:  
1,FLASH的分配  
    扇区0-----暂停使用  
    扇区1,2---作为存储目标号码,IP地址和端口号(双备份)  
    扇区3,4---作为电话号码的存储  
    扇区5,6---作为上传数据间隔,开关量等等的存储(双备份)  
  
2,串口的分配  
                    串口0     M22  
                    串口1     外接部件(调试串口)  
                    串口2     GPS  
                    串口3     车载电话  
                    串口4     显示终端  
3,  SRAM的分配  
    1,串行存储器的两个264byte的SRAM的分配buffer1,buffer2,  
        buffer1的分配:与原来的程序保持一致(不变),具体细节见相关地方  
        buffer2的使用用来存储读取的相关页的数据  
  
    2,外部64K的SRAM的分配  
       0-----60K        作为接收外部数据(以行使记录仪为例)大量数据的接收(在串口1的中断子程序中处理接收)  
       61K---64K        作为存储记录仪需要向显示终端发送数据的缓冲存储(暂时这么考虑)  
  
    3,MSP430F149的内部SRAM的分配  
  
4,TCP数据的发送方式和类别  
    根据以前的TCP数据的方式发送方式,现在将发送的数据分位如下几类:  
    A,  存储在buffer1相关区域的上行数据(包括手柄,和显示终端需要上行的相关信息,和对一些下行命令的响应信息)  
    B, 存储在周期数据缓冲区gCircle_Buffer[]中有需要发送的数据(主要存储的是周期发送的报警信息和行车轨迹信息)  
    C, TCP在线状态下的握手信息数据的定时发送主要以发FF 0D数据  
    D, 发送外接部件的数据(以存储在外部的SRAM的数据区域)  
  
5,显示终端和手柄终端的接收和发送缓冲区的说明  
    手柄和显示屏与主控系统通讯均是采用的模拟串口3,和4。属于半双工的形式,故在向终端发送数据的时候需要判断是否在接收数据。  
  
    接收手柄的数据缓冲:gHandle_Buffer[30]  
    向手柄的发送数据的缓冲:保持与原来的兼容,是在需要向手柄发送数据的时候才组织数据发送(以节省SRAM的空间)  
  
    接收显示屏数据缓冲:gDisp_Buffer_R[50]  
    向显示屏的发送数据的缓冲:gDisp_Buffer[256]  
  
6,与外接部件的数据通讯的接收和发送缓冲说明(以记录仪为例)  
    接收外接部件的数据缓冲:外部SRAM(0---64K)  
    向外接部件发送的数据缓冲:  
  
修改记录:  
  
2005年8月23日:  
  
        ACC关闭后20分钟,TCP下线,将按30分钟的方式传送数据。1个小时关闭模块  
        ACC关闭后20分钟 ,如果ACC再次开启,则重新启动程序  
  
        行车轨迹只可以最少10分钟的SMS的补偿,报警信息可以允许GSM方式传送  
  
        手柄通讯方式的改变  
  
  
        重点监控制:中心下行监控命令,则改变工作状态为监控方式,则上传数据的不受ACC开和关闭的控制  
                    并且,不管时间间隔多大,均采用TCP常连线的方式。重点监控的方式是数传方式的改变  
                    但此状态方式并不存储在FLASH中,同时,即使ACC关闭,在开启的时候,也不允许重新  
                    启动程序。直到重点监控结束。数传的方式改变。  
  
2005年9月1日:  
  
        增加通过手柄接口设置参数的部分,APN,电话号码本  
        调试一些线路报警的算法  
  
2005年9月5日:  
        线路偏离的算法正确验证  
        增加如果ACC开启状态下,持续12个小时,则会将MCU重新启动一次。以恢复设备状态  
        此功能是为了防止在实际接线中,施工时候直接将ACC接在常电上的一个自恢复保护措施  
  
  
2005年9月6日:  
        完善线路偏离报警的算法(但线路数据通过中心并没完成设置)  
        通过手柄端口设置电话号码完成  
        通过手柄端口参数设置完善(增加了APN的设置,按距离上传的距离值设置,)  
2005年9月8日:  
  
        通过手柄端口设置显示终端的短信预置完成  
  
2005年9月14日:  
        根据要求修改上报数据的补偿方式(短消息)  
        1,被劫报警的上报方式的修改  
2005年9月22日:实际跑车进行线路报警的完善  
  
2005年10月9日:  
    1,针对电话方面的恢复处理  
    2,针对疲劳报警或者预警的误报处理  
  
    根据在现场实际应用中发现的情况,以后需要完善的几点:  
    A;因为手柄和显示终端是半双工通讯,并且均为模拟串口的方式,在需要将232的IC改换为3232的同时,  
        为了增加通讯的可靠性,则需要针对部分指令的响应处理.  
2005年10月16日:  
    1,针对模拟串口的发送和接收时候,需要停止某些中断  
  
    2,增加对MSP430内部的两个信息存储器的利用。分别为128个字节,作为存储备份参数利用  
        信息存储器A,备份扇区1和扇区2的前128字节的数据  
        信息存储器B,备份扇区3和扇区4的前128字节的数据  
  
        如果开机检测扇区1和扇区2,均是校验核不正确的扇区数据,则需要将信息存储器A中的前128个字节读出,并重新计算校验核  
        存储在扇区1或者扇区2中。  
  
        同样道理,信息存储器B是对应的扇区3和扇区4  
  
    3,每次更新或者从新计算扇区1和2的时候需要及时的更新信息存储器A  
        每次更新或者重新计算扇区3和4的时候需要及时的更新信息存储器B:  
  
  
        暂时未完成测试  
  
2005年10月17日:  
OK    **1,为了减少串行FLASH的操作(包括串行FLASH中的SRAM的操作,则将以前存储在buffer1中的数据转移到外部的SRAM中)  
        3,根据硬件PCB的改进,增加对外部串行FLASH的WP管脚的控制(预防对FLASH的操作损坏)  
        4,针对场强信号的发送,改为每间隔一定时间发送场强信号,而不是在查询CSQ后才发送场强指令OK  
        5,如果M22处于电话状态下,则需要每间隔一定时间查询CLCC指令   OK  
  
2005年10月19日:  
        1,增加进行测试外部SRAM的指令()完成测试OK  
        2,增加主控主动挂机指令的接收手柄的响应,如果2秒内未接收到手柄的挂机指令响应,则重复发送  
            重复5次,则丢弃此包(还未调试)  
        3,将对手柄需要发送的的数据存储在外部SRAM中。改变原来向手柄发送指令随时发送的结构模式  
            取消所有对buffer1的操作  
        14,因为每次在发送数据和登陆TCP前,均有个验证中心号码和目标号码等参数的有效性,需要是对外部SRAM进行操作  
            频繁的操作可能引起外部FLASH内容的丢失,则这里改为每30分钟进行所有的验证,如果严整正确,则设置  
            一个标志,如果失败,则立刻进行数据的重装工作  
  
2005年11月3日  
        1,根据在MSP430内部的两个信息扇区,取消对信息扇区数据的校验核的计算,取代的是最后一个字节存储0XAA,  
            只表示此信息扇区存储过数据。如果在检验外部FLASH的两个扇区的数据均不正确的情况下  
            则需要将两个信息扇区的数据覆盖到外部的FLASH中  
  
2005年11月8日:  
        1,增加定位查询的可靠信,如果在接收到一个短消息(属于定位查询),并且,设备工作在  
            GSM的工作方式下,并且目标号码属于无效的状态,则需要暂时提取这个短消息号码中的  
            号码,然后作为暂时的目标号码存储起来,在发送定位数据的时候则以此目标号码为准。  
  
2005年11月16日:  
        1,取消每次系统程序上电后,查询记录仪驾驶员代码的操作  
  
2005年11月19日  
        1,精简程序,减少AD转换判断部分,增加对FLASH的可靠操作,尤其是对电话号码存储部分的操作  
  
  
2005年11月21日  
        1,完善参数设置方面的尤其是APN方面的处理,增加对buffer2的处理机制  
  
2005年11月23日  
        1,针对山东市场的一体机,默认电话始终处于开启状态  
  
2005年12月1日:  
        1,针对在测试过程中,出现的模拟串口失效的问题,则增加了个几个恢复(重新对TA定时器进行初始化)  
2005年12月3日:  
        1,针对如果外部的晶振如果暂时的失效,则会严重影响三个模拟串口的接收,则采用系统程序重新启来恢复  
2005年12月4日:  
        1,针对外部晶振XT2的暂时失效,则增加对外部晶振XT2的失效中断处理程序  
  
  
  
2005年12月8日:  
        在前面版本的一体机的程序结构下,需要进行部分程序结构的修改,使得符合一体机的概念,就是将GPS  
        工作部分和记录仪的工作部分能够在任何一个还没工作正常下,双方能互相不干扰和影响,即GSM模块在  
        进行初始化或者正在初始化的过程中,并不影响记录仪的工作和显示屏的工作  
  
  
2005年12月27日:  
        根据以前存在接收记录仪数据的方式有可能判断不到正确的数据包,现在将接收记录仪数据的方式进行改进  
\********************************************************/   
   
   
/********************************************************\  
*   文件名:  GSM_430.C  
*   创建时间:2004年12月7日  
*   创建人:          
*   版本号:  1.00  
*   功能:   系统主程序框架  
*   文件属性:公共文件  
*   修改历史:(每条详述)  
\********************************************************/   
   
#include <MSP430X14X.H>    
#include <MATH.H>    
#include "TA_Uart.h"    
#include "SPI45DB041.h"    
#include "W_Protocol.h"    
#include "Handle_Protocol.h"    
#include "Uart01.h"    
#include "M22_AT.h"    
#include "Define_Bit.h"    
#include "D_Buffer.h"    
#include "Other_Define.h"    
#include "General.h"    
#include "Main_Init.h"    
#include "Sub_C.h"    
#include "Check_GSM.h"    
#include "Do_Reset.h"    
#include "Do_M22.h"    
#include "Do_Handle.h"    
#include "Do_GPS.h"    
#include "Do_Disp.h"    
#include "Do_Other.h"    
#include "Do_SRAM.h"    
#include "Do_Record.h"    
#include "Record_Protocol.h"    
#include "Msp430_Flash.h"    
/*  
#include "Disp_Protocol.h"  
*/   
//#define Debug_GSM_COM1    
   
unsigned int i;   
unsigned int  Z_Timer=0;   
unsigned int  Debug_Timer=0;   
/********************************************************\  
*   函数名:main.c  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -