a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 可編程數字電位器在atmega16單片機中的應用

可編程數字電位器在atmega16單片機中的應用

作者: 時間:2011-12-22 來源:網絡 收藏

1 引言

  AVR嵌入式單片機具有豐富的硬件、軟件資源,其中的串行I2C接口能滿足很多應用場合的要求,兩個AVR單片機通過I2C總線直接連接就可實現單片機相互通信;AVR單片機還可以和任何具有I2C總線接口的外設直接連接而無須其它硬件電路支持。而X9221系列在智能測試設備上應用非常廣泛,通過I2C總線可以簡單地構成單片機與各種外設之間乃至與計算機之間的通信,建立友好的人機界面聯系。硬件設計簡單、靈活,只需要將所有設備的SDA和SCL信號線分別并聯在一起并加上拉電阻即可,有助于提高設備的自動化水平、可靠性、穩定性及電氣裝配的工藝性。AVR單片機和X9221系列都有內置的E2ROM單元,可以非常方便地為用戶保留一些工藝參數;X9221系列電位器0~63級的變化可以將電位器調節到手動無法實現的平滑級別,調節過程中不會產生噪聲且壽命長、不受機械振動污染潮濕影響等。

2 X9221系列數字電位器介紹

2.1電氣特性及硬件結構原理

  X9221系列電位器共有15種規格型號,有雙列直插DIP20和表面貼裝SOIC20兩種封裝。電源電壓民品級、工業級為4.5~5.5V,軍品級為2.7~5.5V;一組封裝芯片內有兩個數字電位器,參見圖1,X9221系列電位器封裝及引腳功能。內置的E2ROM單元,可以在掉電時將數據很好地保存,上電時自動加載到自己的RAM單元,電位器接口是標準的I2C總線,其中的數據寄存器可通過I2C總線進行讀寫操作;電位器滑動端(VW0/RW0,VW1/RW1)相當于普通電位器中間抽頭,是無摩擦"觸點"。

X9221系列電位器總電阻配置有3種阻值2 kΩ、10kΩ、50kΩ,用戶可根據自己的設計需求來選型。每一個芯片有A0~A3四位二進制編程的器件地址以區分I2C總線上接入的不同外設,因此,一條總線上最多可接入16個X9221器件。器件內部有兩組類型的寄存器"DATA"和"WCR",他們的訪問則由串行數據線上的命令字來確定。電阻陣列通過內部編碼可以有64種狀態,0~63種狀態的連續變化,相當于電位器中心抽頭從普通電位器的一端滑動到另一端;所有的寄存器都可以通過I2C總線進行雙向操作,即可讀可寫。

  "在線"實時的調節電位器"中間抽頭位置"可以有3種方法:通過I2C總線向WCR寄存器寫數據(串行加載)、通過對相應的DATA類寄存器直接寫數據(并行加載)、以及增量減量命令(下面會討論到)直接寫數據;概念上電位器"中間抽頭位置"可以由"WCR"寄存器來替代,其另一類寄存器可以由"DATA"寄存器來替代。

2.2數字電位器I2C總線時序及指令

2.2.1一般I2C總線通信時序

  X9221系列數字電位器其接口是按標準的I2C總線設計的,因此,硬件連接非常簡單,只需把串行時鐘線SCL、串行數據線SDA與之對應相連即可。其通信完全符合I2C總線協議要求,串行時鐘線SCL、串行數據線SDA按照規定的協議產生一序列脈沖串,進而完成傳輸一組數據的任務。參見圖2 I2C總線通信時序。

X9221系列數字電位器完全以從機的身份出現在I2C總線上,它不可以主機的身份出現在I2C總線上,也就是說對其寄存器的讀寫操作都受控于主機,這一點一定要在硬件和軟件設計上留意。當主機發出"START"信號后,從機(X9221A)芯片即將拉高SDA線,表明放棄數據線權限由主機控制,主機發送一個字節后再由從機(X9221A)芯片自動拉低SDA線,表明數據收到,如果此時從機將SDA線拉不低,表明從機沒有正常接受數據,主機必須啟動下一個寫周期。可以理解為主機每發送一個字節后都會等待一個ACK回答響應信號,否則,主機認為從機(X9221A)沒有正常接收數據。

