Lee Kai Xuan / mbed-os

Fork of mbed-os by erkin yucel

Committer:
xuaner
Date:
Thu Jul 20 14:26:57 2017 +0000
Revision:
1:3deb71413561
Parent:
0:f269e3021894
mbed_os

Who changed what in which revision?

UserRevisionLine numberNew contents of line
elessair 0:f269e3021894 1 #include "mbed.h"
elessair 0:f269e3021894 2 #include "test_env.h"
elessair 0:f269e3021894 3
elessair 0:f269e3021894 4 #if !DEVICE_I2CSLAVE
elessair 0:f269e3021894 5 #error [NOT_SUPPORTED] I2C Slave is not supported
elessair 0:f269e3021894 6 #endif
elessair 0:f269e3021894 7
elessair 0:f269e3021894 8 #define SIZE (10)
elessair 0:f269e3021894 9 #define ADDR (0x90)
elessair 0:f269e3021894 10
elessair 0:f269e3021894 11 #if defined(TARGET_KL25Z)
elessair 0:f269e3021894 12 I2CSlave slave(PTE0, PTE1);
elessair 0:f269e3021894 13 #elif defined(TARGET_LPC4088)
elessair 0:f269e3021894 14 I2CSlave slave(p9, p10);
elessair 0:f269e3021894 15 #elif defined(TARGET_SAMR21G18A)
elessair 0:f269e3021894 16 I2CSlave slave(PA16, PA17);
elessair 0:f269e3021894 17 #elif defined(TARGET_SAMD21J18A) || defined(TARGET_SAMD21G18A) || defined(TARGET_SAML21J18A)
elessair 0:f269e3021894 18 I2CSlave slave(PA08, PA09);
elessair 0:f269e3021894 19 #elif defined(TARGET_NUCLEO_F411RE) || defined(TARGET_NUCLEO_F446RE)
elessair 0:f269e3021894 20 //I2C master(PB_9, PB_8); // I2C_1 (Arduino: D14/D15)
elessair 0:f269e3021894 21 I2CSlave slave(PB_3, PB_10); // I2C_2 (Arduino: D3/D6)
elessair 0:f269e3021894 22 #elif defined(TARGET_NUCLEO_F429ZI)
elessair 0:f269e3021894 23 I2CSlave slave(PB_11, PB_10); // I2C_2
elessair 0:f269e3021894 24 #elif defined(TARGET_FF_ARDUINO)
elessair 0:f269e3021894 25 I2CSlave slave(I2C_SDA, I2C_SCL);
elessair 0:f269e3021894 26 #elif defined(TARGET_SAMG55J19)
elessair 0:f269e3021894 27 I2CSlave slave(PA10, PA09);
elessair 0:f269e3021894 28 #else
elessair 0:f269e3021894 29 I2CSlave slave(p28, p27);
elessair 0:f269e3021894 30 #endif
elessair 0:f269e3021894 31
elessair 0:f269e3021894 32 int main() {
elessair 0:f269e3021894 33 char buf[SIZE];
elessair 0:f269e3021894 34
elessair 0:f269e3021894 35 slave.address(ADDR);
elessair 0:f269e3021894 36
elessair 0:f269e3021894 37 while (1) {
elessair 0:f269e3021894 38 int i = slave.receive();
elessair 0:f269e3021894 39 switch (i) {
elessair 0:f269e3021894 40 case I2CSlave::ReadAddressed:
elessair 0:f269e3021894 41 slave.write(buf, SIZE);
elessair 0:f269e3021894 42 for(int i = 0; i < SIZE; i++){
elessair 0:f269e3021894 43 }
elessair 0:f269e3021894 44 break;
elessair 0:f269e3021894 45 case I2CSlave::WriteAddressed:
elessair 0:f269e3021894 46 slave.read(buf, SIZE);
elessair 0:f269e3021894 47 for(int i = 0; i < SIZE; i++){
elessair 0:f269e3021894 48 buf[i]++;
elessair 0:f269e3021894 49 }
elessair 0:f269e3021894 50 break;
elessair 0:f269e3021894 51 }
elessair 0:f269e3021894 52 }
elessair 0:f269e3021894 53 }