基于EraSoC-1000C的电脑绣花机解决方案
系统简介
EraSoC-1000系列芯片是基于龙芯内核的高性能SoC(System on Chip),凭借其较为强大的CPU处理能力、64位浮点运算能力、高效的总线架构、可实现低功耗的动态变频技术以及丰富的片上设备,已广泛地应用在国内各种嵌入式领域。
基于EraSoC-1000C的电脑绣花机系统主要由三个电机协调工作来实现绣花功能。三个电机的协调原理是:一个主轴电机,采用交流伺服交流来控制针头的上下运动;X、Y轴步进电机各一个,以实现工作面的横向与纵向移动(系统控制流程图参见图1)。
硬件设计
根据图1所示的整个系统方案的控制实现原理,把此方案的主控制单元分为上、下位机结构,并由一颗EraSoC-1000C芯片来完成上、下位机的协同工作:
上位机结构
上位机主要负责人机交互、文件读取与解析、部分传感器信号的处理;
STN/TFT LCD显示与触摸控制的实现
这部分是人机交互的主要平台,通过控制触摸屏来控制电机做出相应的动作就是在此实现的。其中液晶部分对东芝T6963CFG LCD驱动芯片的控制由EraSoC-1000C引出的8位数据线和5个gpio实现,本次用的黑白屏,如果需要可以用彩色屏,尺寸也可以任意选择。而触摸屏的控制由EraSoC-1000C的spi信号线和片选线时钟线经过触摸屏控制器ADV7843实现。
传感器通过GPIO与EraSoC-1000C的通讯
该绣花机共用到6个传感器,分别由EraSoC-1000C提供的6个可以作为中断输入的gpio控制。这些传感器分别是:x轴方向电机的传感器、y轴方向的电机传感器、z轴方向的电机传感器、测试绣花针是不是在上针位的传感器(此时针在所有位置的最高点)、测试绣花针是不是离开布的传感器以及一个用于是否绕线的辅助功能的传感器。
下位机结构
下位机主要负责输出电机控制信号(PWM)、协同工作以及部分传感器信号的处理:
PWM对交流伺服电机的控制
在EraSoC-1000C芯片中共有六路脉冲宽度调节/定时/计数控制器(以下简称PWM),每一路PWM工作和控制方式完全相同,都有两路输入信号(gate_clk_pad_i, capt_pad_i)和一路脉冲宽度输出信号(pwm_o)。由于系统时钟高达60MHz,计数寄存器和参考寄存器均32位数据宽度,这样开发人员可通过编程让PWM产生各种复杂的近似线性的输出信号,非常适合高档电机的控制。
步进电机的驱动
主要采用专门的步进电机驱动芯片,由EraSoC-1000C给出控制信号,控制电机按照要求运动。本次设计步进电机的驱动芯片用的是UTC公司的L6219,只需用EraSoC-1000C的4个gpio控制1个L6219来控制电机的转动速度和所转的角度。
主轴电机的控制
同步检测:由1个外部中断完成,为了能够控制直流电机转动速度,用一个时钟作为计数器来计数一个时间段的针数,可根据快慢做出调整。
电机控制:由1个gpio完成,此gpio用来控制电机电源的开通与关闭。
图2和图3分别为系统方案的电路构造图和电路板实图。
软件设计和系统程序移植
Bootloader:
EraSoC-1000C的bootloader使用PMON2000。经过裁剪和增加相关驱动的代码在EraSoC的官方网站可直接下载。用户只需按照EraSoC-1000C的用户手册进行配置和编译即可。
内核移植
EraSoC-1000C使用Linux2.4.17和Linux2.6.18.1内核。经过移植后的源代码可以在EraSoC的官方网站下载,交叉编译工具链mipsel-linux-gcc也可以在该网站下载。
配置内核使用erasoc_defconfig配置文件,用户可根据自己需要裁剪不用的驱动和文件系统等。
Qtapia编译
QT是目前在linux上使用较广的一个图形系统。在网上下载以下软件的源码包之后,按照EraSoC的QT完全安装手册,编译生成QT的可执行代码。
qt-embedded-2.3.7.tar.gz
qt-x11-2.3.2.tar.gz
qtopia-free-1.7.0.tar.gz
tmake-1.11.tar.gz
e2fsprogs-1.35.tar.gz
驱动及fireware开发
基于EraSoC-1000C的电脑绣花机方案将Linux引入缝纫设备的控制是一项突破,以前普遍认为Linux不适合应用于诸如缝制设备行业这类对功能集成度和实时性要求高的工控行业,这其实是不正确的。正因为凭借EraSoC-1000C芯片处理能力强、总线速度高、设备集成度高的特点,使得系统在运行Linux时,处理器可以很好地完成实时性工作,同时把任务调度、协议处理、数据交换、人机交互交由Linux来处理,整个系统开发过程会变得更为轻松。
X,Y轴步进电机驱动开发
X、Y轴步进电机驱动的原理是:每隔一定的时间间隔通过GPIO发送一个步进信号,电机行走一个相位。时间间隔的大小通过EraSoC-1000C的实时时钟来控制,时间计数一到,实时时钟产生一个中断,CPU在中断处理并向步进电机发送一个步进命令。X、Y轴电机的速度就通过这些时间间隔的大小调整。当需要加速时,减小每次的时间间隔,反之就是减速。X和Y轴驱动程序里分别注册了一个时钟中断处理程序,并在驱动中提供一个写函数控制实时时钟的计时大小和开始计时。当绣花程序启动,通过该驱动的写函数,启动实时时钟计时。当预定时间到达,中断产生,中断处理程序驱动电机步进一个相位,此时根据一个信号量来确定是否继续要驱动电机,如果需要继续驱动,则再次初始化实时时钟的计时。
Z轴电机的驱动开发
Z轴电机使用EraSoC-1000C的PWM进行控制。EraSoC-1000C的PWM驱动采用Linux通用的PWM驱动接口,所以只需在应用层开发相应的控制程序即可。
例如,EraSoC的PWM驱动提供一个write函数给用户层,用户通过该函数的参数可以控制PWM的输出方波:
显示屏驱动
EraSoC-1000C的Linux内核包含标准的framebuffer接口的LCD驱动程序,用户也只需按照标准的控制LCD的函数接口编写应用程序。通过open("/dev/fb0, O_RDWR") 打开LCD显示设备,然后通过mmap函数将显存映射到用户空间,用户就可以通过简单的读写来控制显存,以达到控制LCD显示的目的。
触摸屏驱动
EraSoC-1000C的Linux内核也已经包含触摸屏的标准驱动,采用SPI接口。用户只需在编译QT的时候将该触摸屏驱动加入,就可以直接在QT下使用。
U盘驱动
EraSoC-1000C的U盘驱动也是标准的Linux驱动。用户只需使用mount命令将U盘挂载,然后通过open, read, write等标准函数对U盘进行读写。
NAND Flash驱动
EraSoC-1000C采用最新的Yaffs2文件系统管理NAND Flash。用户接口也很简单,如同访问其他文件系统一样,可直接通过读写函数访问。
蜂鸣器,断线,压脚,绕线检测等驱动
这些功能均使用GPIO实现,为这些功能分别实现了驱动,在驱动里提供一个读函数来控制。用户只需使用open函数打开设备,就可以使用read函数读取这些传感器的状态。
int erasoc_gpio_read(int signal)
上层应用
EraSoC-1000C的上层应用建立于基于Linux的软件平台Qtapia上。Qtapia是Linux软件厂商挪威奇趣科技公司(Trolltech,现已被诺基亚收购)专为手机等移动设备开发的产品。在此解决方案中采用类似手机操作的图像化用户界面,可使消费者在使用家用电脑绣花机时增加互动的体验,使得操作缝纫机不再是专业人员才有的技能。
用户可以管理要刺绣的图案文档,系统也通过主窗口显示和触摸屏接收用户输入。当用户通过触摸屏点击窗口上的按钮,应用程序根据这些按钮分别调用底层的驱动程序完成绣花、绕线以及读取花样等功能。
结束语
事实已证明,一颗EraSoC-1000C芯片可替代两颗基于ARM7内核的国外处理器或者是工控领域的DSP,同时也可节省相当数量的外设芯片。EraSoC-1000C的二次开发潜能巨大,其所具备的高速处理能力和丰富的片上设备,将带给缝制设备行业的工程师们无限的创意空间。
linux操作系统文章专题:linux操作系统详解(linux不再难懂)
评论