2.2.2 X9221指令表

  表1是X9221所有指令說明,其中前4種指令的正常執行需要在串行數據線上至少有3個步驟:①通過數據線寫從機地址;②寫指令;③寫數據。才能完成一個寄存器的讀或寫,這4種指令適用于X9221三字節時序格式操作。如果是寫在WCR類型的寄存器中,掉電后數據丟失,寫在DATA類型的寄存器中,掉電后數據存在其中;全局轉換的4種指令的正常執行需要在串行數據線上至少有2個步驟:①通過數據線寫從機地址、②寫指令,才能完成所有寄存器之間的數據交換,適用于X9221兩字節時序格式操作;最后一種"+/-"指令相當于"在線"上下調節電位器中間抽頭,比較直觀,很好理解。"+/-"指令僅訪問WCR類型寄存器,且只是寫操作,如果數據線SDA保持高電平,下一個時鐘信號SCL周期到來,WCR寄存器數據"+1"。如果數據線SDA保持低電平,下一個時鐘信號SCL周期到來,WCR寄存器數據"-1"。然而,不管哪種命令,只要寫DATA類型的寄存器(芯片內的E2ROM存儲單元),寫操作要花費大約10 ms時間才能完成,在設計通信軟件時一定要特別留意。

3 AVR系列單片機與數字電位器硬件和軟件設計

3.1 X9221數字電位器與AVR系列單片機硬件接口

  X9221數字電位器與AVR系列單片機硬件接口如圖3所示。硬件連接非常簡單,只需將所有設備串行數據線SDA、串行時鐘線SCL相連接并接10 kΩ左右的上拉電阻即可。連接在I2C總線上的邏輯電平為"線與"邏輯關系,只要有一個設備將其拉低,總線上即出現低電平,當所有設備總線都懸掛起時呈現高阻狀態。主機發送模式就是向其中一個外設寫入數據,首先產生一個啟動信號"START","START"發送成功后才向外設發送設備地址,地址發送成功后,再發送數據,數據可以是1~N個字節,所有數據發送完成,最后發送"STOP"完成主機寫的過程。主機接收模式也是一樣的,過程類似。對X9221來說地址發送完成后,必須發送指令模式,告訴X9221目前將做什么,指令的含義上面已提到,指令模式后是一組數據,其它過程一樣。

 為了使I2C總線處于正常狀態,所有總線上的設備必須加電,如果有一個設備沒有加電,總線將處于不正常工作狀態。在總線上有幾個設備同時欲將發送數據時,競爭中某主機發現仲裁失敗后,應立即回到從機狀態或放棄總線請求,保證獲取總線控制權的主機正常發送數據;不同的主機有不同的總線時鐘頻率,通過SCL信號"線與"來保證,即高電平為高電平中最短的,低電平為低電平中最長的,也就是說協議"照顧"了速度最慢的設備;集結在總線上所有的傳送必須包含相同數目的數據包,否則,多主機系統中仲裁結果無法定義,這在設計上要特別注意。

3.2 X9221數字電位器與AVR系列單片機通信軟件設計

  下面是一個通過查詢由單片機向X9221發送數據的例程,在這個例程中需要注意的是TWINT標志利用軟件寫"1"進行清零(清除硬件置位標志),而當前發送完成后由硬件自動將TWINT標志置"1",TWINT標志是不能通過硬件清零的;每次通過檢查TWINT標志判斷當前發送是否完成,通過讀取狀態寄存器TWSR的值判斷發送的數據是否正確。

上拉電阻相關文章:上拉電阻原理

上一頁 1 2 下一頁

評論


相關推薦

技術專區

關閉