新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于EraSoC-1000C的家用電腦繡花機(jī)解決方案

基于EraSoC-1000C的家用電腦繡花機(jī)解決方案

作者:■ 江濤 梁彥 馬俊 北京中科億芯信息科技有限公司系統(tǒng)方案部(北京100080) 時(shí)間:2008-04-08 來(lái)源:電子產(chǎn)品世界 收藏

  當(dāng)托馬斯和愛(ài)迪生發(fā)明了電動(dòng)機(jī)后,美國(guó)勝家(Singer)公司于1889年發(fā)明了全世界第一臺(tái)電動(dòng)機(jī)驅(qū)動(dòng)縫紉機(jī)后,同時(shí)也開(kāi)創(chuàng)了縫紉機(jī)工業(yè)的新紀(jì)元。二戰(zhàn)后,工業(yè)縫紉機(jī)制造的霸主地位已逐漸被日本所占據(jù)。進(jìn)入21世紀(jì)后,中國(guó)已成為工業(yè)縫紉機(jī)制造業(yè)的新盟主??墒敲鎸?duì)工業(yè)縫紉機(jī)市場(chǎng)的日趨飽和以及服裝制造全行業(yè)的利潤(rùn)日益下降的窘?jīng)r,各國(guó)的縫紉機(jī)制造商又重新把市場(chǎng)的焦點(diǎn)投向家用市場(chǎng),勝家公司更是希望重現(xiàn)一百年前美國(guó)家庭每戶擁有一臺(tái)腳踏式縫紉機(jī)的輝煌歲月。

