program for I2C master device

Dependencies:   mbed

Fork of I2C_HelloWorld_Mbed by mbed official

Committer:
marcus255
Date:
Tue Dec 01 22:16:18 2015 +0000
Revision:
4:1ec553356dcc
Parent:
3:df6232c70efd
Child:
5:8dc6d7d81250
writing ok, reading in progress

Who changed what in which revision?

UserRevisionLine numberNew contents of line
marcus255 4:1ec553356dcc 1 // I2C Master
marcus255 4:1ec553356dcc 2 #include "main.h"
mbed_official 0:f76c26307f9a 3
marcus255 4:1ec553356dcc 4 int main() {
marcus255 4:1ec553356dcc 5 init();
marcus255 4:1ec553356dcc 6 while (1) {}
marcus255 4:1ec553356dcc 7 }
mbed_official 0:f76c26307f9a 8
marcus255 4:1ec553356dcc 9 void writeNBytes(){
marcus255 4:1ec553356dcc 10 //writing to slave
marcus255 4:1ec553356dcc 11 int write_ack = i2c.write(SLAVE_ADDR, data, 100);
marcus255 4:1ec553356dcc 12 if (!write_ack) {
marcus255 4:1ec553356dcc 13 i2c.stop();
marcus255 4:1ec553356dcc 14 pc.printf("<Writing> OK\n\r");
marcus255 4:1ec553356dcc 15 }
marcus255 4:1ec553356dcc 16 else
marcus255 4:1ec553356dcc 17 pc.printf("<Writing> Error\n\r");
marcus255 4:1ec553356dcc 18 wait_ms(20);
marcus255 4:1ec553356dcc 19 i2c.stop();
marcus255 4:1ec553356dcc 20 /*
marcus255 4:1ec553356dcc 21 //reading from slave
marcus255 4:1ec553356dcc 22 char fromSlave[DATA_SIZE];
marcus255 4:1ec553356dcc 23 int read_ack = i2c.read(SLAVE_ADDR, fromSlave, DATA_SIZE);
marcus255 4:1ec553356dcc 24 if (!read_ack)
marcus255 4:1ec553356dcc 25 pc.printf("<Reading> OK\n\r");
marcus255 4:1ec553356dcc 26 else
marcus255 4:1ec553356dcc 27 pc.printf("<Reading> Error\n\r");
marcus255 4:1ec553356dcc 28 fromSlave[DATA_SIZE - 1] = '\0';
marcus255 4:1ec553356dcc 29 pc.printf("Data from Slave: %s\n\n\r", fromSlave);
marcus255 4:1ec553356dcc 30 i2c.stop();*/
marcus255 4:1ec553356dcc 31 }
marcus255 4:1ec553356dcc 32 /*
marcus255 4:1ec553356dcc 33 void i2cReadWrite(void){
marcus255 4:1ec553356dcc 34 for(int a = 0; a < MSG_SIZE; a++) fromSlave[a] = 0;
marcus255 4:1ec553356dcc 35
marcus255 4:1ec553356dcc 36 int ack = i2c.write(SLAVE_ADDR, data, strlen(data));
marcus255 4:1ec553356dcc 37 if (!ack)
marcus255 4:1ec553356dcc 38 pc.printf("data send to slave\n\r");
marcus255 4:1ec553356dcc 39 else
marcus255 4:1ec553356dcc 40 pc.printf("NACK!\n\r");
mbed_official 0:f76c26307f9a 41
marcus255 4:1ec553356dcc 42 wait(0.1);
marcus255 4:1ec553356dcc 43
marcus255 4:1ec553356dcc 44 int read_ack = i2c.read(SLAVE_ADDR, fromSlave, MSG_SIZE - 1);
marcus255 4:1ec553356dcc 45 if (!read_ack)
marcus255 4:1ec553356dcc 46 pc.printf("data received from slave\n\r");
marcus255 4:1ec553356dcc 47 else
marcus255 4:1ec553356dcc 48 pc.printf("data not received\n\r");
marcus255 4:1ec553356dcc 49
marcus255 4:1ec553356dcc 50 pc.printf("Data from Slave: %s\n\r", fromSlave);
marcus255 4:1ec553356dcc 51
marcus255 4:1ec553356dcc 52 for(int y = 0; y < 32; y++) fromSlave[y]='x';
marcus255 4:1ec553356dcc 53 }*/
marcus255 4:1ec553356dcc 54
marcus255 4:1ec553356dcc 55 void init(void){
marcus255 4:1ec553356dcc 56 i2c.frequency(100000);
marcus255 4:1ec553356dcc 57 i2c_ticker.attach(&writeNBytes, 2.0f);
marcus255 4:1ec553356dcc 58 pc.baud(921600);
marcus255 4:1ec553356dcc 59 pc.printf("Master says: Hello World!\n\r");
marcus255 4:1ec553356dcc 60 for (uint8_t i = 0; i < DATA_SIZE; i++)
marcus255 4:1ec553356dcc 61 data[i] = i;
mbed_official 0:f76c26307f9a 62 }