program for I2C master device

Dependencies:   mbed

Fork of I2C_HelloWorld_Mbed by mbed official

main.cpp

Committer:
marcus255
Date:
2015-12-07
Revision:
6:6ee93a0f8d24
Parent:
5:8dc6d7d81250
Child:
7:b07706b16279

File content as of revision 6:6ee93a0f8d24:

// I2C Master
#include "main.h"
 
int main() {
    init();
    while (1) {}
}

void write_and_read(){
    write_data();    
    wait_ms(20);
    //read_data();
    //wait_ms(20);
}  

void write_data(){
     //writing to slave
    int write_ack = i2c.write(SLAVE_ADDR, data, DATA_SIZE-1);
    if (!write_ack) {
        i2c.stop();
        pc.printf("<Writing> OK\n\r");
    }
    else 
        pc.printf("<Writing> Error\n\r");
    //wait_ms(20);   
}

void read_data(){
    //reading from slave
    char fromSlave[DATA_SIZE];
    int read_ack = i2c.read(SLAVE_ADDR, fromSlave, DATA_SIZE - 1);
    if (!read_ack) {
        pc.printf("<Reading> OK\n\r");
        fromSlave[DATA_SIZE - 1] = '\0';
        pc.printf("Data from Slave: %s\n\n\r", fromSlave);  
        }
    else 
        pc.printf("<Reading> Error\n\r");   
}
  
/*
void i2cReadWrite(void){
    for(int a = 0; a < MSG_SIZE; a++) fromSlave[a] = 0;
    
    int ack = i2c.write(SLAVE_ADDR, data, strlen(data));
    if (!ack) 
        pc.printf("data send to slave\n\r");
    else 
        pc.printf("NACK!\n\r");

    wait(0.1);
    
    int read_ack = i2c.read(SLAVE_ADDR, fromSlave, MSG_SIZE - 1);
    if (!read_ack) 
        pc.printf("data received from slave\n\r");
    else 
        pc.printf("data not received\n\r");
        
    pc.printf("Data from Slave: %s\n\r", fromSlave); 
    
    for(int y = 0; y < 32; y++) fromSlave[y]='x';   
}*/

void init(void){
    i2c.frequency(100000);
    i2c_ticker.attach(&write_and_read, 2.0f);
    pc.baud(921600);
    pc.printf("Master says: Hello World!\n\r");
    for (uint8_t i = 0; i < DATA_SIZE; i++)
        data[i] = i+65;
    data[0]=0;
}