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