基于dPMR标准的数字对讲机软件系统设计毕业设计Word文件下载.docx
《基于dPMR标准的数字对讲机软件系统设计毕业设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于dPMR标准的数字对讲机软件系统设计毕业设计Word文件下载.docx(36页珍藏版)》请在冰点文库上搜索。
文档描述了设备提供的两层功能(服务和设施)。
为了互操作性,定义的一个基本级别的服务和设施(ISF),简化的模式,所有的无线电设备无需任何设置或编程即可互相操作。
同时也定义了一个高级服务和设施级别(CSF)通过重新编程能够提供更高级的功能。
如果制造商宣布符合CSF对讲机“标准用户接口”,则人机接口(MMI)也必须符合附录A的相关要求。
(见相关标准文件)
3.2基于dPMR的数字对讲机开发的三个阶段
数字无线对讲机开发实行分阶段进行,第一阶段采用现成ASIC芯片实现基带信号处理,协议实现;
第二阶段采用4FSK的Modem芯片来做基带信号处理,由微处理器来实现数字对讲机协议及呼叫控制;
第三阶段将会开发完整的算法,包括4FSK的调整解调算法,数字对讲机协议及呼叫控制,语音编解码算法等。
目前在开发的是第一阶段和第二阶段产品,其中ASIC芯片采用CMX7141芯片,芯片内部包括4FSK的调制解调功能,dPMR的协议,语音编解码器接口控制等功能,语音编解码器采用CMX618芯片;
ASIC芯片可以换成CMX7041芯片,这是一个4FSK的调制解调器,数字对讲机的协议自主开发,在微处理器上运行。
射频部分电路采用分离元器件设计。
第一阶段方案(基于CMX7141+CMX618):
第二阶段方案:
4FSKModem+ARM版
第三阶段方案:
DSP版
C-BusI/F
对讲机外观、界面设计和人机操作
4.1对讲机外观
对讲机外观图及各功能键简单描述。
(参考HYT资料)
表一
﹡PTT键(发射按键)
发射与接收的转换键;
发射时,按此键,并对着麦克风讲话;
接收时,松开此键。
﹡SK1键
SK1键,可编程按键。
﹡SK2键
SK2键,可编程按键。
﹡LCD显示屏
用于显示对讲机的各种工作状态。
﹡功能键盘
l退出键:
用于返回上一级菜单;
l上移键
l下移键
l菜单/选择确认键:
用于激活菜单模式,进入菜单后用此键选择菜单内的各项。
图一
4.2界面设计
Ø
屏幕显示
图二
表二
LED指示灯
灯指示状态及提示音如下:
对讲机状态LED指示
发射红灯亮
接收绿灯亮
低电压报警红灯闪
发起呼叫后橙灯亮
接收呼叫后橙灯慢闪
扫描指示绿灯闪
键盘
图三
表二
表三
4.3人机界面操作描述(以后逐步添加完善)--细化和完善(胡红钱)
通话功能人机接口(按键输入定义,界面)
根据本版数字对讲机的LCD配置,可以显示128*32个点,其界面定义如下:
图
从上到下:
前十一行:
界面提示图标
第十二行:
空行
第十三行、第十四行:
文本显示框
第十五行到第三十行:
十六行的文本显示区(两行文本)
第三十一、三十二行:
从左到右:
共有九个显示图标位置,全部位于前十一行显示,每个图标占用12列。
本版对讲机共有17种状态图表,显示区域最多可以显示9个图标,部分图标根据优先级共享区域显示,其定义如下图。
表
本版对讲机共有两行的文本显示区域,位于第15行~30行,第3列~126列,每行可以显示15个标准ASCII字符,两行可以显示30个字符。
各种状态下的各个不同状态界面(等消息定义完成后再定)
短信功能人机接口(输入法,界面)
功能配置界面(通过上位机软件或人机接口配置)
电话功能(主叫呼叫、接听来电、通话状态、通话结束)
主叫呼叫(相关操作和显示定义)
在空闲(Idle)界面,用户可以通过按数字键(0-9)来拨号(拨号规则可以参见协议附录),系统显示正在呼叫界面。
系统显示呼叫界面并向网络发送呼叫信号,等待连接成功消息,接到连接成功消息后呼叫界面关闭,系统进入通话状态,显示通话界面。
在通话界面启动后开始对通话进行计时,双方通话开始。
系统在呼叫过程中下列按键处于休眠状态的,OK键、左软键、右软键、拨号键、上下选择键,系统不响应按键事件。
在呼叫过程中按取消键系统停止呼叫并返回到空闲(Idle)状态。
接听来电(相关操作和显示定义)
对讲机接收到从对方电台发来的来电消息后,提取主叫的电话号码ID。
显示来电信息,来电界面为主叫的号码。
在LCD屏幕中央弹出一个提示框,提示框包括主叫姓名或电话号码?
。
系统在来电状态下播放来电铃声,等待用户接听。
如果按接听键,按挂机键挂断,在接听过程中按挂断键系统返回到空闲(Idle)状态。
通话保持(相关操作和显示定义)
系统处于通话状态后,显示通话中界面。
在通话状态中按键处于休眠状态,按OK键、左软键、右软键、拨号键、上下选择键,系统不响应按键事件。
用户可以按挂断键系统进入空闲(idle)状态。
通话结束(相关操作和显示定义)
系统接收到通话结束拆线命令后,挂断电话显示已经挂机、关闭通话界面、进入空闲(Idle)界面。
短信功能:
(相关操作和显示定义)
短信发送流程如果对讲机B收到A所发短信建立请求,对讲机B向A发送短信ACK,发送信令后B等待短信接收。
移动台A收到短信ACK后,进行短信发送。
对讲机A在时限范围内未收到对方ACK,提示短信发送失败,返回待机状念。
收到短信后,提示短信铃声,屏幕显示来电ID号,通过确认键,上下键翻页阅读。
短信长度,行数,存储条数,存储地址(需要定义)。
发送短信,先输入短信,点击确认键发送,成功显示发送成功,没有成功显示发送失败。
短信暂时不显示中文。
发送完成后存入flash地址中。
电话本
电话本存储呼叫、通话记录
电话本软件设计中应实现的功能包括:
1.新增记录
2.查看/编辑记录
3.删除单条记录
4.删除全部记录
配置功能可以通过上位机软件实现全部功能,也可在人机界面中实现部分功能。
扫描,静噪调整,电量指示,低电量报警,繁忙锁定,发射限时,省电模式,步进频率,功率选择,可编程按键...(详见需求分析)通过上位机软件实现。
扫描:
顺序信道扫描,优先信道扫描,逐个跳转到设定的信道停留一定时间,检测issi信号强度。
静噪调整:
设定issi的阈值
电量指示:
通过A/D读取,显示
开发环境
硬件平台和开发装置
DX32实验板(ARM处理器STM32F103)
J-LINKv7
软件开发环境
C语言
RealviewMDK3.80
uC/OS
uC/GUI
其它?
软件设计
系统架构
6.1.1系统框图
系统软件大致分为操作系统和驱动、呼叫控制和状态机、监控和调试、人机界面等。
6.1.2任务及其信息交互(孙陟)
包图:
Biz模块:
包括主要的业务逻辑
Display模块:
显示UI抽象层,包含UI相关的逻辑,并调用具体的LCD驱动接口
UserInput模块:
用户输入抽象层,包含用户输入相关逻辑,并接受输入的键值
NetInput模块:
网络抽象层,接受来自网络的数据进入。
NetOutput模块:
网络抽象层,发送数据到网络,与底层模块(如CMX)交互
Storage模块:
存储数据到FLASH
RF模块:
负责与RF接口交互
任务组件交互图:
系统初始化后,主要起3个任务:
Storetask:
存储任务,负责把config内存数据保存到FLASH.
NetSendertask:
负责发送网络数据,可能有阻塞延时操作
Maintask:
主任务,负责监控并处理消息队列(msgqueue)数据,然后经过逻辑处理,分别刷新UI,通过网络层发送数据,更新状态,更新config并通知存储任务保存数据到FLASH。
用户的输入(KEY,PTT),网络接收数据(CMX)通过事件(中断)放入maintask的消息队列
类图:
Biz:
业务逻辑主模块。
State:
存储当前状态
Session:
存储与某一会话相关的数据,如状态,主叫号码,被叫号码,等
SessionMgr:
负责管理各个session。
NetInput:
通知Biz有来自网络层(如CMX)的信令到来。
NetData:
负责解析收到的网络数据,打包需要发送的数据
NetOutput:
负责发送数据,依赖于具体的底层模块,如cmx,dpmr,socket.
Display:
负责UI的逻辑。
LCD:
在LCD上显示UI的具体实现。
UserInput:
通知Biz有来自用户的输入(如按键,PTT)到来。
UserInputData:
负责解析收到的用户输入的数据
RFInput:
通知Biz有来自RF的信号到来
RFOutput:
写数据到RF
DataCache:
内部数据,包括config
Storge:
负责存储数据到FLASH
接口定义
6.2.1驱动接口的定义
射频控制部分
(1)voidRFpowercontrl(void)
功能:
D/A设置对讲机发射功率具体参数等待测量结果
(2)voidRxfilter(void)
D/A调整调谐滤波器的中心频率具体参数等待测量结果
(3)issi(void)
A/D信号强度检测返回结果,指示电压的转换值
(4)voidSetFirstLO(u32LocalOsc)
设置第一本振
(5)voidSetSecondLO(void)
设置第二本振(固定45.1M)
(6)voidTxfrequency(u32freq)
功能:
设置发射频率设置
(7)voidRFcontrlinit(void)
射频部分初始化,初始化射频模块设置接收状态,接收频率
设备驱动
(1)Lcd相关驱动参见液晶生产商给的资料
voidlcdcommand(ucharcom)写命令\参数函数
voidlcdDataWrite(uchardata)写数据函数
voidinitialize(void)初始化LCD
voidsetstartline(ucharstartline)设置显示位置
voidclearscr()清屏
voidDisplayPic(ucharpage,ucharcolumn,uchar*picku)显示子函数
(2)flash存储器相关驱动参见开发板中资料
voidFLASH_SPI_Config(void)初始化串行FLASH的SPI接口
SPIByte(u8byte)读写SPI总线
voidSSTCmd1(u8cmd)写一个SST命令/写一个命令后一个数据/写一个命令后再写3个数据
SSTCmdb1b(u8cmd)
写一个SST命令,返回1字节数据/写1个命令字,3个地址字,返回多个字节
voidSST25WREN(void)允许写功能
voidSST25WRDI(void)检测忙
voidSST25WPEN(void)允许软件写保护
voidSST25WriteEn(void)先消除保护位,再允许写位
u16SST25ReadID(void)读取SST的ID
voidSST25ChipErase(void)刷除CHIP
voidSST25SectorErase(u32addr)刷扇区
voidSST25ByteProgram(u32addr,u8byte)写一个字节
voidSST25Write(u32addr,u8*p_data,u32no)写多个字节
voidSST25Read(u32addr,u8*p_data,u32no)高速读对于后续带5的芯片,可调用此函数读
voidSST25ReadL(u32addr,u8*p_data,u32no)低速读
(3)AD(void)
A/D信号强度检测返回结果电压值的转换值
(4)READIO(void)
读取当前信道编号返回结果当前信道号
(5)矩阵键盘相关驱动
voidCountingKey(void)
时间标志的计算,主要用于消抖,保持的判断
voidManageKey(HALKEY_TYPEkey)
硬件扫描按键,并置位各个标志
注意事项:
参数为键IO端口读出的值
(6)内部资源的相关驱动
定时器,串口控制器,GPIO,SPI控制器,A/D,D/A相关驱动详见开发板
(7)Cbus相关驱动:
见CML网站提供的资料
Voidwr_byte(unsignedcharbyte)
Voidwr1(unsignedcharaddress,unsignedchardatabyte)
Voidwr2(unsignedcharaddress,unsignedchardatabyte)
Unsignedcharrd_byte(void)
Voidrd1(unsignedcharaddress)
Voidrd2(unsignedcharaddress)
CMX618配置
cmx7141内部集成了cmx618的控制器对cmx618的操作仅需要配置cmx7141的相关寄器就可以控制cmx618,对于cmx7041需要通过Cbus接口控制cmx618
Viodcmx618init(viod)
618初始化,设置编码速率,前向纠错FEC,输入输出增益调整,亚音频设置
Viodcmx618decode(viod)
618开始解码,配置寄存器启动cmx618,参见数字发送脚本
CMX7141配置(待细化)--黄科军
tx_burst_voice_forever2.cbs:
数字发送
TxdPMRprbs.pes
rx_dpmr2.cbs:
数字接收
ATB010synth_RX_09375.pes:
模拟发射锁相环配置446.09375MHZ
ATB010synth_TX_09375.pes:
模拟接收锁相环配置446.09375MHZ
Rx_Analogue.pes:
模拟发射
Tx_analogue.pes:
模拟接收
6.2.1呼叫控制层与数据链路层的接口定义?
?
--崔博士、陈维明
Tobeadded.
各个任务模块
6.3.1主程序流程(孙陟)
上电初始化
读取flash配置信息
初始化IO,定时器
初始化Cmx618;
编码速率,前向纠错FEC,输入输出增益调整,亚音频设置
初始化LCD;
开机界面显示
射频部分初始化;
初始发射功率,接收状态
模拟开关选择:
PWM方式输入
启动人机界面和状态机任务。
其它?
系统启动流程:
主任务流程:
主任务监控消息队列,当新的消息到来,判断是何种消息,keyinput,cmxinput,fromRF?
对收到的数据进行解析,得到更多的具体信息,如呼叫号码,输入键值等。
然后把解析后的数据放入主逻辑流程,做如下事情:
-定位当前数据所属session,更新session相关的数据,包括状态。
-根据新的状态,来决定对UI,NET,RF等子模块的调用逻辑。
-被调用各子模块根据输入参数,执行具体的与子模块相关的逻辑。
-各个模块执行完毕后,主任务重新进入等待新消息状态。
1.1.(孙陟)
呼叫控制状态机(FSM)
单呼
组呼
短信
短信群发:
对讲机上电及初始化后的进入下列几种状态(从打开电源开机到关机的下列状态转换)
状态装换的描述待添加。
呼叫流程图
6.3.3人机界面任务(胡红钱)
LCD初始化函数:
LcdInit(void)
驱动相关函数:
voidLcdCmd(u8cmd)命令发送函数
voidLcdDat(u8dat)数据发送函数
设置相关函数:
voidLcdOnOff(u8onoff)开关LCD背光灯
voidLcdSetXP(u8x,u8page)起始页和页内列地址设置
voidSetStartLine(u8xline)起始行设置
高层函数:
voidLCDjiemian(void)开机界面函数
voidLcdFill(u8dat)屏幕填充函数
voidLcdChar8(charchr)字符显示函数
主要的数据结构
任务的主流程图
与其它任务的信息交互(多个任务的情况)
6.3.4其它任务?
(TBD)
测试相关设计(TBD)
测试模块或测试工具的设计?
特殊的信息输出或记录?
测试接口预留?
集成测试或单元测试用例(TBD)
集成测试用例?
子系统单元测试用例?
功能模块单元测试用例?
参考文献
列出所参考的或详细内容所在的文档.
缩略语
GUIGraphicalUserInterface
致谢
描述相关的人员对文档的贡献,并致谢意。
ENDOFDOCUMENT
毕业设计(论文)原创性声明和使用授权说明
原创性声明
本人郑重承诺:
所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:
日 期:
指导教师签名:
日 期:
使用授权说明
本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:
按照学校要求提交毕业设计(论文)的印刷本和电子版本;
学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;
学校可以采用影印、缩印、数字化或其它复制手段保存论文;
在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:
日 期:
学位论文原创性声明
本人郑重声明:
所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律后果由本人承担。
日期:
年月日
学位论文版权使用授权书
本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
日期:
导师签名:
日期:
指导教师评阅书
指导教师评价:
一、撰写(设计)过程
1、学生在论文(设计)过程中的治学态度、工作精神
□优□良□中□及格□不及格
2、学生掌握专业知识、技能的扎实程度
3、学生综合运用所学知识和专业技能分析和解决问题的能力
4、研究方法的科学性;
技术线路的可行性;
设计方案的合理性
5、完成毕业论文(设计)期间的出勤情况
二、论文(设计)质量
1、论文(设计)的整体结构是否符合撰写规范?
2、是否完成指定的论文(设计)任务(包括装订及附件)?
三、论文(设计)水平
1、论文(设计)的理论意义或对解决实际问题的指导意义
2、论文的观念是否有新意?
设计是否有创意?
3、论文(设计说明书)所体现的整体水平
建议成绩:
(在所选等级前的□内画“√”)
指导教师:
(签名)单位:
(盖章)
年月日
评阅教师评阅书
评阅教师评价:
一、论文(设计)质量
二、论文(设计)水平
评阅教师:
教研室(或答辩小组)及教学系意见
教研室(或答辩小组)评价:
一、答辩过程
1、毕业论文(设计)的基本要点和见解的叙述情况
□