原來是想利用單片機自帶的 SMBus 端口, 但是官方自帶的例程用了好幾個定時器, 而我的這個小項目也需要很多定
時器資源, 不夠用了. 擦.........所以乾脆用 IO 口模擬 I2C 時序來操作 FM24C04 得了, 項目對時間要求也不苛
刻.
所以, 就出現了文章要介紹的問題:
由於繪製原理圖時, 已經將 SMBus 的端口 SDA/SCL(對應 P0_0/P0_1) 連接到了 FM24C04 的 SDA 和 SCL 上.
所以按照一般操作, 我把 XBR0 的 SMB0E 使能並連接到端口. 然後將對應的 IO 口 P0_0 和 P0_1 設置成漏極開
路, 按說這樣就可以了是不是? 其實不是, 操作的時候讀上來的數據一直是 0xFF, 可能就是高阻態.
我檢查了下讀寫操作代碼, 沒有任何問題, 增減延時改變時序也是不行. 所以, 我懷疑在交叉開關這出了問題.
想了想覺得, 既然我都用模擬的時序了. 幹嗎還用設置成開漏呢? 幹嗎還用將端口配置給 SMBus 呢? 推輓不也
是可以的嗎? 所以如下圖, 將 SMB0E 置零. 燒寫調試運行, 讀和寫都行了. 另外對應的 IO 口設置
成開漏或者推輓都是可以正常進行操作的.