《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > I2C總線在大幅面高速彩色噴繪機中的應用
I2C總線在大幅面高速彩色噴繪機中的應用
來源:微型機與應用2011年第7期
靳祥陸,劉 晉,張 平,王政林,薛凱方
(遼寧師范大學 計算機與信息技術學院,遼寧 大連 116081)
摘要: 介紹了I2C總線的結構、工作原理和數據傳輸方式,詳細討論了基于I2C總線的大幅面高速彩色噴繪機軟硬件設計。經研究測試,系統能夠噴繪出高精度彩色圖像,達到了預期要求。
Abstract:
Key words :

摘  要: 介紹了I2C總線的結構、工作原理和數據傳輸方式,詳細討論了基于I2C總線的大幅面高速彩色噴繪機軟硬件設計。經研究測試,系統能夠噴繪出高精度彩色圖像,達到了預期要求。
關鍵詞: I2C總線;噴繪機;ATmega8EEPROM;SAA1064

 隨著大型噴繪機應用領域的拓展與普及,人們對噴繪產品的質量要求也越來越高。為了提高噴繪產品的清晰度,本系統采用分組噴頭,每組6色或者8色,共3組~6組可選。考慮到通信效率和電路的簡化設計,采用簡單實用的I2C總線實現主控制系統與多噴頭之間的數據傳輸,同時基于I2C總線與SAA1064驅動芯片擴展了4個數碼管用于顯示和校驗。
1 I2C總線的概念
 I2C總線是Philips公司推出的芯片間串行數據傳輸總線,軟硬件協議十分巧妙,用兩根線(SDA、SCL)即可實現完善的全雙工同步數據傳輸,能夠十分方便地構成單主機系統或者多主機系統[1]。任何一個具有I2C接口的器件,不論其功能差別有多大,都能通過串行數據線SDA和串行時鐘線SCL連接到I2C總線上[2]。從而簡化了系統設計的復雜性,提高了系統的抗干擾能力,給用戶設計應用系統帶來了極大地方便。
 在I2C總線上的每一個器件都有一個唯一的識別地址,器件之間的通信采用主從方式,主機與從機之間的通信是相互的,但主從關系并不持久,由數據傳輸的方向決定。發送并控制數據傳輸的器件稱為主機,此時在I2C總線上任何被尋址的器件都稱為從機。一般主機負責起始和終止信號的產生,當主機發送了起始信號(SCL為高電平時,SDA產生一個下降沿)后,再發送從機地址來選擇需要通信的器件。從機地址有7位和10位兩種,本文僅介紹7位地址的尋址方式。尋址信號由一個字節組成,高7位為器件的地址,最低位為方向位,用來表明數據傳輸的方向。當方向位為“0”時表明主機對從機的寫操作;為“1”時表明主機對從機的讀操作。
 每一個從機在收到尋址信號后都與自己的器件地址進行匹配,匹配成功后要向主機發送一個應答信號(ACK),主機收到應答信號后將按照一定的時序開始與從機通信。若從機不能響應尋址或需要終止傳輸過程,從機必須在SDA上輸出高電平。主機檢測到異常情況后產生一個終止信號或者起始信號。
2 基于I2C總線的硬件設計
 本噴繪機系統采用的是主控制系統板(ARM板)級聯多個噴頭控制板的結構。由于各噴頭的參數和各顏色油墨的參數不同,在系統初始化時要靠I2C總線逐個配置噴頭的容積電壓和油墨的溫度電壓補償表(T-V表) [3]。