本文引用地址:http://butianyuan.cn/article/81321.htm

  如今,美國(guó)勝家、日本兄弟以及中國(guó)飛躍都相繼上市或刺繡機(jī),以期待縫紉機(jī)再次敲開(kāi)老百姓的家門,可受限于芯片技術(shù)的發(fā)展,使得的智能化程度、制造成本、維修方式都難于達(dá)到民品的標(biāo)準(zhǔn)。為此,北京中科億芯信息技術(shù)有限公司使用本公司自主設(shè)計(jì)的EraSoC-1000C處理器芯片所開(kāi)發(fā)的方案,采用了linux2.6內(nèi)核,并添加實(shí)時(shí)補(bǔ)丁(rtlinux)以使其具備更完善的實(shí)時(shí)系統(tǒng)功能;精致的Qtapia圖形系統(tǒng)軟件(以下簡(jiǎn)稱QT),避免了采用WinCE而帶來(lái)的昂貴授權(quán)費(fèi)用,大大降低了電子控制系統(tǒng)的制造成本,使得電腦繡花機(jī)走入家庭變得指日可待。

  系統(tǒng)簡(jiǎn)介

  EraSoC-1000系列芯片作為國(guó)內(nèi)唯一的基于內(nèi)核的高性能SoC,憑借其強(qiáng)大的CPU處理能力、64位浮點(diǎn)運(yùn)算能力,高效的總線架構(gòu)、可實(shí)現(xiàn)低功耗的動(dòng)態(tài)變頻技術(shù)、豐富的片上設(shè)備,已廣泛地應(yīng)用在國(guó)內(nèi)各種嵌入式領(lǐng)域。

  基于EraSoC-1000C的電腦繡花機(jī)系統(tǒng)主要由三個(gè)電機(jī)協(xié)調(diào)工作實(shí)現(xiàn)繡花功能:一個(gè)主軸電機(jī),采用交流伺服交流來(lái)控制針頭的上下運(yùn)動(dòng);X、Y軸步進(jìn)電機(jī)各一個(gè),以實(shí)現(xiàn)工作面的橫向與縱向移動(dòng),系統(tǒng)控制框圖示于圖1。

  硬件設(shè)計(jì)

  根據(jù)圖1所示的整個(gè)系統(tǒng)方案的控制實(shí)現(xiàn)原理,我們把此方案的主控制單元分為上、下位機(jī)結(jié)構(gòu),并由一顆EraSoC-1000C芯片來(lái)完成上、下位機(jī)的協(xié)同工作。

  上位機(jī)結(jié)構(gòu)

  上位機(jī)主要負(fù)責(zé)人機(jī)交互、文件讀取與解析、部分傳感器信號(hào)的處理;

  ·STN/TFT LCD顯示與觸摸控制的實(shí)現(xiàn)

  此部分作為人機(jī)交互的主要平臺(tái),通過(guò)控制觸摸屏來(lái)控制電機(jī)做出相應(yīng)的動(dòng)作就是在此部分實(shí)現(xiàn)的。其中液晶部分對(duì)東芝T6963CFG LCD驅(qū)動(dòng)芯片的控制是由EraSoC-1000C引出的8位數(shù)據(jù)線和5個(gè)GPIO實(shí)現(xiàn)的,本次用的黑白屏,如果需要可以用彩色屏,尺寸也可以任意選擇。而觸摸屏的控制是由EraSoC-1000C的spi信號(hào)線和片選線時(shí)鐘線經(jīng)過(guò)觸摸屏控制器ADV7843實(shí)現(xiàn)的。

  ·傳感器通過(guò)GPIO與EraSoC-1000C的通訊

  該繡花機(jī)一共用到了6個(gè)傳感器分別由EraSoC-1000C提供的6個(gè)可以作為中斷輸入的GPIO控制。這些傳感器分別是x軸方向電機(jī)的傳感器,y軸方向的電機(jī)傳感器,z軸方向的電機(jī)傳感器,測(cè)試?yán)C花針是不是在上針位(此時(shí)針在所有位置的最高點(diǎn))的傳感器,測(cè)試?yán)C花針是不是離開(kāi)布的傳感器,和一個(gè)用于是否繞線的輔助功能的傳感器。

  下位機(jī)結(jié)構(gòu)

  下位機(jī)主要負(fù)責(zé)輸出電機(jī)控制信號(hào)(PWM)、協(xié)同工作以及部分傳感器信號(hào)的處理。

  ·PWM對(duì)交流伺服電機(jī)的控制

  在EraSoC-1000C芯片中一共有六路脈沖寬度調(diào)節(jié)/定時(shí)/計(jì)數(shù)控制器(以下簡(jiǎn)稱PWM)。每一路PWM工作和控制方式完全相同,都有兩路輸入信號(hào)(gate_clk_pad_i, capt_pad_i)和一路脈沖寬度輸出信號(hào) (pwm_o)。由于系統(tǒng)時(shí)鐘高達(dá)60MHz,計(jì)數(shù)寄存器和參考寄存器均32位數(shù)據(jù)寬度,這樣開(kāi)發(fā)人員可通過(guò)編成讓PWM產(chǎn)生各種復(fù)雜的近似線性的輸出信號(hào),非常適合高檔電機(jī)的控制。

  ·步進(jìn)電機(jī)的驅(qū)動(dòng)

  主要采用專門的步進(jìn)電機(jī)驅(qū)動(dòng)芯片,有EraSoC-1000C給出控制信號(hào),控制電機(jī)按照要求運(yùn)動(dòng)。本次設(shè)計(jì)步進(jìn)電機(jī)的驅(qū)動(dòng)芯片用的是UTC公司的L6219,只需用EraSoC-1000C的4個(gè)GPIO控制一個(gè)L6219來(lái)控制電機(jī)的轉(zhuǎn)動(dòng)速度和所轉(zhuǎn)的角度。

  ·主軸電機(jī)的控制

  同步檢測(cè):由1個(gè)外部中斷完成,為了能夠控制直流電機(jī)轉(zhuǎn)動(dòng)速度,用了一個(gè)時(shí)鐘作為計(jì)數(shù)器來(lái)計(jì)數(shù)一個(gè)時(shí)間段的針數(shù),如果快了或者慢了就做出調(diào)整。

  電機(jī)控制:由1個(gè)GPIO完成,此GPIO用來(lái)控制電機(jī)電源的開(kāi)通與關(guān)閉。

  圖2和圖3分別為系統(tǒng)方案的電路構(gòu)造圖和電路板實(shí)圖。

  

  軟件設(shè)計(jì)和系統(tǒng)程序移植

  Bootloader

  EraSoC-1000C的bootloader使用PMON2000。經(jīng)過(guò)裁剪和增加相關(guān)驅(qū)動(dòng)的代碼在EraSoC的官方網(wǎng)站可直接下載。用戶只需按照EraSoC-1000C的用戶手冊(cè)進(jìn)行配置和編譯即可。

  內(nèi)核移植

  EraSoC-1000C使用Linux2.4.17和Linux2.6.18.1內(nèi)核。經(jīng)過(guò)移植后的源代碼可以在EraSoC的官方網(wǎng)站下載。

  交叉編譯工具鏈mipsel-linux-gcc也可以在該網(wǎng)站下載。

  配置內(nèi)核使用erasoc_defconfig配置文件,用戶可根據(jù)自己需要裁剪不用的驅(qū)動(dòng)和文件系統(tǒng)等。

  Qtapia編譯

  QT是目前在linux上使用較廣的一個(gè)圖形系統(tǒng)。在網(wǎng)上下載以下軟件的源碼包之后,按照EraSoC的QT完全安裝手冊(cè),編譯生成QT的可執(zhí)行代碼。

  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

  驅(qū)動(dòng)及fireware開(kāi)發(fā)

  基于EraSoC-1000C的電腦繡花機(jī)方案成功將Linux引入縫紉設(shè)備的控制是一個(gè)業(yè)界領(lǐng)先的技術(shù)突破。以前普遍認(rèn)為L(zhǎng)inux不適合應(yīng)用于像縫制設(shè)備行業(yè)這類對(duì)功能集成度和實(shí)時(shí)性要求高的工控行業(yè),其實(shí)是不正確的。正因?yàn)閼{借EraSoC-1000C芯片處理能力強(qiáng)、總線速度高、設(shè)備集成度高的特點(diǎn),使得系統(tǒng)在運(yùn)行l(wèi)inux時(shí),處理器可以很好的完成實(shí)時(shí)性工作,同時(shí)把任務(wù)調(diào)度、協(xié)議處理、數(shù)據(jù)交換、人際交互交由linux來(lái)處理,用戶會(huì)發(fā)現(xiàn)整個(gè)系統(tǒng)開(kāi)發(fā)過(guò)程會(huì)變得輕松自如。

  X,Y軸步進(jìn)電機(jī)驅(qū)動(dòng)開(kāi)發(fā)

  X和Y軸步進(jìn)電機(jī)驅(qū)動(dòng)的原理是:每隔一定的時(shí)間間隔通過(guò)GPIO發(fā)送一個(gè)步進(jìn)信號(hào),電機(jī)行走一個(gè)相位。而時(shí)間間隔的大小通過(guò)EraSoC-1000C的實(shí)時(shí)時(shí)鐘來(lái)控制,時(shí)間計(jì)數(shù)一到,實(shí)時(shí)時(shí)鐘產(chǎn)生一個(gè)中斷,CPU在中斷處理并向步進(jìn)電機(jī)發(fā)送一個(gè)步進(jìn)命令。X,Y軸電機(jī)的速度就通過(guò)這些時(shí)間間隔的大小調(diào)整。當(dāng)需要加速時(shí),減小每次的時(shí)間間隔,反之就是減速。X和Y軸驅(qū)動(dòng)程序里分別注冊(cè)了一個(gè)時(shí)鐘中斷處理程序,并在驅(qū)動(dòng)里提供一個(gè)寫(xiě)函數(shù)控制實(shí)時(shí)時(shí)鐘的計(jì)時(shí)大小和開(kāi)始計(jì)時(shí)。當(dāng)繡花程序啟動(dòng),通過(guò)該驅(qū)動(dòng)的寫(xiě)函數(shù),啟動(dòng)實(shí)時(shí)時(shí)鐘計(jì)時(shí)。當(dāng)預(yù)定時(shí)間到達(dá),中斷產(chǎn)生,中斷處理程序驅(qū)動(dòng)電機(jī)步進(jìn)一個(gè)相位,此時(shí)根據(jù)一個(gè)信號(hào)量來(lái)確定是否繼續(xù)要驅(qū)動(dòng)電機(jī),如果需要繼續(xù)驅(qū)動(dòng),則再次初始化實(shí)時(shí)時(shí)鐘的計(jì)時(shí)。

  void x_timer_start(unsigned int time) //初始化x軸的實(shí)時(shí)時(shí)鐘,time的單位9600秒
  {
  era_writel((time * 32768) / 9600 +
   era_readl(ICTRTC_READ0),
   ICTRTC_MATCH1);
  }
  static irqreturn_t x_step_irq(int irq, void *_host, struct pt_regs *regs)
  {
  struct era_host *host = _host;
  x_step_go(); //x軸電機(jī)步進(jìn)一個(gè)相位
  if(x_go) //如果x軸需要繼續(xù)運(yùn)轉(zhuǎn),該
   變量是全局變量,由主函數(shù)改變值
  {
  x_time = x_get_time(host);//計(jì)算下次
      步進(jìn)的時(shí)間間隔
  x_timer_start(x_time);
  }
  }

  Z軸電機(jī)的驅(qū)動(dòng)開(kāi)發(fā):

  Z軸電機(jī)使用EraSoC-1000C的PWM進(jìn)行控制。EraSoC-1000C的PWM驅(qū)動(dòng)采用Linux通用的PWM驅(qū)動(dòng)接口,所以我們只要在應(yīng)用層開(kāi)發(fā)相應(yīng)的控制程序就可以了。

  例如,EraSoC的PWM驅(qū)動(dòng)提供一個(gè)write函數(shù)給用戶層,用戶通過(guò)該函數(shù)的參數(shù)可以控制PWM的輸出方波:

  ssize_t  pwm_write (struct file *filp, const char *buf, size_t count,loff_t *f_pos)
  {
  #define CLK_PER_NS 48     //48Mhz
       bus freq
  static unsigned char pBuf[3];
  /*pBuf[0]高電平時(shí)間(ns),
  pBuf[1]低電平時(shí)間(ns),
  pBuf[2]是否使能PWM電平輸出*/
  copy_from_user(pBuf,buf,3);
  era_writel(0, RPTC_CTRL); //停止PWM
  if(pBuf[2] & GO)      //pBuf[2], 是否使
       能PWM輸出
  {
  era_writel(pBuf[0] * CLK_PER_NS, RPTC_HRC);
  era_writel(pBuf[1] * CLK_PER_NS, RPTC_LRC);
  era_writel(OE, RPTC_CTRL); //使能
       PWM方波輸出
  }
  return count;
  }

  顯示屏驅(qū)動(dòng)

  EraSoC-1000C的Linux內(nèi)核包含標(biāo)準(zhǔn)的framebuffer接口的LCD驅(qū)動(dòng)程序,用戶也只需按照標(biāo)準(zhǔn)的控制LCD的函數(shù)接口編寫(xiě)應(yīng)用程序。通過(guò)open(“/dev/fb0, O_RDWR”)打開(kāi)LCD顯示設(shè)備,然后通過(guò)mmap函數(shù)將顯存映射到用戶空間,用戶現(xiàn)在就可以通過(guò)簡(jiǎn)單的讀寫(xiě)來(lái)控制顯存,以達(dá)到控制LCD顯示的目的。

  觸摸屏驅(qū)動(dòng)

  EraSoC-1000C的Linux內(nèi)核也已經(jīng)包含觸摸屏的標(biāo)準(zhǔn)驅(qū)動(dòng),采用SPI接口。用戶只需在編譯QT的時(shí)候?qū)⒃撚|摸屏驅(qū)動(dòng)加入,就可以直接在QT下使用。

  U盤驅(qū)動(dòng)

  EraSoC-1000C的U盤驅(qū)動(dòng)也是標(biāo)準(zhǔn)的Linux驅(qū)動(dòng)。用戶只需簡(jiǎn)單的使用mount命令將U盤掛載,然后通過(guò)open, read, write等標(biāo)準(zhǔn)函數(shù)對(duì)U盤進(jìn)行讀寫(xiě)。

  NAND Flash驅(qū)動(dòng)

  EraSoC-1000C采用最新的Yaffs2文件系統(tǒng)管理NAND Flash。用戶接口也是十分的簡(jiǎn)單,如同訪問(wèn)其他文件系統(tǒng)一樣,可直接通過(guò)讀寫(xiě)函數(shù)訪問(wèn)。

  蜂鳴器,斷線,壓腳,繞線檢測(cè)等驅(qū)動(dòng)

  這些功能均使用GPIO實(shí)現(xiàn),我們?yōu)檫@些功能分別實(shí)現(xiàn)了驅(qū)動(dòng),在驅(qū)動(dòng)里提供一個(gè)讀函數(shù)來(lái)控制。用戶只需簡(jiǎn)單的使用open函數(shù)打開(kāi)設(shè)備,就可以使用read函數(shù)讀取這些傳感器的狀態(tài)。

  int erasoc_gpio_read(int signal)
  {
  if(signal >= 96)
  return 0;
  if(signal >= 64)
  {
  return ((1 << (signal-64)) & era_readl(ERASOC_GPIO2_DATRD)) ? 1 : 0;
  }
  else if(signal >= 32)
  {
  return ((1 << (signal-32)) & era_readl(ERASOC_GPIO1_DATRD)) ? 1 : 0;
  }
  else
  {
  return ((1 << signal) & era_readl(ERASOC_GPIO0_DATRD)) ? 1 : 0;
  }
  }
  ssize_t eragpio_file_read(struct file *filp, char __user *buf, size_t count, loff_t *ppos)
  {
  char val;
  val = erasoc_gpio_read(GPION);
  copy_to_user(buf, &val, 1);
  return count;
  }
  GPION是各GPIO的編號(hào)。

  上層應(yīng)用

  EraSoC-1000C的上層應(yīng)用建立于基于Linux的軟件平臺(tái)Qtapia上。Qtapia是Linux軟件廠商挪威奇趣科技公司(Trolltech)專為手機(jī)等移動(dòng)設(shè)備開(kāi)發(fā)的產(chǎn)品,目前國(guó)內(nèi)排名前十的手機(jī)生產(chǎn)商有7個(gè)已經(jīng)選擇了奇趣作為嵌入式Linux平臺(tái)的合作伙伴。

  也正是因?yàn)镼tapia的使用環(huán)境已在不知不覺(jué)中被消費(fèi)大眾所熟悉,我們特意在此解決方案里采用了類似手機(jī)操作的圖像化用戶界面,就是為了讓消費(fèi)者在使用家用電腦繡花機(jī)時(shí)增加互動(dòng)的體驗(yàn),使得操作縫紉機(jī)不再是專業(yè)人員才有的技能。

  用戶可以管理要刺繡的圖案文檔,系統(tǒng)也通過(guò)主窗口顯示和觸摸屏接收用戶輸入。當(dāng)用戶通過(guò)觸摸屏點(diǎn)擊窗口上的按鈕,應(yīng)用程序根據(jù)這些按鈕分別調(diào)用底層的驅(qū)動(dòng)程序完成繡花,繞線,讀取花樣等等功能。

  結(jié)語(yǔ)

  作為第一臺(tái)使用國(guó)產(chǎn)高性能處理器的電腦繡花機(jī)解決方案,中科億芯的研發(fā)團(tuán)隊(duì)始終把“科技以人為本”的理念放在首位,那就是用業(yè)界領(lǐng)先的技術(shù)去創(chuàng)造大眾可接受的電子產(chǎn)品。事實(shí)已證明,一顆EraSoC-1000C芯片可替代兩顆基于ARM7內(nèi)核的國(guó)外處理器或者是工控領(lǐng)域的DSP,同時(shí)也可節(jié)省相當(dāng)數(shù)量的外設(shè)芯片。而且EraSoC-1000C的二次開(kāi)發(fā)潛能巨大,其所具備的高速處理能力和豐富的片上設(shè)備,將帶給縫制設(shè)備行業(yè)的工程師們無(wú)限的創(chuàng)意空間,讓國(guó)產(chǎn)縫制設(shè)備能夠真正意義上的國(guó)產(chǎn)化,讓這些設(shè)備都跳動(dòng)著一顆“中國(guó)芯”!



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