欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    软件概要设计1.docx

    • 资源ID:10212852       资源大小:637.97KB        全文页数:39页
    • 资源格式: DOCX        下载积分:12金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要12金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    软件概要设计1.docx

    1、软件概要设计1 T6软件概要设计北京思普瑞特科技发展有限公司2009-4-29版本编制审核批准说明0.1肖晖,汪超干2009-5-18,初次制定。一软件基本要求及功能概述 在现有硬件平台(详见“T6硬件概要设计”)下,完成打印任务。要求支持RS232、蓝牙、USB作为数据输入通道,系统使用128X32点阵的LCD作为信息输出,另外在主机的控制下(直通模式,使用采购的IC卡模块),具备IC卡、SIM卡的读写功能和磁卡的读功能。 系统应能支持外接电源和电池作为电源输入,另外具备电池充电能力。1.1 软件环境介绍 整体软件在“Keil uVision3”环境+ULINK2仿真器环境下开发,使用ST公

    2、司的标准外围设备驱动函数库。1.2 软件基本架构1.2.1 软件总体基本框图 软件总体框图如下(正常打印模式): 软件模块按实现功能方式的不同,将分成两大类:中断程序模块和功能程序模块。其中,中断程序模块有可能调用功能函数模块。 所有中断程序模块没有入口参数和出口参数(将使用全局变量进行程序控制)。以下介绍的所有的中断程序模块将按照优先级由高到低的顺序排列。1.2.2 软件工作模式简介 软件具备以下几种工作模式,详见下表:模式名称进入方法主要功能退出模式测试页打印模式开机+FEED键打印测试页所有测试页打印完毕或松开FEED键后进入正常打印模式系统设置模式开机+MODE键设置系统参数(注:1)

    3、关机恢复出厂设置开机+MODE+FEED并持续5秒系统设置参数恢复成默认值完成后自动进入到正常打印模式正常打印模式开机完成打印功能关机 注1:仅使用LCD屏的T6M设备具备使用键盘设置打印参数功能。不具备LCD屏的型号将仅支持串口指令设置方式。 因为正常打印模式将作为本次开发的重点,因此一下部分,如果没有特殊说明,均是指正常打印模式。1.3 中断程序模块简述1.3.1 Timer0中断程序模块简介 Timer0_Int_Server; /Timer0中断程序模块 实现功能: 实现系统时标功能,每100uS中断一次,在中断程序中将:1 检查按键状态并设置按键标志(包括双击和长按状态)。2 设置1

    4、00uS时标和100mS时标(IC卡和磁卡使用)。3 串口超时管理。4 启动AD采集。5 检查是否有磁卡数据。 运行条件: 系统待机模式和正常运行模式下运行。在掉电模式下停止运行。 使用变量: 全局变量: uint32 Timer0Cntr; /中断计数器 uint8 Timer0100uSFlag; /Timer0标志,高有效 uint8 Timer0100mSFlag; /Timer0标志,高有效 uint8 KeyFeedFlag; /FEED键的有效标志,高有效 uint32 KeyFeedCntr; /FEED键的连击计数器 uint8 KeyModeFlag; /MODE键的有效标

    5、志,高有效 uint32 KeyModeCntr; /MODE键的连击计数器 uint8 KeyPwrFlag; /POWER键的有效标志,高有效 uint32 KeyPwrCntr; /POWER键的连击计数器 Uint8 ExtPowerFlag; /外部电源有效标志,高有效 Uint8 ExtUsbFlag; /外部USB有效标志,高有效 uint8 Uart1TimeOutCtrl; /UART1超时控制,高有效 uint8 Uart1TimeOutFlag; /UART1超时标志,高有效 uint32 Uart1TimeOutCntr; /UART1超时计数器 uint8 Uart2

    6、TimeOutCtrl; /UART2超时控制,高有效 uint8 Uart2TimeOutFlag; /UART2超时标志,高有效 uint32 Uart2TimeOutCntr; /UART2超时计数器 uint8 Uart4TimeOutCtrl; /UART4超时控制,高有效 uint8 Uart4TimeOutFlag; /UART4超时标志,高有效 uint32 Uart4TimeOutCntr; /UART4超时计数器 uint8 AdCtrlFlag; /AD采集控制,位标志(共4个),高有效 uint8 AdIndex; /AD采集索引控制,有效值03 uint8 MsrCa

    7、rdFlag; /磁卡控制标志,高有效 局部变量: 自行定义。 资源占用: 注意事项: 在中断程序中,除可立即完成的操作(如设置键盘标志操作)外,将只设置标志后退出,在主程序任务轮询中完成具体的操作(下同)。1.3.2 Timer1中断程序模块简介 Timer1_Int_Server; /Timer1中断程序模块 实现功能: 实现打印延时控制功能,每100uS中断一次,在中断程序中将:1. 完成打印的加热时间控制。2. 完成打印的走纸延时控制。3. 完成外部SPEAKER运行控制。 运行条件: 系统待机模式和正常运行模式下,由主程序根据当前打印任务的执行情况启动和禁止。 使用变量: uint8

    8、 PrintCtrlFlag; /打印有效控制标志,高有效 uint32 PrintCntr; /打印延时计数器 uint32 PaperCntr; /走纸延时计数器 uint8 BeepMode; /外部SPEAKER模式控制 uint8 BeepIndex; /外部SPEAKER运行索引控制 uint32 BeepHighCntr; /外部SPEAKER输出高延时计数器 uint32 BeepLowCntr; /外部SPEAKER输出低延时计数器 资源占用: 注意事项:1.3.3 Timer2中断程序模块简介 Timer2_Int_Server; /Timer2中断程序模块 实现功能: 保

    9、留功能。 运行条件: 使用变量: 资源占用: 注意事项:1.3.4 UART1中断程序模块简介 Uart1_Int_Server; /Uart1中断程序模块 实现功能:完成串行数据的接收功能(RS232数据接收),使用硬件的缓冲(32字节)。在中断程序中,首先需要判断本次操作是指令还是数据,根据内容进行不同饿处理。根据程序设置,可以有选择的完成数据校验和命令解析功能。 运行条件: 系统初始化后的默认状态为允许运行,运行过程中可设置成忽略状态(允许中断但不接收数据)。 使用变量: uint8 Uart1Index; /数据索引。 Uint32 DataCounter1;/当前数据计数器。接收到指

    10、令是设置,只有在接收指令数 据大于硬件缓冲的情况下才使用。 uint8 Uart1TimeOutCtrl; /UART1超时控制,高有效,与TIMER0共用。 uint8 Uart1TimeOutFlag; /UART1超时标志,高有效,与TIMER0共用。 uint32 Uart1TimeOutCntr; /UART1超时计数器,与TIMER0共用。 资源占用: 注意事项:1.3.5 UART2中断程序模块简介 Uart2_Init_Server; /Uart2中断程序模块 实现功能:完成串行数据的接收功能(蓝牙数据接收),使用硬件的缓冲(32字节)。在中断程序中,首先需要判断本次操作是指令

    11、还是数据,根据内容进行不同饿处理。根据程序设置,可以有选择的完成数据校验和命令解析功能。 运行条件:系统初始化后的默认状态为允许运行,运行过程中可设置成忽略状态(允许中断但不接收数据)。 使用变量: uint8 Uart2Index; /数据索引。 Uint32 DataCounter2;/当前数据计数器。接收到指令是设置,只有在接收指令数 据大于硬件缓冲的情况下才使用。 uint8 Uart2TimeOutCtrl; /UART2超时控制,高有效,与TIMER0共用。 uint8 Uart2TimeOutFlag; /UART2超时标志,高有效,与TIMER0共用。 uint32 Uart2

    12、TimeOutCntr; /UART2超时计数器,与TIMER0共用。 资源占用: 注意事项:1.3.6 USB中断程序模块简介 USB中断将分成以下三个子中断程序。 EP0_Server; /EP0中断程序模块 实现功能:完成USB设备的枚举控制以及主机USB命令的接收和设备状态的发送。 运行条件:系统运行过程中将一直允许运行, 使用变量: 详见USB设计有关章节。 资源占用: 注意事项: EPx_Out_Sever; /Epx_Out端点中断程序模块 实现功能:完成主USB发送数据的接收。 运行条件:系统运行过程中将一直允许运行,根据EP0的指令,决定是否将接收的数据丢弃。 使用变量: 详

    13、见USB设计有关章节。 资源占用: 注意事项: 本设计中将使用EP2_OUT端点(512字节)。 EPx_In_Sever; /Epx_In端点中断程序模块 实现功能:完成到主USB数据的发送(目前保留)。 运行条件:系统运行过程中将一直允许运行,根据EP0的指令,决定是否上传数据。 使用变量: 详见USB设计有关章节。 资源占用: 注意事项: 本设计中将使用EP6_IN端点(512字节)。1.3.7 FLASH中断程序模块简介 Spi1_Int_Server; /Spi1中断程序模块 实现功能:完成SPI1接口的串行数据的发送接收功能。作为SPI接口的FLASH的底层驱动接口程序,将支持整扇

    14、区读写和字节读操作。 运行条件:系统初始化后的默认状态为允许运行。 使用变量: 详见后续的FLASH的运行控制数据结构。 资源占用: 注意事项:1.3.8 PRINTER中断程序模块简介 Spi2_Int_Sever; /Spi2中断程序模块 实现功能:完成SPI2接口的串行数据的发送接收(目前仅使用数据发送功能,数据接收功能保留)功能。以字节为单位,支持任意数据长度的发送。 运行条件:系统初始化后的默认状态为允许运行。 使用变量: 详见后续的打印运行控制数据结构。 资源占用: 注意事项:1.3.9 UART4中断程序模块简介 Uart4_Int_Sever; /Uart4中断程序模块 实现功

    15、能:完成串行数据的接收功能(IC卡和SIM卡,数据发送使用查询方式完成),使用硬件的缓冲(32字节)。在中断程序中,根据程序设置,可以有选择的完成数据校验和命令解析功能。 运行条件:系统初始化后的默认状态为允许运行,运行过程中可设置成忽略状态(允许中断但不接收数据)。 使用变量: uint8 Uart4Index; /数据索引。 Uint32 DataCounter4;/当前数据计数器。接收到指令是设置,只有在接收指令数 据大于硬件缓冲的情况下才使用。 uint8 Uart4TimeOutCtrl; /UART4超时控制,高有效,与TIMER0共用。 uint8 Uart4TimeOutFla

    16、g; /UART4超时标志,高有效,与TIMER0共用。 uint32 Uart4TimeOutCntr; /UART4超时计数器,与TIMER0共用。 资源占用: 注意事项:1.3.10 AD中断程序模块简介 Ad_Int_Sever; /AD中断程序模块 实现功能:完成AD采集数据的接收和初步处理。AD采集由系统定时器触发,由本中断程序处理(读AD采集数据后,设置相应的全局标志) 运行条件:系统初始化后的默认状态为允许运行。 使用变量: uint8 ChargeOe, /充电允许标志,高有效 uint8 ChargeStus, /充电状态,在充电允许标志有效地情况下本标志有效 uint8

    17、ChargeCntr, /充电计数器, uint32 ChargeBuffer, /充电数据缓冲器 uint32 BatteryStus, /电池电量数据 uint8 PrintOe, /打印允许标志,高有效 uint8 PaperErrFlag, /打印头缺纸错误标志,高有效。 uint8 PaperCntr, /缺纸监测计数器, uint32 ChargeBuffer, /缺纸监测缓冲器 uint8 TempErrFlag, /打印头过热错误标志,高有效。 uint8 PrtTempCntr, /打印头过热监测计数器, uint32 PrtTempBuffer, /打印头过热监测缓冲器 资

    18、源占用: 注意事项:1.3.11 按键中断程序模块简介 本部分包含两个按键中断程序。 KeyMode_Int_Sever; /MODE键中断程序模块 KeyFeed_Int_Sever; /FEED键中断程序模块 实现功能:沿检测中断,将系统从休眠状态唤醒。 运行条件:系统初始化后的默认状态为禁止运行,在进入休眠状态前启动本功能,从休眠状态中唤醒后禁止本功能。 使用变量: uint8 WakeUpFlag, /系统唤醒标志标志,高有效 资源占用: 注意事项:1.4 功能程序模块简述1.4.1 磁卡操作组件简述 磁卡组件包括两个有效函数,初始化函数和磁卡数据读函数。 Card_Init_Svr

    19、/磁卡初始化程序 实现功能:初始化磁卡读功能。 运行条件:系统初始化后执行,或主程序认为在有必要的情况下执行(读错误的情况下)。 使用变量: 资源占用: 注意事项: Card_Read_Svr /磁卡读程序 uint8 RetryNumber; /错误重试次数 uint8 DataNumber; /读数据长度 uint8 DataBuffer; /读数据缓冲区 返回值:0=读成功,1=读错误。 实现功能:确认磁卡内部有数据的情况下,读磁卡内部数据。 运行条件:为保证磁卡内部数据的可靠读取,建议在读磁卡数据时,关闭不必要的中断程序。 使用变量: uint8 CardOe; /磁卡运行控制标志,高

    20、有效 uint8 CardHeadFlag; /磁卡数据有效标志(数据在磁卡芯片中),高有效 uint8 CardDataFlag; /磁卡数据读有效标志,0=未读;1=读正确;2=读错误 uint8 CardDataCARDSIZE; /磁卡数据缓冲区 资源占用: 注意事项:1.4.2 FLASH操作组件简述 本处FLASH的操作特指外部SPI接口的FLASH芯片操作,FLASH组件操作包括三个层次的函数,详见下图: 应用接口层完成与用户程序接口的任务。 BSP接口层完成应用接口层与具体硬件之间的接口。 硬件驱动层完成具体硬件的管理与控制。 整片FLASH中的内容按一下方法进行分配: 以上F

    21、LASH按16M字节进行设计。FLASH内部按扇区进行管理,每扇区规定为256 字节。 使用绝对地址为01023字节的存储区作为文件信息记录区。文件信息记录区内容安排如下: 起始8个字节作为本FLASH是否使用的标志,规定为ASC字符的“12345678”。本应用最多支持126个独立的文件。 注意每个文件的起始位置为一个完整扇区的开始地址。 使用地址从“0x000400”“0x010000”的空间作为系统信息的存储空间,目前使用“0x000400”“0x0004ff”的256字节作为系统信息存储空间(存储与打印相关的系统信息),其余空间作为保留信息存在。 建议的系统信息的数据结构见下文。1.4

    22、.3 LCD操作组件简述 LCD组件包括特定的用户UI接口控制(打印设置)和打印过程中状态输出。详细内容见后续章节。1.4.4 打印缓存管理组件简述详细内容见后续章节。1.4.5 走纸控制函数简述 uint8 Paper_Montion_Svr /手动走纸控制程序 uint16 DlyNumber; /走纸延时计数 uint8 StepNumber; /走纸数据长度 返回值:0=读成功,1=读错误。 实现功能:被调用一次,完成一个指定个4步的走纸控制循环。 运行条件:为保证走纸的顺畅,建议在调用本函数时,关闭不必要的中断程序。 使用变量: 无。 资源占用: 使用指定的IO口。 注意事项: 二软

    23、件模块及层次关系设计2.1 所有模块及归属关系列表功能分组模块名称简要介绍备注说明数据输入串行接口控制初始化、数据接收、数据处理,数据缓存及指令队列填充使用同一个数据缓存及指令队列蓝牙接口控制初始化、数据接收、数据处理,数据缓存及指令队列填充USB接口控制初始化、数据接收、数据处理,数据缓存及指令队列填充数据处理IC卡读卡控制SIM卡读卡控制磁卡读卡控制用户接口键盘输入查询本功能用户设置模式中使用LCD菜单显示按键查询将忽略“MODE”键LCD信息显示显示系统信息和错误信息系统处理(设备相关)系统时标控制数据采集控制FLASH读写控制电池充电管理系统待机/激活管理打印缓冲区管理打印进程管理走纸

    24、控制系统处理(功能相关)打印缓冲填充(带参数)打印字体处理包括点阵查询与转置、缩放等处理2.2 模块详细介绍 模块详细介绍包括模块内部处理流程(针对功能比较复杂的模块或包含内部子模块的模块),模块使用的数据结构以及一些认为需要详细介绍的内容。2.2.1 串口控制模块 基本功能介绍: 串口模块使用UART1与主机进行通讯,上传系统数据与状态,接收主机下发的数据与控制。 串口启用最多32字节的硬件缓冲,每一次发送/接收最多可操作32个字节的数据。 串口使用系统结构中定义的固定的模式(波特率、起始位、停止位、奇偶校验以及硬件流控制等)。 每一次发送接收使用校验?(是否能确定) 串口控制模块在UART

    25、1的接收中断有效后被调用,UART1的发送使用查询模式完成。 基本控制结构: 串口控制模块使用以下的结构进行控制,详见以下伪代码 struct Uart1_struct uint8 ModuleCtrl; /模块使用控制,0=FALSE;1=DATA;2=DATA+CODE uint8 BusyCtrl; /模块状态,0=FALSE;1=TRUE uint8 ErrorFlag; /模块错误状态,0=FALSE;1=TRUE uint8 ModuleStus; /模块状态,详细定义见下表 uint16 DataNumber; /数据接收字节总数 uint8 DataBufferDATASIZE

    26、 *8; /数据接收缓冲,“DATASIZE”为系统宏定义 “BusyCtrl”由主程序设置。 ModuleStus:状态定义,由中断程序置位,由系统应用程序清除。 0x00:初始数据接收状态,正常接收数据。 0x01:已经接收了一包有效数据。 控制流程: 推荐的串口的控制程序流程如下:2.2.2 蓝牙控制模块 蓝牙模块使用UART2资源,控制方式与 串口控制方式相同。2.2.3 USB控制模块 USB控制模块分为USB设备枚举控制和USB设备数据传输控制。USB设备枚举控制将在下面得章节中介绍, 2.2.4 磁卡控制模块 1磁卡控制模块使用的数据结构Struct MagCard_struct

    27、 U8 ErrFlag; /解析数据后的正确标志 1:出错 0:正确 U8 Tracke1BufferR1SIZE; /第一轨道解析后的数据 按最大值来存储U8 Tracke2BufferR2SIZE; /第二轨道解析后的数据 按最大值来存储U8 Tracke3BufferR3SIZE; /第三轨道解析后的数据 按最大值来存储 2磁卡控制的模块的层次划分应用层提供卡上用于人机交付的数据。解析层负责把数据按轨道进行解析。解析后数据存在磁卡数据结构里。底层IO驱动负责把数据从芯片里读出来。 3磁卡控制模块的基本数据流程2.2.5 IC卡及SIM卡控制模块 IC卡及SIM卡的控制使用外部的IC卡硬件

    28、模块进行具体的硬件层接口控制,在ARM芯片中使用UART4接口,使用串口通讯的方式(应答式握手通讯),通过外部的IC卡硬件模块,间接地控制IC卡数据和SIM卡数据的读取。 IC卡及SIM卡控制模块使用的数据结构Struct ICorSIM_struct U8 TrsFlag; /从主机到卡的数据传送任务标志,高有效 U8 RevFlag; /从卡到主机的数据传送任务标志,高有效 U8 Errorflag; /解析后的数据标志 1:数据出错 0:数据正确 U8 BufferICTSIZE; /从主机传送到卡里的数据 U8 BufferICRSIZE; /从卡里读出传送到主机的数据 IC卡及SIM卡控制的模块的层次划分 通过串口把读到的数据传送到IC卡数据结构的Buffer IC卡及SIM卡控制模块的基本数据流程通过串口把读到的数据传送到IC卡数据结构的Buffer2.2.6 系统走纸控制 系统走纸控制将分为两种场合下的走纸控制,独立走纸控制(按住FEED键后的走纸,)和与打印结合的走纸控制。在本处将主要介绍独立走纸控制。 走纸函数原型如下:


    注意事项

    本文(软件概要设计1.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开