噴頭的驅動電壓取決于噴頭的容積電壓和當前噴頭的溫度,噴頭溫度的變化影響著所盛油墨的粘滯度。為了實現穩定點火,使噴頭所噴出的墨點大小一致,達到提高噴繪產品的精度,需要隨著溫度的變化及油墨溫度電壓補償表實時改變噴頭的驅動電壓。綜合多方面的考慮,使用支持I2C總線的ATmega8來驅動噴頭。
在噴繪機的研發和使用過程中,設置一個可視模塊不僅提高研發的速度而且給用戶的使用帶來了方便。為了進一步簡化電路設計,采用SAA1064芯片驅動數碼管。SAA1064是一種支持I2C協議的數碼管驅動芯片,在采用動態模式狀態下,最多可以支持4只數碼管同時顯示。基于I2C通信的整體結構如圖1所示。

 

 

 I2C總線支持尋址工作,需要為每個噴頭控制板設定唯一的地址。可以通過軟件編程的方法設置噴頭板的地址,考慮到噴繪機的批量生產,不可能為每一個噴頭控制板燒寫不同的程序,采用電路焊接的方式為噴頭板設置唯一的地址,在ATmega8上留出3個引腳,通過選擇是否焊接0 Ω電阻來區分地址。焊接為輸入0,不焊接為輸入1。其中000為公用I2C地址,地址111留作備用,這樣一組噴頭中有001~110共6個從機地址可選,能夠滿足系統需要。
 數碼管驅動芯片SAA1064的器件從地址由高四位固定地址和低四位可編程地址組成。其中高四位器件地址固定為0111,低四位可編程地址由芯片引腳ADR的不同連接方式和讀/寫位決定[4]。在SAA1064中有5個寄存器單元,分別為1個控制寄存器和4個顯示寄存器,其中控制寄存器控制數碼管的亮度,動、靜態模式及位亮、暗顯示;4個顯示寄存器存儲要顯示的數據。
 作為I2C總線器件,SAA1064的數據操作遵循I2C協議的要求。其數據操作格式如圖2所示。

 表中S表示起始信號,P表示終止信號,A表示應答信號。SLAWR為SAA1064在寫模式時的器件地址,SUBADR為器件控制寄存器地址,COM為控制命令。由于SAA1064內部有一個增量控制器,在通過SDA線向其發送控制寄存器地址后,控制命令字和要顯示的數據可依次寫入相應的寄存器中[5]。
3 基于I2C總線的軟件設計
 系統上電初始化期間,主控制系統根據噴頭所盛油墨顏色將油墨的溫度電壓補償表和噴頭容積電壓等一系列參數下載到噴頭控制板上,存儲在ATmega8內部512 B的EEPROM中。在EEPROM中數據的存儲格式規定為:在地址0處存儲油墨的顏色;地址1處存儲噴頭的型號;地址2~3處存儲噴頭的容積電壓;地址4~5處存儲噴頭偏移電壓;地址6~7處存儲A/D電壓調整標準值Vset;地址8~9處存儲A/D電壓調整值ADset;地址10~400存儲溫度電壓補償表。EEPROM的地址是A/D轉換值減去300,地址內存儲的是A/D對應電壓偏差值的10倍,其中以8位補碼進行表示。例如,地址為100的內存里存儲的是FF,地址為105的內存存儲的值是0F,其表示的是A/D轉換值為400時對應的電壓偏差值為-0.1 V,A/D轉換值為405時對應的電壓偏差值為+1.5 V;地址401~507留作備用;地址508~509存儲A/D校驗0 V電壓;地址510~511存儲A/D校驗1.23 V電壓。
3.1 噴頭通信模塊
 ATmega8提供了實現標準兩線串行通信的硬件接口TWI(即I2C總線,以下稱為I2C),支持主機/從機模式,數據傳輸率最高可達400 kHz。其I2C接口是面向字節和基于中斷的,在所有總線事件后,如收到一個字節或發送了一個起始信號等,都將產生一個I2C中斷。由于I2C接口基于中斷,因此I2C接口在字節傳送和接收過程中,不需要應用程序的干擾,由其內部寄存器自動控制。在ATmega8中有5個I2C寄存器:(1)TWBR是I2C波特率寄存器用于產生和提供SCL引腳上的時鐘信號;(2)TWCR是I2C的控制寄存器,負責產生I2C的應答、起始、終止信號和控制中斷等;(3)TWSR是I2C的狀態寄存器,反映了I2C的邏輯狀態和總線狀態;(4)TWDR是I2C的數據寄存器,用于存儲要發送的數據或接收到的數據;(5)TWAR是I2C的地址寄存器存放需要通信的從機地址[6]。
