微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于μC/OS-II嵌入式操作系统的TCSC实验控制器前置单元设计

基于μC/OS-II嵌入式操作系统的TCSC实验控制器前置单元设计

时间:04-06 来源:互联网 点击:

  • 时向中断端输出高电平脉冲引发中断。

     采样保持电路

      保持器共6 路,其中3 路测电压, 3 路测电流。采用LF398芯片,它有8个引脚, 1和4脚接电源,范围为( ±5 ~ ±18) V之间, 3脚为输入端,接电力线经变压后的电压或经电流互感器转化的电压, 2脚接1 kΩ电阻,用于调节漂移电压。7脚接参考电压, 8 脚接控制信号,控制芯片的采样保持状态。在这里通过S3C44B0X的通用I/O 引脚GPF0-5 分别控制6 路采样保持器的8脚。6脚外接保持电容,这里考虑到实时性的要求,因此选择较小的电容值,取C1 = 0.001μF,此时采样时间不超过10μs,同时可以满足8位的采样精度。

     晶闸管触发电路

      触发电路共3 组分别接A, B, C三相,如图3 所示,两个74LS04反向门用来增加驱动能力,输入端接44B0X的通用IO 口GPE4-6引脚。脉冲变压器N1 和N2一方面传递触发脉冲,另一方面对强弱电之间起到很好的隔离作用。CPU 发出触发脉冲信号之后,两个反向可控硅的触发端会同时有触发信号,但由于某一时刻加在两个可控硅上的电压只有一个满足导通条件,故只有一个可控硅会导通。

     软件设计

      前置单元的软件要完成和上位机通讯、AD 采样和晶闸管触发3项功能。 其中AD采样速率很高、晶闸管触发实时性很强,所以这两项功能必须采用硬件定时器来保证其实时性,因此设计使用中断服务程序( Interrup t Service Routine, ISR ) 来完成这两项功能。USB驱动程序由开发板附带,通讯的功能主要通过μC /OS-Ⅱ中的任务来完成(当然, USB 中断处理也是必不可少的)。USB 任务和各ISR 之间的通讯通过μC /OS-Ⅱ的同步机制(信号量、消息队列)和全局变量来完成。 所有软件均是在ARM公司自己的开发环境ADS下实现的,ADS1。2有自己的C, C + +语言编译器及库文件,有GU I界面的调试器AXD和命令行界面的调试器armsd以及GU I界面的编辑器Code WarriorIDE,这为开发人员提供了极大的便利。 调试工具用的是JTAG仿真器, JTAG仿真器通过JTAG边界扫描口与ARM CPU核通信,属于完全非插入式(即不使用片上资源)调试,它无需目标存储器,不占用目标系统的任何端口,是目前采用最多的一种调试方式。

     嵌入式实时操作系统μC /OS-II介绍

      对于复杂的应用,直接在裸机上开发运行的前后台系统开发、维护和扩展都很困难,嵌入式操作系统应运而生,其最大的特点就是处理多任务,而且在工控领域大多实时性要求较强,而μC /OS-II迎合了这些特点。μC /OS-II支持64个任务,每个任务的优先级必须是不同的,调度算法总是让处于就绪状态的最高优先级任务先执行, 并提供了信号量( Semaphore) 、邮箱(Mailbox)和消息队列(Message Queue)等多种通讯同步原语。每个任务都处在以下5种状态之一的状态下,这5种状态是休眠态(Dormant) ,就绪态(Ready) 、运行态(Running) 、挂起态(Waiting)和被中断态( Interrup ted)。μC /OS-II中全部系统调用的执行时间是可确定,其系统调用的执行时间不依赖于应用任务的多少,这也是其实时性的表现。

     中断服务程序( ISR)的设计

      AD采样和晶闸管触发这两项功能由中断服务程序( ISR)来完成。根据μC /OS-Ⅱ要求, ISR开始时需调用OSIntEnter ( )函数通知μC /OS-Ⅱ系统进入了ISR,ISR结束时需调用OSIntExit ( )函数通知μC /OS-Ⅱ进行进程调度。

      AD采样模块有3 个ISR,分别是: 定时器4 ISR(产生周期性的采样保持信号) ,定时器5 ISR (产生16μs的延迟,以符合S3C44B0X的多路选择器对切换时间的要求) ,AD ISR (读取AD采样结果,并进行相应的操作)。系统必须在两次Timer4中断之间完成6次AD采样工作。晶闸管触发模块有3组、每组2个ISR。每组的2个ISR分别为一个过零检测ISR和一个定时器ISR,共同控制一相的晶闸管触发。

     μC /OS-II任务设计

      前置单元通过PD IUSBD12 的Endpoint1 ( PacketSize = 16 B )接受上位机的命令,返回命令的执行状态,通过PD IUSBD12的Endpoint2 ( Packet Size = 64 B)返回AD 采样的结果。 这通过两个函数TaskUsbEp1RxDone和TaskUsbEp2SendData 可以实现, 同时通过TaskUsbSetupPacket函数来处理主机发来的请求。我们设置PD IUSBD12 的Endpoint1 ( Generic Endpoint) 工作在Interrup t 模式, Endpoint2 (Main Endpoint)工作在Bulk模式,则:

    1) TaskUsbEp1RxDone

      TaskUsbEp1RxDone为前置机接受上位机采样或置触发角的任务,其工作流程下所示。

      先用OSSemPend ( )等待上位机发送命令,若上位机发来的COMM_START_AD命令,则:

    若TOTAL _ SAMPLE _ TIMES! = 0, 则通过Endpoint1返回错误信息给上位机,否则置AD_BUFF_P =0, TOTAL _ SAMPLE _ TIMES =所需采样的周期数×100,开启Timer4 (采

  • Copyright © 2017-2020 微波EDA网 版权所有

    网站地图

    Top