i2cslave class without interrupt process
i2cslave.cpp
- Committer:
- sgrsn
- Date:
- 2017-02-26
- Revision:
- 0:2976149f5c28
File content as of revision 0:2976149f5c28:
#include "i2cslave.h" i2cslave::i2cslave(PinName sda, PinName scl, char *Registar) : I2CSlave(sda, scl) { _Registar = Registar; frequency(400000); } void i2cslave::communication() { switch(receive()) { case I2CSlave::NoData: //データなし break; case I2CSlave::ReadAddressed: //マスターからのデータ送信要求 break; case I2CSlave::WriteAddressed: //マスターからデータを受信 geti2c(); break; case I2CSlave::WriteGeneral: //マスターからデータを受信(全スレーブ宛) break; } } void i2cslave::geti2c() { char i2cData[3] = {}; read(i2cData, 3); wait_us(30); switch(i2cData[2]) { case SendData: read(_Registar + i2cData[1], i2cData[0]); break; case RequestData: write(_Registar + i2cData[1], i2cData[0]); break; } }