I2C中斷服務程序負責與主程序進行通信。在每次噴頭溫度變化后,I2C中斷服務程序都要將溫度變化值傳給主程序,主程序以此查找溫度電壓補償表來獲取補償電壓。此中斷服務包括從地址+寫、從地址+讀、收到數據、數據發送成功、接收到起始條件或停止條件等。由于從地址的匹配由硬件負責,中斷服務程序僅負責將收到的數據送到接收緩沖區Rbuf及將發送的數據從發送緩沖區中取出并發送出去。I2C中斷服務流程如圖3所示。

 中斷服務程序在接收到從機地址寫命令(TWSR=0x60)時表示主機要求寫數據到從機地址中,因此要準備好接收緩沖區的指針RbufP,并向主程序發出開始接收信號即將開始接受標志位bI2Cin置1,隨后應該是收到數據中斷(TWSR=0x80),將收到的數據放入接收緩沖區中并增量接收緩沖區指針,如此反復直到接收到停止條件(TWSR=0xB8,STA=0),這時將數據幀完成標志bI2Cend置位。若接收到主機從機地址讀命令(TWSR=0xA8)時,要復位發送緩沖寄存器SbufP指針,并將發送寄存器中的第一個字節發送出去,在數據發送成功后(TWSR=0xB8),將后續的數據發送出去,并增量發送緩沖區指針,直到接收到停止條件。
 無論是從機地址寫命令、從機地址讀命令,收到數據還是數據發送成功,I2C的傳送過程都沒有完成,因此在返回時需要置位TWINT(TWI中斷標志),以便繼續下一步的I2C通信。但在收到停止條件后,表示一次完整的I2C通信完成,此時需要主程序對剛才I2C通信的數據進行處理,因此這時不能復位TWINT,要暫時停止I2C動作,同時向主程序發送標記bI2Cend,通知主程序進行數據處理。為保證下一次I2C通信能夠正常進行,主程序在處理完I2C數據后要將TWINT置位,以便開啟下一次的I2C傳送。
 I2C數據處理程序處于主程序的循環中,當主程序發現數據接收就緒標志bI2Cend置位時進入本處理程序中。首先從緩沖區Rbuf的第一個單元中取出命令和地址A8。然后對命令進行判斷,如果是寫EEPROM地址命令(Command=0000001),則將Rbuf的第二個字節與前面獲得的A8合并構成9位地址,等待EEPROM允許讀寫標志EEWE變為低電平后,將9位地址寫入EEPROM地址寄存器EEAR中。然后復位TWINT,開始下一幀的傳輸。EEWE變為低電平表示上一次EEPROM結束,若上一次EEPROM讀寫沒有結束就變更地址可能會發生錯誤。
 若是EEPROM寫操作命令(Command=0000010),則將Rbuf的第二個字節取出寫入EEPROM數據寄存器EEDR中,并置位EEPROM開始寫標志EEMWE和EEWE,開始EEPROM的寫操作。最后復位TWINT,開始下一幀的傳輸。    如果是EEPROM讀操作命令(Command=0000100),則置位EEPROM讀標志EERE,然后從EEDR中讀出數據寫入發送緩沖區Sbuf中。真正的發送操作是當I2C中斷發生,且I2C狀態是從機地址讀時,由I2C中斷服務程序直接將Sbuf的內容寫入TWDR中完成寫操作。復位TWINT后,開始下一幀的傳輸。
 其他命令作為備用,可進行對應的操作,但在結束后都必須復位TWINT,以便開始下一次I2C通信。對錯誤的命令或無法識別的命令,通過數碼管進行顯示以便及時排除故障。再復位TWINT,開始下一次的傳送。
