実験 PSoC4 EZI2C I2C slave << Raspberry Pi Zero WH I2C master
I2C 通信線 Pull up していない、Pi側GPIO内部でPull upしているかも、要調査
Python code
read_byte_data, write_byte_data, read_i2c_block_data, write_i2c_block_data
どの命令も問題なく使用できた
Pi I2C Data rate 100Kbps >> EZI2C 1000Kbps (w/Clock stretching) >> エラーなし
Pi I2C Data rate 100Kbps >> EZI2C 400Kbps (w/Clock stretching) >> エラーなし
Pi I2C Data rate 100Kbps >> EZI2C 50Kbps (w/Clock stretching) >> エラーなし
Pi I2C Data rate 400Kbps >> EZI2C 50Kbps (w/Clock stretching) >> エラー多発
Pi I2C Data rate 400Kbps >> EZI2C 50Kbps (wo/Clock stretching) >> エラー多発
Pi I2C Data rate 400Kbps >> EZI2C 100Kbps (w/Clock stretching) >> エラー多発
Pi I2C Data rate 400Kbps >> EZI2C 400Kbps (w/Clock stretching) >> エラーなし
Pi I2C Data rate 400Kbps >> EZI2C 1000Kbps (w/Clock stretching) >> エラーなし
1812191334 (PSoC4) SCB_I2C SCB_EZI2C with Pi 動作OK.7z
064_I2C_EZI2C_PSoC4.py
PSoC4 EZI2C SCL P30, PSoC4 EZI2C SCA P31, Pi I2C1 SCL GPIO3 Pin#5, Pi I2C1 SDA GPIO2 Pin#3
一般的な共有RAMの問題、2バイト以上のデータ送受信に問題
送信側
読み込み中フラグ=OFF を確認
書き込み中フラグ=ON、ブロックデータを書き込む、書き込みが終了したら
書き込み中フラグ=OFF
受信側
書き込み中フラグ=OFF を確認
読み込み中フラグ=ON、ブロックデータを読み込み、終了したら
読み込み中フラグ=OFF
同時があり得る >> NG
PiがEZI2C使用中(データ読み書き中)でなければ、EZI2Cを一旦停止してから共有RAMへ書き込み、I2Cを再開する、Piは再実行処理必須
Piがデータ書き込む場合は、書き込み中フラグ=ON、待ち時間(PSoC共有RAM読み込みに要する時間、1ms程度?)、ブロックデータを書き込む、書き込みが終了したら、書き込み中フラグ=OFF
実験結果: 素ではエラー発生を防止できず >> I2C+コマンド処理系