引 言:
基于sopc的汽车安全监控系统采用altera公司最新的sopc(可编程片上系统)解决方案——nios处理器软核为核心,配合gps和gsm系统,对汽车的停放和运行状态进行监控。
基于sopc的汽车安全监控系统可广泛应用于汽车的防盗、日常维护和交通事故的处理,为车辆故障提供有效的测试手段。
1 系统硬件组成
设计采用altera公司的sopc开发工具。系统的开发包括硬件和软件两大部分。使用sopc builder生成nios嵌入式处理器,nios嵌入式处理器开发工具允许用户配置一个或多个nios cpu,从标准库中添加外围设备,综合处理自定义系统,与quartus ii设计软件一起编译系统。软件开发的步骤是:利用sopc builder生成的软件文件,用文本编辑器编写汇编语言或c/c++源程序,用gnupro软件开发工具进行程序设计、连编和调试。gnupro将源程序连编(包括汇编/编译和连接)成可执行程序,通过下载电缆对可执行程序进行调试和运行。quartus ii设计软件提供全面有效的设计环境,将设计、综合、布局和验证以及第三方eda工具接口集成在一个无缝的环境中。利用集成在quartus ii 3.0中的sopcbuilder可以创建自己的nios cpu系统。nios是altera公司开发的16/32位嵌入式处理器软核。
校科研基金项目“基于sopc的汽车安全监控系统”资助。 altera公司推出了新一代多种系列fpga,本设计选用低成本的cyclone系列器件ep1c12,其具有12 060个逻辑单元,52个m4k ram块,239 616个ram位和2个锁相环,最大用户i/o引脚249。
系统硬件组成框图由nios系统和外部设备两部分组成,如图1所示。
nios系统包括cpu(nios)、存储器(memory)、定时器(timer)、总线和并/串行接口(key_pio、led_pio、lcd_pio、ccs_pio、uart_0和uart_1)等,并/串行接口分别实现与键盘、led和lcd显示器、汽车中控系统以及gps和gsm系统等外部设备的连接。nios系统设计和设计结果分别如图2和图3所示。
nios系统同键盘、led和lcd显示器、汽车中控系统以及gps系统等外部设备的连接比较简单,gsm系统的连接较为复杂,如图4所示。
整个系统的工作过程是:来自汽车中控系统和gps系统的信息可以显示在led和lcd显示器上,也可以通过gsm系统进行无线发送。用户可以通过键盘对系统进行控制,也可以通过gsm系统对汽车中控系统进行远程无线控制。
2 系统软件组成
系统软件主要由主程序、gps管理子程序和gsm管理子程序等部分组成。
主程序完成系统的初始化,以及键盘、led、lcd显示器和汽车中控系统的操作管理等。
gps管理子程序主要负责从gps系统接收时间和位置信息。
请求gps系统返回ascii时间位置信息的二进制命令为:
@@eqmc
其中,m为0时,输出一次响应信息(查询),m为1~255时,每1~255 s输出一次响应信息(连续);
c为校验和(eqm按字节“异或”);
为回车(十六进制0d);
为换行(十六进制0a);
命令长度为8字节。
命令的响应信息为:
@@eq,mm,dd,yy,hh,mm,ss,dd,mm.mmmm,n,ddd,mm.mmmm,w, shhhhh.h,sss.s,hhh.h,m,t,dd.d,nn,rrrr,aa,ccc
日期:mm是月(01~12),dd是日(01~31),yy是年(99~19)。
世界时间(utc):hh是时(00~23),mm是分(00~59),ss是秒(00~59)。
纬度:dd是度(00~90),mm.mmmm是分(00~59.9999),n是方向(n是北,s是南)。
经度:ddd是度(000~180),mm.mmmm是分(00~59.9999),w是方向(w是西,e是东)。
信息长度是96字节。
对应的管理子程序为:
int eq[8]={@,@,e,q,1,c,0x0d,0x0a};
void gps_txd(int data[], int n) {
volatile int m,sum=0;
for(m=0;m
while(~na_uart_0->np_uartstatus & 0x40);
/等待发送准备好
if(m!=n-3) {
sum^=data[m];/计算校验和
na_uart_0->np_uarttxdata=data[m];/发送数据
}else
na_uart_0->np_uarttxdata=sum; /发送校验和
}
}
int gps,gps_buf[46];/定义全局变量
void gps_rxd(int context) {/接收中断服务程序
gps_buf[gps]=na_uart_0->np_uartrxdata; /接收数据
if(gps_buf[gps++]==q) gps=0; /数据定位
if(gps>46) gps=46;/忽略无用数据
}
gsm管理子程序主要负责gsm系统的数据收发管理。
gsm系统的数据收发以短信形式进行,选择短信格式的at命令为at+cmgf,收发短信的at命令分别为at+cmgr和at+cmgs,对应的管理子程序为:
cmgf[20]={a,t,+,c,m,g,f,=,1,0x0d};/短信格式void gsm_txd(int data[], int n) {
volatile int m;
for(m=0;m
while(~na_uart_1->np_uartstatus & 0x40);
/等待发送准备好na_uart_1->np_uarttxdata=data[m]; /发送数据
}
}
int gsm=2,gsm_buf[18]={a,t};
void gsm_rxd(int context) {
/接收中断服务程序
gsm_buf[gsm]=na_uart_1->np_uartrxdata; /接收数据
if(gsm_buf[gsm]==t) gsm=1;
/数据定位
if(++gsm==18) gsm=2;
}
3 设计调试方法和设计结果
实际试用结果表明:基于sopc的汽车安全监控系统运行正常,定位准确,数据传输可靠,操作管理方便。如果再配备上gis(地理信息系统),整个系统将如虎添翼。
餐饮业食品安全问题频发 安防企业助力餐饮服务食品安全智慧化监管
国内外伺服驱动器电源板设计—整流滤波软启动电路
24V直流继电器的工作原理和使用方法
基于Modicon Quantum系列PLC实现石灰石粉磨控制系统的设计
vr制作教程具体有哪些步骤
NiosII+GPS/GSM实现汽车状态监控系统
嵌入式处理器中cache数据不一致性的解决方法
大家都玩VR,福特汽车也不落后
市场规模超58亿!傲势引领无人机电力巡检新变革
汇聚产学合力二十载,2023英特尔学术大会在南京开幕
新一代iQOO 7新机详细信息曝光
怎么把烧写到RAM程序修改成烧写到FLASH
基于CAN控制器SJA1000实现非智能适配卡的设计
PCB布局的关键:SW节点的电场和磁场?(4)
三星Note7失利,让LG G6捡了便宜,外形大曝光!
实现直线度测量的三种方法
Linux系统中的FBE实现方案和特点
焊接机器人编程入门与编程技巧介绍
开源的嵌入式实时Linux: XtimesLinux
2016年AR和VR市场总投资额高达23亿美元