Marek Trojan
/
_8_KL46_M_simple_write
program for I2C master device
Fork of I2C_HelloWorld_Mbed by
main.cpp@4:1ec553356dcc, 2015-12-01 (annotated)
- 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?
User | Revision | Line number | New 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 | } |