Marek Trojan
/
_8_KL46_M_simple_write
program for I2C master device
Fork of I2C_HelloWorld_Mbed by
main.cpp
- Committer:
- marcus255
- Date:
- 2015-12-15
- Revision:
- 7:b07706b16279
- Parent:
- 6:6ee93a0f8d24
- Child:
- 8:3e6945d5d9a1
File content as of revision 7:b07706b16279:
// I2C Master #include "main.h" int main() { init(); while (1) {} } void write_and_read(){ write_data(); wait_ms(20); char regaddr = 0x24; read_data(®addr); // works OK (pure read, without pointer setting) wait_ms(20); } void write_data(){ //writing to slave int write_ack = i2c.write(SLAVE_ADDR, data, DATA_SIZE); if (!write_ack) { //i2c.stop(); pc.printf("<Writing> OK\n\r"); } else pc.printf("<Writing> Error\n\r"); //wait_ms(20); } void read_data(char* cell_addr){ /*int write_ack = i2c.write(SLAVE_ADDR, cell_addr, 1); if (!write_ack) { //i2c.stop(); pc.printf("<Addressing> OK\n\r"); } else { pc.printf("<Addressing> Error\n\r"); return; } //wait_ms(5); */ //reading from slave char fromSlave[DATA_SIZE + 1]; int read_ack = i2c.read(SLAVE_ADDR, fromSlave, DATA_SIZE); if (!read_ack) { //i2c.stop(); pc.printf("<Reading> OK\n\r"); fromSlave[DATA_SIZE] = '\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; }