2.5 LED指示灯和报警灯
LED指示灯可以用有较强驱动能力的H端口进行驱动,其8个LED指示灯由H端口直接驱动。但H端口不够用,所以扩展了一个TD62083,用于驱动另外8个LED指示灯和报警灯。图5给出LED指示灯和报警灯电路。
3 软件设计
考虑到汽车仪表板对实时性的要求,应用了μC/OS—II操作系统开发软件。μC/OS—II是一个具备现代操作系统特点的RTOS,同时它结构清晰,注解详尽,具有良好的可扩展性和可移植性,广泛地应用于各种架构的微处理器。μC/OS—II的系统组成包含任务调度,任务管理,时间管理和任务间的通信等基本功能。这里仅对μC/OS—II的启动程序和任务的分配作简要介绍,将着眼点放在基于CDC3207G的移植和应用。图6给出软件的组织结构。
3.1 启动代码的设计
嵌入式系统的资源有限,程序通常都是固化在ROM运行。ROM程序执行前,需要初始化系统硬件和软件运行环境,这些工作由汇编语言编写的启动程序完成。启动程序是嵌入式程序的开头部分,与应用程序一起固化在ROM中,并首先在系统上电后运行。它应包含各模块可能出现的所有段类,并合理安排它们的次序。
设计优秀的嵌入式程序关键要有好的启动程序,由于μC/OS—II不是针对特定的硬件进行设计,可以把μC/OS—II内核代码分成4个部分:与处理器无关的代码、与处理器有关的代码、与应用相关的代码以及驱动程序库。为了使μC/OS—II在基于ARM7TDMI的处理器CDC3207G上能够正常的运行,需要实现相应的启动程序以及对μC/OS—II中与处理器相关部分的设计与实现。图7给出启动代码的流程图。
3.2 任务规划
仪表盘的研制在软件部分可以分成若干任务来完成,下面对这个问题进行规划。
(1)启动任务
优先级:10
周期:否
可剥夺:否
作用:初始化各模块,包括UART、定时器、捕捉比较器等
(2)步进电机任务
优先级:8
周期:2 ms
可剥夺:否
作用:驱动步进电机,在启动时需要0位检测
(3)指示器任务
优先级:7
周期:500 ms
可剥夺:否
作用:设置指示灯和提示音。
(4)采集任务
优先级:6
周期:25 ms
可剥夺:否
作用:用于采集各种非中断量如温度、光强等传感器信号并保存
(5)背光任务
优先级:5
周期:250 ms
可剥夺:否
作用:根据周围的光线强度调节仪表盘和LCD的背光
(6)LCD显示任务
优先级:2
周期:100 ms
可剥夺:是
任务:根据总线上采集到的数据更新LCD显示,如温度、公里数等
上述各任务运行在任务级,还有一些任务运行在中断级,比如时钟节拍中断、CAN总线数据采集等。
4 结语
由于Micronas公司的CDC3207G内部集成有步进电机驱动模块、音频控制模块、LCD驱动模块、LED及报警灯驱动端口,CAN总线模块等丰富的资源,因此减少了所需使用的外部驱动器件的数量,大大简化了仪表盘系统的设计。该器件在休眠状态下的功耗非常小(经测试约为19.1μA),有利于降低整个系统的功耗。该仪表板系统各方面表现良好.指针平滑转动,具有极低的功耗,可靠性较高。软件部分应用了uC/OS一Ⅱ操作系统,实时性能较好,能对外部事件作出快速响应。