基于ARM44B0x的信号发射机控制器设计
1.前言
船舶上使用的信号发射机是连续工作的,所以需要一个控制器对发射机的工作状态进行监控,常见的是用单片机作控制器的内核,但由于32位微处理器具有更好 的精度和可靠性且低成本低功耗,所以在工业控制领域的应用日益广泛。采用嵌入式的32位微处理ARMS3C44B0x作为控制器的内核,设计的控制器将比 用单片机作内核的处理器具有更全面的功能和更好的使用性能。
发射机控制器的主要功能是对多路模拟量和开关量的数据采集和处理监控发射机的工作状态;控制器控制发射机同时控制器又受上位机的控制,它要能在任意时刻准备好接收从上位机串口、网口发来的数据,它们之间的相对关系如图:
图1 控制器系统结构图
上位机向控制器发送数据从而实现对控制器的控制,首先上位机送出机号,再送命令字;控制器也要向上位机上传数据完成通讯应答,它首先解析机号是否与自己 的机号一致,若一致则再解析命令字,根据命令字来送出上传的数据完成应答;若不一致则不再作进一步的数据解析。它们的通讯方式有串口通讯和以太网通讯两 种;控制器和发射机的数据传输主要有模拟量的采集和开关量的输入输出;另外,人机接口模块实现发射机工作过程中的参数的实时显示和参数修改和查询。实时采 集的数据是由AD采样得到的,需要注意的是S3c44B0没有采样保持电路所以通道的切换频率不能超过100Hz,在ADC开启路时都需要一个延时,利用 这段时间来对上一路进行滤波而提高程序的效率。整个采样的过程可以描述为开启当前通道,然后滤波上次采样的通道(中位值平均滤波法)。
2.开关机描述及软件设计
图2 传口通讯流程图
项目的开发首先要完成开关机功能、人机接口功能模块、通讯模块的程序设计和调试,先讨论开关机的程序设计;用户要求控制器上键的功能是能编辑的即每一个 键的功能不固定,可以通过PC机修改;开机时要按优先级顺序由高到低输出一系列的动作,每个动作都有可编辑的优先级(通过PC机编辑),一个动作输出后可 能会引起其它同一优先级水平动作的发生,这就是动作的关联。在开当前优先级动作时必须要检测更高优先级动作的状态,遇到故障需要进行故障处理。针对上述的 较复杂的需求设计如下数据结构:
图3 开机流程
typedef struct{
char *pName; //动作名称
char FunctionID; //动作(功能)编号
char Priority; //动作优先级
short KeepTime1; //等待前一个输出动 作稳定需要的时间
short DelayTime1;//下一动作执行前的延时
short DelayTime2; //当检测模拟量或开关量不正常时需要重复检测的延时
short RepeatNum;//有故障重新检测的次数
}OutputAction;
把所有的功能依次编号,把这个编号赋给某个键则该键就具备了该功能,功能的编辑通过修改OutputAction.FunctionID的值实现;每个 键最多有16个功能,最少没有功能;在每一个键的所有功能都是轮循有效的,用一个循环链表来存放功能编号,始终是处于表头位置编号对应的功能有效,每个功 能(动作)只能归属于一个键,在每次开机时首先由串口把已定义好的键功能送到控制器并烧写到固定位置的ROM中;动作优先级的编辑是通过修改结构体中 OutputAction.Priority的值实现;开机时再从ROM中把这些数据读出来,若上位机没有进行键功能编辑就按默认形式进行,需要指出的是 关机时,按和开机向反的顺序依次关闭所有的输出动作。
开机时根据固定位置ROM中的内容或按默认的定义获取动作的属性,①首先搜索优先 级最高的动作编号,然后根据不同的延时把这些动作依次送出;②把优先级降一级,检测比当前优先级更高的所有的输入、输出的状态是否正常如果正常则送出当前 优先级的动作,再重复②的过程,否则进入故障处理程序,如果处理故障成功则继续重复②的过程,否则关机并返回开机失败信息。开机流程图如图3所示。
在软件设计中的一个特色就是利用I/O端口来模拟IIC总线来读取键值,其总体思路是用两个端口一个模拟IIC的时钟信号,另一个模拟IIC的数据线。 需要注意的是在配制I/O端口时,时钟线始对应的端口终是输出口而数据线端口是不确定的。通过给端口置位和清零结合延时来模拟IIC的数据传输协议。在调 试的过程中发现,这种方法能很好的完成键值
- 用ARM和FPGA搭建神经网络处理器通信方案(07-19)
- ARM与神经网络处理器通信方案的设计实现(07-10)
- LT3751如何使高压电容器充电变得简单(08-12)
- 三路输出LED驱动器可驱动共阳极LED串(08-17)
- 浪涌抑制器IC简化了危险环境中电子设备的本质安全势垒设计(08-19)
- 严酷的汽车环境要求高性能电源转换(08-17)