《嵌入式系统综合实验》报告学号:姓名:Shanghai University of Engineering Science School of Electronic and Electrical Engineering基于STM32的GPS信息显示系统——嵌入式系统综合实验报告班级:0211112 姓名:褚建勤学号:021111228班级:0211112 姓名:于心忆学号:021111216班级:0211112 姓名:乐浩奎学号:021111232一、产品设计要求(产品规格描述)1 、嵌入式产品名称GPS信息显示系统2 、嵌入式产品目的在学校的生活中,你经常可能需要联系不是同一间宿舍的同学,但是你不能确定他现在在什么地方,这时候全球定位系统(GPS)就可以发挥作用了,但是传统的GPS系统只能提供经纬度信息,不能直观的显示你想要找到人在何处,我们的系统就在传统的GPS的基础上添加了对应位置显示的功能,方便你更方便更快捷的找到你想找的同学3 、嵌入式产品功能使用GPS输入用户位置信息GPS将相关经纬度信息反馈给主处理器主处理器处理相关位置信息并将信息转换为对应位置在LCD上显示出来在LCD上输出用户状态信息4 、嵌入式产品的输入和输出输入设备:GPS系统输出设备:LCD二、产品方案设计(产品设计方案)121 )处理器选择本系统选用基于ARMCortex-M3内核的STM32F103RB嵌入式微控制器作为处理器。
①选用原因A 技术因素工作频率: 最高72MHz。
内部和外部存储器: 128K字节的闪存程序存储器,用于存放程序及数据;多达20K字节的内置SRAM,CPU能以0等待周期访问(读/写)。
定时器和中断:包含1个高级控制定时器、3个普通定时器,以及2个看门狗定时器和1个系统嘀嗒定时器;内置嵌套的向量式中断控制器,能够处理多达43个可屏蔽中断通道和16个优先级。
IO接口:通用输入输出接口(GPIO)。
每个GPIO管脚都可以由软件配置成输出(推拉或开路)、输入(带或不带上拉或下拉)或其它的外设功能口。
多数GPIO管脚都与数字或模拟的外设共用。
所有的GPIO管脚都有大电流通过能力。
在需要的情况下,I/O管脚的外设功能可以通过一个特定的操作锁定,以避免意外的写入I/O寄存器。
在APB2上的I/O脚可达18MHz 的翻转速度。
通用同步/异步接受发送器(USART):USART1接口通信速率可达4.5兆位/秒,其他接口的通信速率可达2.25兆位/秒。
USART接口具有硬件的CTS和RTS信号管理、支持IrDA SIR ENDEC传输编解码、兼容ISO7816的智能卡并提供LIN主/从功能。
所有USART接口都可以使用DMA操作。
环境要求:-40°C至+85°C温度范围。
B 非技术因素开发及调试工具:Keil MDK参考资料:STM32F103RBT6官方资料操作系统:Windows XP / Windows 7 / Windows 8内部AHB时钟频率:72 MHz。
内部APB1时钟频率:36 MHz。
内部APB2时钟频率:72 MHz。
标准工作电压VDD:2.0V~3.6V。
模拟部分工作电压(未使用ADC):必须与VDD相同,最大3.6V。
模拟部分工作电压(使用ADC):必须与VDD相同,2.4V~3.6V。
备份部分工作电压VBAT:1.8V~3.6V。
电流:睡眠时与工作时差异较大,还与打开的外设多少有关,范围大约为4mA~50mA。
存储温度:-65至+150度。
工作温度:-40至+85度。
3 、产品软件设计1 )操作系统选择无操作系统2 )其他重要器件选择LCD模块:功能:主要特性:GPS模块:该GPS模块选用的是型号为ATK-NEO-M6_V12的GPS模块,是ALIENTEK生产的一款高性能GPS模块,模块核心采用UBLOX公司的NEO-M^模组,具有50个通道,追踪灵敏度高达-161dBm,测量输出频率最高可达5HZ。
功能:实现当前系统位置的定位主要特性:1,模块采用UBLOX NEO-M6模组,体积小,性能优异。
2,模组自带陶瓷天线及MAXIM公司20,5dB高增益LNA芯片,搜星能力强。
3,模组可通过串口进行各种参数设置,并可以保存在EEPROM,使用方便。
4,模组自带IPX接口,可以连接各种有源天线,适应能力强。
5模组兼容3.3V/5.5V电平,方便连接各种单片机系统。
6,模组自带可充电后备电源,可以掉电保持星历①数据注①:在主电源断电后,后备电池可以维持半小时左右的GPS星历数据的保存,以支持温启动或者热启动,从而实现快速定位。
GPS模块图3 )开发环境选择本系统选用KEIL 作为开发环境。
KeiL uVision4完美支持Cortex-M、Cortex-R4、ARM7和ARM9系列器件;拥有业行领先的ARM C/C++编译工具链;提供带标准驱动类的USB 设备和USB 主机栈;为带图形用户接口的嵌入式系统提供了完善的GUI库支持;ULINKpro可实时分析运行中的应用程序,且能记录Cortex-M指令的每一次执行;执行分析工具和性能分析器可使程序得到最优化等特征。
4 )开发语言选择产品软件开发语言:C语言C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。
它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,具体应用比如单片机以及嵌入式系统开发。
主要优点如下:简洁紧凑、灵活方便;运算符丰富;数据类型丰富;表达方式灵活实用;允许直接访问物理地址,对硬件进行操作;生成目标代码质量高,程序执行效率高;可移植性好;表达力强。
由于大一刚进校时就接触C语言,所以C语言相对我们而言比较熟悉,在编写中更加容易。
4 、项目组成员分工5 、产品开发计划时间任务计划1-10 制定嵌入式系统综合实验计划。
11-15 查阅相关书籍,到官方网站下载GPS使用说明。
15-30 了解熟悉AT指令、串口通信的知识。
31-45 了解熟悉GPS相关知识46-60 完成GPS初始化及基础设置61-75 添加对应位置显示功能76-90 撰写嵌入式系统综合实验报告6 、产品成本分析1 )硬件成本清单产品中硬件材料(如元器件芯片、开发板、仿真器、编程器和测量仪器等)及开发费用★2 )软件成本清单产品中所用软件(如嵌入式开发环境、嵌入式操作系统、GUI支持包和TCPIP协议栈等)费用★要求供应商必须是专业公司非淘宝个人用户并能开立正规的产品发票3 )人工成本清单人工成本= 50小时*10元/小时*3人=1500元4 )其他成本无本5 )产品总成本及分析产品总成本=硬件成本+软件成本+人工成本+其他成本=138+三、产品实现1 、硬件实现(必须)嵌入式处理器的最小系统图GPS模块原理图嵌入式处理器与GPS模块间的具体连接连线图硬件连接:STM32开发板-->ATK-NEO-6M GPS模块PA9 -->RXDPA10-->TXDGND -->GND5V/3.3V-->VCC2 、软件实现(必须)软件编程中设计思路(main主程序流程图)GPS模块主要函数:u8 NMEA_Comma_Pos(u8 *buf,u8 cx);功能:分析GPS接收到的数据,采用逗号取值法参数:数据缓存区数据首地址、逗号位置标号:返回值:两个逗号之间的数据int NMEA_Str2num(u8 *buf,u8*dx);功能:把获取到的字符串转换为数字参数:数据缓存区数据首地址、小数点位置返回值:转换后的数值工能:用来获取可见卫星的总数、卫星编号、卫星仰角、卫星方位角、信噪比等信息参数:结构体gpsx的首地址、数据缓存区首地址返回值:无.$GPGSV语句的基本格式如下:$GPGSV,(1),(2),(3),(4),(5),(6),(7),...,(4),(5),(6),(7)*hh(CR)(LF)(1) GSV语句总数(2)本句GSV的编号(3) 可见卫星总数(00~12,前面的0也将被传输)(4)卫星编号(01~32,前面的0 也将被传输)(5)卫星仰角(00~90度,前面的0 也将被传输)(6)卫星方位角(000~359度,前面的0也将被传输)(7)信噪比(00~99dB,没有跟踪到卫星时为空)void NMEA_GPGGA_Analysis(nmea_msg *gpsx,u8 *buf);功能:用来获取UTC时间、经纬度、海拔高度等信息参数:结构体gpsx的首地址、数据缓存区首地址返回值:无$GPGGA的语句格式如下:$GPGGA, $GPGGA, $GPGGA,$GPGGA,(1),(2),(3),(4),(5),(6),(7),(8),(9),M, (10 ),M,,M, (11 ),(12 )*hh (CR )( LF )(1) UTC时间,格式hhmmss.ss(2) 纬度ddmm.mmmmm 度分格式);(3) 纬度半球N或S(北纬或南);(4) 经度,格式为dddmm.mmm 度分格式;(5) 经度半球E或W(东经或西);(6) GPSGPS 状态,0= 未定位,1= 非差分定位, 2= 差分定位;(7) 正在使用的于定位卫星数量(00~12)(8) HDOP 水平精确度因子(0.5~99.9 )(9) 海拔高度(-9999.9 到9999.9米)(10 ) 大地水准面高度(-9999.9 到9999.9 米)(11 ) 差分时间(从最近一次接收到差分信号开始的秒数,非定位此项为空)(12 ) 差分参考基站标号(0000 到1023 ,首位0也将传送,非差分定位此项为空void NMEA_GPGSA_Analysis(nmea_msg *gpsx,u8 *buf);功能:用来获得卫星号、水平/垂直因子等信息参数:结构体gpsx的首地址、数据缓存区首地址返回值:无$GPGSA的语句格式如下:$GPGSA,(1),(2),(3),(3),(3),(3),(3),(3),(3),(3),(3),(3),(3),(3),(4),(5),(6)*hh(CR)(LF)(1) 模式,M=手动,A=自动(2) 定位类型,1=为定位,2=2D定位,3=3D定位(3)正在用于定位的卫星号(00~32)(4)PDOP综合位置精度因子(0.5~99.9)(5)HDOP水平精度因子(0.5~99.9)(6)VDOP垂直精度因子(0.5~99.9)功能:获取UTC时间、UTC日期、地面速度等信息参数:结构体gpsx的首地址、数据缓存区首地址返回值:无$GP $GPRMC语句的基本格式如下:$GPRMC,(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12)*(CR)(LF)(1) (1) (1) UTC时间hhmmsshhmmss(时分秒)(2) A= 有效定位,V= 无效定位无效定(3) ddmm.mmm (度分)(度分)(4) 纬度半球N(北半球)或S(南半球)(5) 经度dddmm.mm(度分(度分)(6)经度半球E(东经)或W(西经)(7)地面速率000.0~999.9 节)(8) 地面航向(000.0~359.9 度,以真北方为参考基准))(9) UTC日期,日期,ddmmyyddmmyy (日月年)(10)磁偏角(000.0~180.0 度,前导位数不足则补0)(11)磁偏角方向,E(东)或W(西)(12) 模式指示(A= 自主定位D= 差分E= 估算,N= 数据无效)void NMEA_GPVTG_Analysis(nmea_msg *gpsx,u8 *buf);功能:获取地面航向、地面速率等信息参数:结构体gpsx的首地址、数据缓存区首地址返回值:无格式如下:$GPVTG,(1),T,(2),M,(3),N,(4),K, (5)*hh(CR)(LF)(1)以真北为参考基准的地面航向(000~359度,前面的0 也将被传输)(2)以磁北为参考基准的地面航向(000~359度,前面的0 也将被传输)(3)地面速率(000.0~999.9节,前面的0 也将被传输)(4)地面速率(0000.0~1851.8公里/小时,前面的0也将被传输)(5)模式指示(A=自主定位,D=差分,E= 估算,N=数据无效)四、用户使用说明该产品是一个基于STM32的校园定位系统,在你接通电源、按下电源后系统能够精确的显示出你当前的坐标、时间、以及海拔等信息。