Z8再來一次!F0830 和 Z8 再來一次!F083A 微控制器沒有支持 I2C 的硬件外設(shè),但該協(xié)議很容易在軟件中實現(xiàn)。
圖 1 Z8 再來一次!具有從屬功能
PC0 和 PC1 引腳配置為開漏,因此它們不提供任何電流源。所有源電流都由外部上拉提供,這允許從設(shè)備將 SCL 保持為低以進行時鐘延長。不需要將端口從輸入配置切換到輸出配置,因為端口輸入寄存器 PxIN 始終返回輸入引腳的狀態(tài)。一旦主機釋放引腳高電平,從機可以將引腳拉低或保持高電平,而主機不必將引腳從輸出切換到輸入。
測試 I2C 主/從:所需設(shè)備
測試所需的設(shè)備包括:
Z8再來一次!F083A 28 引腳開發(fā)套件
4.7K 電阻
Slave 是通過對 Slave 執(zhí)行寫入來測量的,同時使用示波器監(jiān)視 SCL 線并測量總寫入時間。寫入的總時間為 150 μs,9 位/150 μs = 60 kbps。
主機通過對連接到 I2C 總線的外部 400 kHz EEPROM 執(zhí)行串行讀取來測量。執(zhí)行串行讀取所需的時間是使用示波器來測量的,以監(jiān)測 SCL 線上的活動。使用 Clock () 中的最小延遲,20 個字節(jié)的完整串行讀取時間為 923 μs。接收的字節(jié)數(shù)為 23 x 9 位,總共傳輸 180 位,即 180 位/92 μs = 194 kbps。
圖 2 I2C 主/從的測試設(shè)置
Slave 軟件源自Using the Z8 Encore!和 Z8 再來一次!XP MCU 作為 I2C 從設(shè)備應(yīng)用筆記。作為 Z8 安可!F083A 運行在 20 MHz,可以使用內(nèi)部振蕩器,不需要將 Slave 的時鐘源切換到外部諧振器。此外,Slave 的地址也發(fā)生了變化。Slave 地址位于 DEVICE_ADDRESS 定義的頭文件 scl_interrupt_XP.h 中。必須更改地址,使其與 EEPROM 的地址不同。唯一的其他修改是包含一個 IF 語句以在接收到數(shù)據(jù)包時切換 LED D3。這是在 scl_interrupt_XP.c 文件的主循環(huán)中完成的。如果接收到數(shù)據(jù)包,從設(shè)備開發(fā)板上的 LED D3 將切換狀態(tài)為 ON 或 OFF。
當(dāng)按下 SW2 時,主機軟件向從機發(fā)送一個數(shù)據(jù)包。如果 Slave 收到數(shù)據(jù)包,Slave 會切換 Slave 開發(fā)板上 LED D3 的狀態(tài)。如果沒有收到數(shù)據(jù)包,主機將點亮其 LED D3。
上電時,主機將 SDA 和 SCL 引腳配置為開漏輸出。也就是說,Master 不會將 SDA 和 SCL 拉高,而是通過上拉電阻將它們拉高。這允許從設(shè)備將 SDA 和 SCL 拉低。也就是說,主機不需要重新配置從輸出到輸入的 I/O 引腳,以稍微提高代碼大小速度。LED 引腳也啟用并配置為 13 mA 驅(qū)動。
本應(yīng)用說明介紹了一種在 Z8 Encore 上實現(xiàn)主/從功能的方法!MCU 使用 GPIO 引腳模擬 SCL 和 SDA 線。該軟件支持 I2C 總線上的事務(wù),從設(shè)備的數(shù)據(jù)傳輸速率高達(dá) 60 kbps,主設(shè)備的數(shù)據(jù)傳輸速率高達(dá) 194 kbps。
編輯:hfy
-
微控制器
+關(guān)注
關(guān)注
48文章
7641瀏覽量
151828 -
mcu
+關(guān)注
關(guān)注
146文章
17303瀏覽量
352148 -
寄存器
+關(guān)注
關(guān)注
31文章
5363瀏覽量
120908 -
I2C
+關(guān)注
關(guān)注
28文章
1495瀏覽量
124228
發(fā)布評論請先 登錄
相關(guān)推薦
評論