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