基于嵌入式Linux的多磁控管电源控制系统设计-武汉嵌入式培训-原创-.docVIP

  • 0
  • 0
  • 约3.66千字
  • 约 7页
  • 2017-05-14 发布于江西
  • 举报

基于嵌入式Linux的多磁控管电源控制系统设计-武汉嵌入式培训-原创-.doc

基于嵌入式Linux的多磁控管电源控制系统设计-武汉嵌入式培训-原创-

基于嵌入式Linux的多磁控管电源控制系统设计1、电路硬件整体设计 设计主要包括3个模块:1,人机交换模块(S3C2410芯片扩展电路)、2,功率输出模块(ATmega16L芯片扩展电路)、3,磁控管工作电路。人机交换模块主要用来接收使用者的命令数据,再传递给功率输出模块输出给定功率。同时接收功率输出模块电路中功率反馈回来的信息,使得使用者能对相应信息做出处理。整体框架如图1—1所示: 1.1基于S3C2410X处理器的控制电路设计 ??? 控制系统中采用韩国三星半道体公司的S3C2410X处理器作为主控制芯片。SBC2410X是一款基于ARM920T内核的16/32位RISC嵌入式微处理器,高性价格比,低功耗。应用该芯片作为主控制芯片,并扩展64M SDRAM、64M Nand Flash、1M的Nor Flash、标准串口、用户按建、液晶屏接口、JTAG模块、以太网接口(如图1—2所示)。 图1—2、S3C2410外围扩展 1.2 基于ATmega16L单片机功率输出电路设计 从芯片采用AVR系列单片机ATmega16L。ATmega16具有丰富的片内资源,其中包括:16k字节的在线编程,应用编程Flash程序处理器,512字节EPROM,1K字节SRAM,32个通用工作寄存器,32个通用I/O口,3个定时/数据器,20个中断源,2个可编程串口USART,15种通过软件选择的节电模式。 主从芯片模块之间通过各自串口进行数据的交互。具体上说,主电路模块发送数据给从芯片模块,从芯片根据输入数据产生相应波形,以得到对应的输出功率。同时从芯片应用采集电路模块,采集实际功率反馈到主芯片,由主芯片将数据交给用户管理,必要时候会发出警告信息,达到保护电路的作用。 2、驱动程序的编写和Linux内核的裁剪 设计采用Linux操作系统作为操作平台。从Linux系统发展的过程来看,Linux从最开始就是一个开放的系统,并且遵循着源代码开放的原则,它是一个稳定的网络操作系统,作为嵌入式系统有如下优势。 (1) Linux的源码开放性允许任何人可以修改它的源代码。这样可以降低开发的成本,另一方面可以提高开发成本。(2) Linux支持X86、ARM、MIPS、SH等多种体系结构,并且已经移植到多种硬件平台。(3)Linux有独特的内核模块机制,它可以根据用户需要,实时的将某模块插入到内核或者从内核中移走。(4)linux系统内核精简、高效和稳定,能够充分发挥硬件功能,因此比其他操作系统运行更高效率。(5)Linux是首先支持TCP/IP协议栈的操作系统,它的内核在网络方面非常的完。 因为嵌入式开发的目标环境针对特定的操作系统,因此采用宿主机/目标机的方式,在PC机上装Linux操作系统,建立交叉编译环境arm-gcc。然后为设计系统硬件编写特定驱动程序,主要包括显示模块和串口通讯模块的驱动功能。 2.1液晶显示模块完成人机友好界面的数据驱动,对图形具有显示能力,设计中采用模块化的方法设计驱动程序。液晶显示驱动程序设计的内容如下: (1)首先对驱动程序管理的硬件进行必要的初试化。(2)初始化设备相关的参数。(3)在内核中注册设备。其中涉及到重要的结构体为:static struct fb_ops s3c2410fb_ops;(4)其他的初始化工作。int __init s3c2410fb_init(void);int __init s3c2410fb_setup(char *options)。 2.2串口通讯完成主控芯片发送数据和命令给从芯片,使从芯片完成端口的波形输出,通过输出的波形控制大功率设备的功率。同时大功率设备通过测量电路反馈实际功率给从芯片,从芯片通过串口发送数据给主控芯片显示正确的功率数据,方便用户查看。串口驱动的设计内容: (1)初始化串口相关的硬件设备。涉及到重要的结构体为: static struct tty_driver normal, callout; static struct tty_struct *s3c2410_table[UART_NR]; static struct termios *s3c2410_termios[UART_NR]; static struct *s3c2410_termios_locked[UART_NR]。 (2)注册中断服务程序。接受中断服务程序: static void s3c2410uart_rx_interrupt(int irq, void *dev_id,,struct pt_regs *regs); 发送中断服务程序: static void s3c2410uart_tx_interrupt(int irq, void *dev_id, ,struct pt_regs *reg

文档评论(0)

1亿VIP精品文档

相关文档