I2C Slave

Dependencies:   mbed

main.cpp

Committer:
jimmy4399
Date:
2019-07-24
Revision:
0:b7bc22a927d4

File content as of revision 0:b7bc22a927d4:

#include <mbed.h>

#if !DEVICE_I2CSLAVE
  #error [NOT_SUPPORTED] I2C Slave is not supported
#endif

#define SDA P0_11
#define SCL P0_10
I2CSlave slave(SDA, SCL);

#define usbtx P0_7
#define usbrx P0_0
Serial pc(usbtx,usbrx);

int main() {
   
   pc.printf("Ready\n");
   
   char buf[10];
   char msg[] = "Slave!";

   slave.address(0xA0);
   while (1) {
       int i = slave.receive();
       switch (i) {
           case I2CSlave::ReadAddressed:
               slave.write(msg, strlen(msg) + 1); // Includes null char
               break;
           case I2CSlave::WriteGeneral:
               slave.read(buf, 10);
               pc.printf("Read G: %s\n", buf);
               break;
           case I2CSlave::WriteAddressed:
               slave.read(buf, 10);
               pc.printf("Read A: %s\n", buf);
               break;
       }
       for(int i = 0; i < 10; i++) buf[i] = 0;    // Clear buffer
   }
}