《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 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| 激情欧美日韩| 好吊妞**欧美| 影音先锋亚洲一区| 亚洲第一狼人社区| 亚洲国产一区二区a毛片| 亚洲缚视频在线观看| 亚洲欧洲精品一区二区三区波多野1战4| 在线观看一区二区视频| 亚洲第一毛片| 亚洲精品日韩一| 一区二区电影免费观看| 亚洲图片在区色| 午夜伦欧美伦电影理论片| 欧美亚洲午夜视频在线观看| 欧美尤物巨大精品爽| 亚洲高清一二三区| 亚洲精品自在在线观看| 一区二区三区精品视频| 亚洲欧美日韩国产成人| 久久精品免费观看| 麻豆精品视频在线观看| 欧美精品一区二区三区四区| 欧美日韩亚洲视频一区| 国产精品久久久久久久久果冻传媒| 国产精品视频久久一区| 国产一级久久| 亚洲福利免费| 最新日韩中文字幕| 一区二区三区日韩欧美精品| 亚洲欧美日韩精品综合在线观看| 久久av一区二区三区漫画| 亚洲精品男同| 亚洲男人的天堂在线aⅴ视频| 欧美一区二区精品| 久久综合九色99| 欧美日本亚洲| 国产欧美日韩精品a在线观看| 国模大胆一区二区三区| 亚洲人体影院| 亚洲影视在线播放| 亚洲国产mv| 亚洲午夜成aⅴ人片| 久久国产欧美日韩精品| 欧美fxxxxxx另类| 国产精品成av人在线视午夜片| 国产午夜精品一区二区三区欧美| 亚洲第一区在线| 亚洲一区二区三区精品在线| 亚洲成色777777女色窝| 中文一区字幕| 老司机亚洲精品| 欧美日韩麻豆| 国产一区视频观看| 日韩视频在线观看| 久久国产精品网站| 亚洲一二三四区| 久久影视三级福利片| 欧美日韩亚洲一区三区| 国内精品模特av私拍在线观看| 亚洲精品日本| 久久精品国产清自在天天线| 一区二区三区久久| 麻豆成人在线观看| 国产美女高潮久久白浆| 亚洲免费福利视频| 亚洲国产精品激情在线观看| 亚洲欧美国产三级| 欧美成人自拍| 国产日韩亚洲欧美精品| 99视频精品在线| 亚洲国产成人tv| 性8sex亚洲区入口| 欧美日韩国产精品| 一区二区在线观看视频| 亚洲欧美自拍偷拍| 99re6热只有精品免费观看| 久久伊人亚洲| 国产欧美日韩免费| 99精品欧美一区| 亚洲精选91| 久久亚洲图片| 国产午夜精品麻豆| 亚洲午夜一二三区视频| 一本色道久久88综合亚洲精品ⅰ| 久久天天躁狠狠躁夜夜av| 国产精品久久久久久久久| 日韩视频不卡| 亚洲剧情一区二区| 免费欧美网站| 伊人精品久久久久7777| 欧美中文字幕视频| 欧美在线播放| 国产精品入口尤物| 亚洲线精品一区二区三区八戒| 99精品欧美一区二区三区综合在线| 久久综合色播五月| 韩国久久久久| 久久超碰97人人做人人爱| 羞羞视频在线观看欧美| 国产精品久久久久国产a级| 亚洲麻豆av| 亚洲精品中文字幕女同| 欧美大片一区二区三区| 在线日韩日本国产亚洲| 亚洲成色777777在线观看影院| 久久久午夜精品| 国产综合在线视频| 亚洲成人直播| 麻豆精品视频在线| 在线看片日韩| 亚洲欧洲日韩在线| 欧美国产一区二区在线观看| 亚洲国产毛片完整版| 亚洲欧洲美洲综合色网| 免费欧美日韩| 亚洲国产精品悠悠久久琪琪| 亚洲三级电影在线观看| 欧美黑人在线观看| 亚洲精品久久久久| 中日韩美女免费视频网址在线观看 | 亚洲一区二区成人在线观看| 亚洲一区区二区| 国产精品久久久久久亚洲毛片| 亚洲视频在线观看视频| 亚洲综合欧美日韩| 国产欧美婷婷中文| 久久成人综合视频| 免费欧美电影| 日韩视频在线免费观看| 亚洲一区二区在| 国产精品婷婷| 欧美在线不卡| 免费成人av| 亚洲日韩第九十九页| 亚洲一区二区少妇| 国产亚洲欧美一区在线观看 | 亚洲国产小视频| 欧美福利视频网站| 亚洲精品乱码久久久久久久久| 亚洲视频免费观看| 国产欧美一区二区精品婷婷 | 国产精品欧美日韩| 欧美一级播放| 欧美高清在线一区| 亚洲无限乱码一二三四麻| 久久电影一区| 亚洲高清在线观看| 亚洲一区二区四区| 国产专区欧美专区| 99国产欧美久久久精品| 国产精品亚洲视频| 亚洲日本激情| 国产精品亚洲不卡a| 亚洲国产成人久久综合| 欧美日韩色婷婷| 欧美一级久久久| 欧美黄在线观看| 亚洲欧美一区二区激情| 欧美成年人网站| 亚洲曰本av电影| 欧美成人资源| 亚洲欧美日韩另类| 欧美精品麻豆| 欧美一区激情| 欧美日韩一区二区三区高清| 性高湖久久久久久久久| 欧美久色视频| 午夜亚洲一区| 欧美国产日韩在线| 欧美一级理论片| 欧美视频一区二区三区…| 小黄鸭精品aⅴ导航网站入口 | 好吊色欧美一区二区三区视频| 一区二区三区日韩欧美| 国产在线拍偷自揄拍精品| 夜夜精品视频| 影音先锋另类| 欧美在线播放一区二区| 亚洲日本一区二区| 久久久久女教师免费一区| 99精品欧美一区二区三区综合在线| 久久阴道视频| 亚洲欧美第一页| 欧美日韩精品一二三区| 亚洲高清影视| 国产一区二区按摩在线观看| 中文欧美日韩| 亚洲第一在线综合在线|