幾種單片機之間的方式疑難提出一種解決方案

2021-03-31 10:05:45 惠爾創 16

  1 、幾種常用單片機之間的通訊方式

  ①采用硬件UART停止異步串行通訊。這是一種占用口線少,有效、牢靠的通訊方式;但遺憾的是許多小型單片機沒有硬件  UART,有些也只要1個UART,假如系統還要與上位機通訊的話,硬件資源是不夠的。這種辦法普通用于單片機有硬件UART且不需與外界停止串行通訊或采用雙UART單片機的場所。

  ②采用片內SPI接口或2C總線模塊串行通訊方式。SPI/I2C接口具有硬件簡單、軟件編程容易等特性,但目前大多數單片機不具備硬件SPI/I2C模塊。

  2 、應用鐵電存儲器作為數據緩沖器的通訊方式

  鐵電存儲器是美國Ramtran公司剛剛推出的一種新型非易失性存儲器件,簡稱FRAM。與普通EEPROM、Flash-ROM相比,它具有不需寫入時間、讀寫次數無限,沒有散布構造能夠連續寫放的優點,因而具有RAM與EEPROM的雙特性,而且價錢相對較低。如今大多數的單片機系統裝備串行EEPROM(如24CXX、93CXX等)用來存儲參數。假如用1片FRAM替代原有EEPROM,使它既能存儲參數,又能作串行數據通訊的緩沖器。2個(或多個)單片機與1片FRAM接成多主-從的I2C總線方式,增加幾條握手線,即可得到簡單高效的通訊硬件電路。在軟件方面,只需處理好I2C多主-從的控制抵觸與通訊協議問題,即可完成簡單、高效、牢靠的通訊了。

  3、 實例(雙單片機構造,多功用低功耗系統)

  (1)硬件

  W78LE52與EMC78P458組成一個電池供電、可遠程通訊的工業流量計。78P458采用32.768kHz晶振,工作電流低,不連續工作,實時采集傳感器的脈沖及溫度、壓力等一些模仿量;W78LE52采11.0592MHz晶振,由于它的工作電流較大,采用連續工作,擔任流量的非線性校正、參數輸入、液晶顯現、與上位機通訊等功用,它的UART用于遠程通訊。通訊接口局部線路如圖1所示,2個單片機共用1片I2C接口的FRAM(FM24CL16)組成二主一從的I2C總線控制方式,W78LE52的P3.5、P3.2分別與78P458的P51、P50銜接作握手信號線A與B。我們把握手線A(簡稱A線)定義為總線控制、指示線,主要用于獲取總線控制權與判別總線能否“忙”;握手線B(簡稱B線)定義為通知線,主要用于通知對方取走數據。

  (2)I2C總線仲裁

  由于我們采用的是二主一從的I2C總線方式,因而避免2個主機同時去操作從機(防抵觸)是一個十分重要的問題。帶有硬件I2C模塊的器件普通是這樣的,器件內部有1個總線仲裁器與總線超時定時器:當總線超時定時器超時后指示總線閑暇,這時單片機能夠發出獲取總線命令,總線仲裁器經過一系列操作后確認獲取總線勝利或失敗;超時定時器清零,以后的每一個SCL狀態變化對總線一切主機的超時定時器停止清零,以避免它溢出,指示總線正處于“忙”狀態,直到一個主機對總線控制完畢不再產生SCL脈沖;超時定時器溢出,總線重新回到“閑暇”狀態。但是目前大多數單片機沒有裝備硬件I2C模塊,而且當2個主機的工作頻率相差較大時,超時定時器定時值只能設為較大的值,這樣也會影響總線的運用效率。下面引見一種用軟件模仿I2C總線仲裁的方式(I2C讀寫操作程序的軟件模仿非常多見,這里不再多述):用1條握手線A,流程圖如圖2所示,當A線高電平常,指示總線閑暇;當其中一個主機要獲取總線控制權時,先查詢總線能否閑暇,“忙”則退出,閑暇則向A線發送一個測試序列(如:1000101011001011),在每次發送位“1”后讀取的A線狀態。假如讀取狀態為“0”,馬上退出,闡明有其它器件曾經搶先獲取總線;假如一個序列讀取的A線狀態都正確,則闡明已勝利取得總線控制權,這時要拉低A線以指示總線“忙”,直到讀寫高A線,使總線回到“閑暇”狀態。不同的主機采用不同的測試序列,或產生隨機測試序列,測試序列長度能夠選得長一些,這樣能夠增加仲裁的牢靠性。

  (3)通訊協議

  一個牢靠通訊體系,除了好的硬件電路外,通訊協議也至關重要。在單片機系統RAM資源與執行速度都十分有限的狀況下,一個簡捷有效的協議是十分重要的。下面詳細引見一種比擬適用于單片機通訊的協議,數據以包的方式傳送。

  (4)通訊流程

  首先,要在FRAM里劃分好各個區域,各個單片機的參數區、數據接納區等。然后,單片機能夠向另一個單片機發送數據包,發送終了之后經過向握手線B發送1個脈沖通知對方取走數據;接納方讀取數據并停止處置后,向FRAM內發送方的數據接納區寫入回傳數據或通訊失敗標志,再向握手線B發送1個脈沖回應發送方。

  4 、總結

  經過理論可知,以上辦法是可行的。與其它辦法相比具有以下優點:

  ①簡單。占用單片機口線少(SCL、SDA、握手線A、握手線B)。

  ②通用。軟件模仿I2C主機方式,能夠在任何品種的單片機之間通訊。

  ③高效。由于采用數據緩沖,能夠在不同時鐘頻率、不同速度的單片機之間通訊;讀寫數據時,能夠I2C總線的最高速度停止,能夠完成1次傳送大量數據;在一個單片機向FRAM傳送數據時,另一個單片機無須逐個作出響應或等候,能夠停止其它程序操作,進步軟件工作效率。


電話咨詢
郵件咨詢
在線地圖
QQ客服
收購范圍
在線交流

在線詢價

點擊這里給我發消息
大失禁下载