3.2 數碼管顯示模塊
 數碼管僅用于顯示數據,在一般情況下I2C總線上的驅動芯片SAA1064只作為從機,接收主機的數據。本系統中用數碼管顯示EEPROM的非法操作、噴頭溫度以及初始化時的校準值。
 MCU主程序主要有兩個狀態,系統啟動后首先進入初始化校準狀態,校準正確后進入正常工作狀態。校準狀態負責校準各A/D轉換電路中因分壓電阻精度產生的誤差,并將校準值顯示在數碼管上以便快速設置。進入正常工作狀態后,數碼管顯示用于顯示噴頭的溫度,當非法操作EEPROM時還可以顯示錯誤類型。噴頭控制板上有兩路A/D,A/D0用于電壓調整器的輸出采樣;A/D1用于噴頭的溫度采樣。其A/D0的校準顯示流程如圖4所示。

 系統初始化開始后,設AD0為查詢模式、關閉AD0中斷隨后啟動AD0,經過一段時間,停止AD0并讀取AD0采樣值。經轉換得到電壓值,經I2C總線顯示在數碼管上,判斷是否是需要的電壓輸出值,若不是則不斷調整ADset來獲得需求值,若顯示正確就將ADset和需求的電壓輸出值Vcur保存到EEPROM中,完成校準工作并返回到主程序中。
 每個噴頭控制板作為從機與主控制系統進行多對一的雙向數據通信,使得系統布線簡捷,傳輸效率高,降低了系統復雜度和成本。經過試驗測試,達到了預期的噴繪效果。本文的方法經簡單修改也可應用于其他類似場合,值得推廣使用。
