资源描述
基于dPMR标准的数字对讲机软件系统设计
作者: 黄科军、孙陟、陈维明、胡红钱、崔洪州
日期: Jan. 2011
1. 文档历史 3
2. 文档目的 3
3. 背景描述 3
3.1 dPMR简介 3
3.2 基于dPMR的数字对讲机开发的三个阶段 3
4. 对讲机外观、界面设计和人机操作 5
4.1 对讲机外观 5
4.2 界面设计 7
Ø 屏幕显示 7
Ø LED指示灯 8
Ø 键盘 8
4.3 人机界面操作描述(以后逐步添加完善)-- 细化和完善 (胡红钱) 9
5. 开发环境 11
5.1. 硬件平台和开发装置 11
5.2. 软件开发环境 11
6. 软件设计 12
6.1. 系统架构 12
6.1.1系统框图 12
6.1.2任务及其信息交互 (孙陟) 12
6.2. 接口定义 15
6.2.1驱动接口的定义 15
6.2.1呼叫控制层与数据链路层的接口定义?? -- 崔博士、陈维明 17
6.3. 各个任务模块 17
6.3.1主程序流程 (孙陟) 17
6.4. (孙陟) 19
6.3.3人机界面任务 (胡红钱) 25
6.3.4其它任务?? (TBD) 25
7. 测试相关设计 (TBD) 26
8. 集成测试或单元测试用例 (TBD) 26
9. 参考文献 26
10. 缩略语 26
11. 致谢 26
1. 文档历史
版本号
日期
修改的原因
修改人
0.1
2010.12.12
Draft
黄科军
0.2
2011.02.09
格式整理、重新组织、增加了开发阶段的描述和软件设计框图
陈维明
0.3
2011.02.21
4.4人机界面雏形定义。6.3.3人机界面LCD相关接口函数。
胡红钱
0.4
2011.03.07
增加/更新
6.1.2任务及其信息交互
6.3.1主程序流程
6.4 呼叫控制状态机
孙陟
2. 文档目的
此文档为基于dPMR标准的数字对讲机软件系统设计。基于dPMR的数字对讲机开发将分三个阶段(见3.2节),本设计主要考虑第一阶段。其它阶段的设计将单独形成设计文档。本文档包括将要实现的功能描述、人机界面设计和软件的详细设计等。
3. 背景描述
3.1 dPMR简介
dPMR是ETSI推出的基于频分复用(FDMA)技术,RF载波带宽6.25KHz的窄带数字公众无线对讲机标准。标准号 ETSI TS 102 490,目前的版本是V1.6.1(2010年8月)。dPMR标准规定了三种工作模式:其中TS102 490规定的是一个端到端(peer-to-peer)的直接互连网络(模式1)。除此之外,dPMR另有两种增强模式:带中继模式(模式2)及带管理功能的中继模式(模式3),不在本文档讨论范围内。
符合这个文档标准的无线电设备应该在物理层和数据链路层能够不同的厂家设备互相通信。文档描述了设备提供的两层功能(服务和设施)。为了互操作性,定义的一个基本级别的服务和设施(ISF),简化的模式,所有的无线电设备无需任何设置或编程即可互相操作。同时也定义了一个高级服务和设施级别(CSF)通过重新编程能够提供更高级的功能。如果制造商宣布符合CSF对讲机“标准用户接口”,则人机接口(MMI)也必须符合附录A的相关要求。(见相关标准文件)
3.2 基于dPMR的数字对讲机开发的三个阶段
数字无线对讲机开发实行分阶段进行,第一阶段采用现成ASIC芯片实现基带信号处理,协议实现;第二阶段采用4FSK的Modem芯片来做基带信号处理,由微处理器来实现数字对讲机协议及呼叫控制;第三阶段将会开发完整的算法,包括4FSK的调整解调算法,数字对讲机协议及呼叫控制,语音编解码算法等。
目前在开发的是第一阶段和第二阶段产品,其中ASIC芯片采用CMX7141芯片,芯片内部包括4FSK的调制解调功能,dPMR的协议,语音编解码器接口控制等功能,语音编解码器采用CMX618芯片;ASIC芯片可以换成CMX7041芯片,这是一个4FSK的调制解调器,数字对讲机的协议自主开发,在微处理器上运行。射频部分电路采用分离元器件设计。
第一阶段方案(基于CMX7141+CMX618):
RF部分
(Tx)
(Rx)
CMX7141
ADC
DAC
解调
调制
dPMR
协议
CMX618
声码器
C-Bus I/F
微处理器
屏幕
键盘
第二阶段方案:4FSK Modem +ARM版
Modem
RF部分
(Tx)
(Rx)
ADC
DAC
解调
调制
语音编码
解码器
屏幕
键盘
微处理器 人机接口
dPMR协议
ASIC
第三阶段方案:DSP版
CMX618
声码器
C-Bus I/F
DSPTI- VC5510
RF部分
(Tx)
(Rx)
ADC
DAC
解调
dPMR 协议
调制
微处理器
屏幕
键盘
4. 对讲机外观、界面设计和人机操作
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读取,显示
5. 开发环境
5.1. 硬件平台和开发装置
Ø DX32实验板(ARM处理器STM32F103)
Ø J-LINK v7
5.2. 软件开发环境
Ø C语言
Ø Realview MDK 3.80
Ø uC/OS
Ø uC/GUI
Ø 其它?
6. 软件设计
6.1. 系统架构
6.1.1系统框图
系统软件大致分为操作系统和驱动、呼叫控制和状态机、监控和调试、人机界面等。
6.1.2任务及其信息交互 (孙陟)
包图:
Biz 模块:包括主要的 业务逻辑
Display 模块: 显示UI抽象层,包含UI相关的逻辑,并调用具体的LCD驱动接口
UserInput模块: 用户输入抽象层,包含用户输入相关逻辑,并接受输入的键值
NetInput模块:网络抽象层,接受来自网络的数据进入。
NetOutput模块: 网络抽象层,发送数据到网络,与底层模块(如CMX)交互
Storage模块: 存储数据到FLASH
RF模块: 负责与RF接口交互
任务组件交互图:
系统初始化后,主要起3个任务:
Store task: 存储任务,负责把config内存数据保存到FLASH.
NetSender task:负责发送网络数据,可能有阻塞延时操作
Main task: 主任务,负责监控并处理消息队列(msg queue)数据,然后经过逻辑处理,分别刷新UI,通过网络层发送数据,更新状态,更新config并通知存储任务保存数据到FLASH。
用户的输入(KEY,PTT),网络接收数据(CMX)通过事件(中断)放入main task的消息队列
类图:
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. 接口定义
6.2.1驱动接口的定义
Ø 射频控制部分
(1) void RFpowercontrl(void)
功能:D/A设置对讲机发射功率 具体参数等待测量结果
(2) void Rxfilter(void)
功能:D/A 调整调谐滤波器的中心频率 具体参数等待测量结果
(3) issi(void)
功能:A/D 信号强度检测 返回结果,指示电压的转换值
(4) void SetFirstLO (u32 LocalOsc)
功能:设置第一本振
(5) void SetSecondLO(void)
功能:设置第二本振(固定45.1M)
(6) void Txfrequency(u32 freq)
功能: 设置发射频率设置
(7) void RFcontrlinit(void)
功能:射频部分初始化,初始化射频模块设置接收状态,接收频率
Ø 设备驱动
(1)Lcd相关驱动 参见液晶生产商给的资料
void lcdcommand(uchar com) 写命令\参数函数
void lcdDataWrite(uchar data) 写数据函数
void initialize(void)初始化LCD
void setstartline(uchar startline)设置显示位置
void clearscr() 清屏
void DisplayPic(uchar page,uchar column,uchar *picku) 显示子函数
(2)flash存储器相关驱动 参见开发板中资料
void FLASH_SPI_Config(void) 初始化串行FLASH的SPI接口
SPIByte(u8 byte) 读写SPI总线
void SSTCmd1(u8 cmd) 写一个SST命令/写一个命令后一个数据/写一个命令后再写3个数据
SSTCmdb1b(u8 cmd)
写一个SST命令,返回1字节数据/写1个命令字,3个地址字,返回多个字节
void SST25WREN(void) 允许写功能
void SST25WRDI(void) 检测忙
void SST25WPEN(void) 允许软件写保护
void SST25WriteEn(void) 先消除保护位,再允许写位
u16 SST25ReadID(void) 读取SST的ID
void SST25ChipErase(void) 刷除CHIP
void SST25SectorErase(u32 addr) 刷扇区
void SST25ByteProgram(u32 addr,u8 byte) 写一个字节
void SST25Write(u32 addr,u8* p_data,u32 no) 写多个字节
void SST25Read(u32 addr,u8* p_data,u32 no) 高速读 对于后续带5的芯片,可调用此函数读
void SST25ReadL(u32 addr,u8* p_data,u32 no) 低速读
(3)AD(void)
功能:A/D 信号强度检测 返回结果电压值的转换值
(4)READIO(void)
功能:读取当前信道编号 返回结果当前信道号
(5)矩阵键盘相关驱动
void CountingKey(void)
功能:时间标志的计算,主要用于消抖,保持的判断
void ManageKey(HALKEY_TYPE key)
功能:硬件扫描按键,并置位各个标志
注意事项:参数为键IO端口读出的值
(6)内部资源的相关驱动
定时器,串口控制器,GPIO,SPI控制器,A/D,D/A相关驱动 详见开发板
(7)Cbus相关驱动: 见CML网站提供的资料
Void wr_byte(unsigned char byte)
Void wr1(unsigned char address,unsigned char databyte)
Void wr2(unsigned char address,unsigned char databyte)
Unsigned char rd_byte(void)
Void rd1(unsigned char address)
Void rd2(unsigned char address)
Ø CMX618配置
cmx7141内部集成了cmx618的控制器对cmx618的操作仅需要配置cmx7141的相关寄器就可以控制cmx618,对于cmx7041需要通过Cbus接口控制cmx618
Viod cmx618init(viod)
功能:618初始化,设置编码速率,前向纠错FEC,输入输出增益调整,亚音频设置
Viod cmx618decode(viod)
功能:618开始解码,配置寄存器启动cmx618,参见数字发送脚本
Ø CMX7141配置 (待细化) -- 黄科军
tx_burst_voice_forever2.cbs :数字发送
Tx dPMR prbs.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呼叫控制层与数据链路层的接口定义?? -- 崔博士、陈维明
To be added.
6.3. 各个任务模块
6.3.1主程序流程 (孙陟)
上电初始化
读取flash配置信息
初始化IO , 定时器
初始化Cmx618; 编码速率,前向纠错FEC,输入输出增益调整,亚音频设置
初始化LCD; 开机界面显示
射频部分初始化; 初始发射功率,接收状态
模拟开关选择:PWM方式输入
启动人机界面和状态机任务。
其它??
系统启动流程:
主任务流程:
主任务监控消息队列,当新的消息到来,判断是何种消息,key input, cmx input, from RF?
对收到的数据进行解析,得到更多的具体信息,如呼叫号码,输入键值等。
然后把解析后的数据放入主逻辑流程,做如下事情:
- 定位当前数据所属session,更新session相关的数据,包括状态。
- 根据新的状态,来决定对UI,NET,RF等子模块的调用逻辑。
- 被调用各子模块根据输入参数,执行具体的与子模块相关的逻辑。
- 各个模块执行完毕后,主任务重新进入等待新消息状态。
6.4. (孙陟)
Ø 呼叫控制状态机(FSM)
呼叫进入2
呼叫建立1
呼叫中3
空闲0
接受呼叫
收到呼叫
拒绝呼叫
发起呼叫
使用CSU
发起呼叫
拒绝/无应答
被叫应答
结束呼叫
接收语音/数据
发射请求
发射状态4
单呼
组呼
短信
短信群发:
对讲机上电及初始化后的进入下列几种状态(从打开电源开机到关机的下列状态转换)
状态装换的描述待添加。
Ø 呼叫流程图
开始
拨号
呼叫
按PTT键讲话
松开PTT键接收
断开通话
结束
MS:A
发射内容
H:E
H:SF:SF:E
H:E:H:E
呼叫状态
0
0/1
3/4
4/3
3/0
0
开始
呼叫
进入
按PTT键讲话
松开PTT键接收
断开通话
结束
MS:B
发射内容
H
呼叫状态
0
0/2
3/4
4/3
3/0
0
H:SF:SF:E
H:E:H:E
6.3.3人机界面任务 (胡红钱)
Ø LCD初始化函数: LcdInit(void)
Ø 驱动相关函数: void LcdCmd(u8 cmd) 命令发送函数
void LcdDat(u8 dat) 数据发送函数
Ø 设置相关函数: void LcdOnOff(u8 onoff) 开关LCD背光灯
void LcdSetXP(u8 x,u8 page) 起始页和页内列地址设置
void SetStartLine(u8 xline) 起始行设置
Ø 高层函数: void LCDjiemian(void) 开机界面函数
void LcdFill(u8 dat) 屏幕填充函数
void LcdChar8(char chr) 字符显示函数
??
Ø 主要的数据结构
Ø 任务的主流程图
Ø 与其它任务的信息交互 (多个任务的情况)
6.3.4其它任务?? (TBD)
Ø 主要的数据结构
Ø 任务的主流程图
Ø 与其它任务的信息交互 (多个任务的情况)
7. 测试相关设计 (TBD)
Ø 测试模块或测试工具的设计?
Ø 特殊的信息输出或记录?
Ø 测试接口预留?
8. 集成测试或单元测试用例 (TBD)
Ø 集成测试用例?
Ø 子系统单元测试用例?
Ø 功能模块单元测试用例?
9. 参考文献
列出所参考的或详细内容所在的文档.
10. 缩略语
GUI Graphical User Interface
11. 致谢
描述相关的人员对文档的贡献,并致谢意。
END OF DOCUMENT
目 录
第一章 总论 1
第一节 项目背景 1
第二节 项目概况 2
第二章 项目建设必要性 5
第三章 市场分析与建设规模 7
第一节 汽车市场需求分析 7
第二节 市场预测 12
第三节 项目产品市场分析 13
第四节 建设规模 16
第四章 场址选择 17
第一节 场址所在位置现状 17
第二节 场址建设条件 17
第五章 技术方案、设备方案、工程方案 22
第一节 技术方案 22
第二节 设备方案 28
第三节 工程方案 33
第六章 原材料、燃料供应 38
第七章 总图布置与公用辅助工程 39
第一节 总图布置 39
第二节 公用辅助工程 43
第八章 环境影响评价 52
第一节 环境保护设计依据 52
第二节 项目建设和生产对环境的影响 52
第三节 环境保护措施 54
第四节 环境影响评价 56
第九章 劳动安全卫生与消防 57
第一节 劳动安全卫生 57
第二节 消防 64
第十章 节能与节能措施 67
第一节 项目概况 67
第二节 项目综合能耗 69
第三节 节约及合理利用能源的主要措施 71
第十一章 项目实施进度与人力资源配置 76
第一节 建设工期 76
第一节 项目实施进度 76
第二节 生产组织与人员培训 79
第十二章 投资估算与资金筹措 82
第一节 建设投资估算 82
第二节 总投资估算 86
第三节 资金筹措 86
第十四章 财务效益分析 88
第一节 财务评价基础数据与参数选取 88
第二节 销售收入及销售税金估算 89
第三节 成本费用估算 89
第四节 财务评价 91
第五节 不确定性分析 93
第十三章 风险分析 95
第十四章 结论与建议 97
第一节 研究结论 97
第二节 建议 97
CRSC Shanghai Rail Transportation Technologies Co., LTD. - PROPRIETARY
Use pursuant to Company Instructions
Page 29 Issue 0.1
展开阅读全文