參考文獻
[1] 何立民.I2C總線應用系統設計[M].北京:北京航空航天大學出版社,1995.
[2] 梁建華,肖伸平.基于S3C44B0X的I2C總線設計[J],微計算機信息,2006,22(5):142-144.
[3] 張秋風,劉晉.基于計算機平臺的多噴頭噴繪機控制系統的設計與實現[J].微型機與應用,2010,29(24):93-95.
[4] 孫世君,宋強.4位LED驅動芯片SAA1064的原理與應用[J],丹東紡專學報,2004,11(3):4-7.
[5] 周劍利,梁延貴.具有I2C總線接口的發光二極管驅動控制器[J],電子元器件應用,2003,5(11):22-23.
[6] 馬潮,詹衛前,耿德根.ATmega8原理及應用手冊[M],北京:清華大學出版社,2003.

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
久久婷婷色综合| 六月婷婷久久| 亚洲视频免费在线| 久久精品亚洲精品| 亚洲麻豆av| 国产精品亚洲欧美| 欧美日韩亚洲一区二区三区四区| 麻豆精品网站| 久久伊人一区二区| 久久久久.com| 久久免费精品日本久久中文字幕| 久久av免费一区| 欧美在线观看网站| 欧美在线欧美在线| 欧美在线免费观看亚洲| 欧美一区二区视频网站| 香蕉尹人综合在线观看| 性色av一区二区三区红粉影视| 亚洲尤物在线视频观看| 亚洲一区二区三区高清| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲午夜精品在线| 亚洲男人的天堂在线| 亚洲欧美中日韩| 欧美一区二区三区久久精品茉莉花| 欧美一区二区三区视频| 久久精品国产v日韩v亚洲 | 亚洲精品系列| 日韩午夜av| 一区二区三区|亚洲午夜| 一区二区欧美视频| 亚洲已满18点击进入久久| 午夜一区不卡| 亚洲福利精品| 在线亚洲精品| 欧美在线播放视频| 噜噜噜久久亚洲精品国产品小说| 欧美电影免费观看大全| 欧美裸体一区二区三区| 国产精品久久久久久久午夜片| 国产精品亚洲一区| 国内成人在线| 亚洲精品美女在线| 亚洲欧美久久久| 亚洲国产成人av在线 | 一本色道久久综合狠狠躁篇的优点| 中文在线资源观看视频网站免费不卡| 亚洲欧美三级在线| 久久这里只有| 欧美日韩小视频| 国产一区91精品张津瑜| 亚洲国产片色| 亚洲一区二区三区777| 欧美中文字幕在线播放| 亚洲免费久久| 欧美一区=区| 欧美国产一区二区在线观看| 国产精品乱码久久久久久| 黄色在线一区| 在线视频精品一| 亚洲风情在线资源站| 亚洲在线免费视频| 久久影院亚洲| 国产精品成av人在线视午夜片| 国产婷婷色一区二区三区四区| 亚洲国产女人aaa毛片在线| 亚洲一区二区三区免费在线观看 | 亚洲欧美日韩区| 免播放器亚洲一区| 国产精品久久久久久久一区探花| 黄色成人在线免费| 亚洲免费大片| 久久精品国产精品亚洲| 亚洲午夜一区二区| 欧美成人午夜| 国产欧美一区二区三区在线老狼| 亚洲黑丝在线| 香蕉久久夜色精品国产使用方法| 在线午夜精品自拍| 榴莲视频成人在线观看| 国产精品专区h在线观看| 亚洲精品久久久久中文字幕欢迎你| 欧美一区二区三区视频在线观看| 亚洲最黄网站| 开元免费观看欧美电视剧网站| 国产精品男人爽免费视频1| 亚洲精华国产欧美| 亚洲第一天堂无码专区| 午夜亚洲视频| 欧美天堂在线观看| 亚洲人被黑人高潮完整版| 欧美在线视频一区二区| 午夜久久久久| 欧美三区美女| 亚洲欧洲精品一区二区三区波多野1战4| 性做久久久久久久免费看| 亚洲调教视频在线观看| 欧美精品 日韩| 国内精品视频一区| 欧美一级片在线播放| 亚洲男女毛片无遮挡| 欧美日韩国产综合一区二区| 在线日韩一区二区| 亚洲成人自拍视频| 久久精品人人做人人爽| 国产精品综合久久久| 亚洲视频国产视频| 中日韩视频在线观看| 欧美激情视频免费观看| 18成人免费观看视频| 久久国产一二区| 久久国产精品一区二区| 国产精一区二区三区| 亚洲欧美日韩在线| 香蕉成人久久| 国产欧美综合一区二区三区| 亚洲欧美日韩国产综合在线| 西瓜成人精品人成网站| 国产精品亚洲综合色区韩国| 亚洲午夜av在线| 午夜国产精品视频免费体验区| 欧美三级中文字幕在线观看| 一区二区高清| 亚洲欧美欧美一区二区三区| 国产精品久久久久久户外露出| 亚洲天堂成人在线视频| 亚洲制服欧美中文字幕中文字幕| 国产精品hd| 亚洲一区亚洲| 久久精品国产v日韩v亚洲 | 欧美成人性生活| 亚洲国产经典视频| 99视频一区二区| 欧美偷拍一区二区| 亚洲在线观看免费视频| 欧美中文字幕| 韩日在线一区| 亚洲人成网站色ww在线| 欧美日韩国产999| 亚洲视频免费| 久久精品夜色噜噜亚洲a∨| 极品尤物一区二区三区| 91久久精品国产91久久| 欧美精品久久久久久久免费观看 | 久久久91精品国产| 在线观看视频一区二区欧美日韩 | 美女黄色成人网| 亚洲茄子视频| 亚洲一卡二卡三卡四卡五卡| 国产精品亚洲第一区在线暖暖韩国| 先锋影音久久久| 久久综合色播五月| 亚洲日本免费电影| 亚洲欧美日韩专区| 韩国三级在线一区| 日韩视频免费观看| 国产精品剧情在线亚洲| 久久精品91久久久久久再现| 欧美国产日韩精品| 亚洲调教视频在线观看| 久久国产高清| 91久久精品国产| 亚洲一区二区三区精品在线| 国产视频一区免费看| 亚洲美女一区| 国产美女高潮久久白浆| 亚洲精品欧美专区| 国产精品亚洲综合久久| 亚洲国产精品专区久久| 欧美日韩在线播放一区| 亚洲欧美日韩网| 欧美电影在线观看完整版| 在线视频一区二区| 久久一区国产| 日韩亚洲精品电影| 久久久国产成人精品| 最新国产拍偷乱拍精品| 欧美一级久久| 亚洲人体影院| 久久免费视频一区| 一本色道久久综合亚洲二区三区| 久久久久久久尹人综合网亚洲| 国产一区二区三区四区hd| 一区二区免费在线播放| 国产自产高清不卡| 亚洲永久免费精品| 亚洲第一级黄色片| 午夜日韩福利| 亚洲欧洲美洲综合色网| 久久久7777| 亚洲性xxxx| 欧美精品色一区二区三区| 欧美在线日韩精品| 国产精品v日韩精品v欧美精品网站| 亚洲国产免费| 国产精品日韩欧美| 99国产麻豆精品| 狠狠色狠狠色综合人人| 午夜精品福利电影| 日韩视频―中文字幕|