Marek Trojan
/
_8_KL46_M_simple_write
program for I2C master device
Fork of I2C_HelloWorld_Mbed by
main.cpp@6:6ee93a0f8d24, 2015-12-07 (annotated)
- Committer:
- marcus255
- Date:
- Mon Dec 07 21:45:21 2015 +0000
- Revision:
- 6:6ee93a0f8d24
- Parent:
- 5:8dc6d7d81250
- Child:
- 7:b07706b16279
some little changes
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 | 5:8dc6d7d81250 | 9 | void write_and_read(){ |
marcus255 | 6:6ee93a0f8d24 | 10 | write_data(); |
marcus255 | 5:8dc6d7d81250 | 11 | wait_ms(20); |
marcus255 | 6:6ee93a0f8d24 | 12 | //read_data(); |
marcus255 | 6:6ee93a0f8d24 | 13 | //wait_ms(20); |
marcus255 | 5:8dc6d7d81250 | 14 | } |
marcus255 | 5:8dc6d7d81250 | 15 | |
marcus255 | 5:8dc6d7d81250 | 16 | void write_data(){ |
marcus255 | 5:8dc6d7d81250 | 17 | //writing to slave |
marcus255 | 5:8dc6d7d81250 | 18 | int write_ack = i2c.write(SLAVE_ADDR, data, DATA_SIZE-1); |
marcus255 | 4:1ec553356dcc | 19 | if (!write_ack) { |
marcus255 | 4:1ec553356dcc | 20 | i2c.stop(); |
marcus255 | 4:1ec553356dcc | 21 | pc.printf("<Writing> OK\n\r"); |
marcus255 | 4:1ec553356dcc | 22 | } |
marcus255 | 4:1ec553356dcc | 23 | else |
marcus255 | 4:1ec553356dcc | 24 | pc.printf("<Writing> Error\n\r"); |
marcus255 | 5:8dc6d7d81250 | 25 | //wait_ms(20); |
marcus255 | 5:8dc6d7d81250 | 26 | } |
marcus255 | 5:8dc6d7d81250 | 27 | |
marcus255 | 5:8dc6d7d81250 | 28 | void read_data(){ |
marcus255 | 4:1ec553356dcc | 29 | //reading from slave |
marcus255 | 4:1ec553356dcc | 30 | char fromSlave[DATA_SIZE]; |
marcus255 | 5:8dc6d7d81250 | 31 | int read_ack = i2c.read(SLAVE_ADDR, fromSlave, DATA_SIZE - 1); |
marcus255 | 5:8dc6d7d81250 | 32 | if (!read_ack) { |
marcus255 | 4:1ec553356dcc | 33 | pc.printf("<Reading> OK\n\r"); |
marcus255 | 5:8dc6d7d81250 | 34 | fromSlave[DATA_SIZE - 1] = '\0'; |
marcus255 | 5:8dc6d7d81250 | 35 | pc.printf("Data from Slave: %s\n\n\r", fromSlave); |
marcus255 | 5:8dc6d7d81250 | 36 | } |
marcus255 | 4:1ec553356dcc | 37 | else |
marcus255 | 5:8dc6d7d81250 | 38 | pc.printf("<Reading> Error\n\r"); |
marcus255 | 5:8dc6d7d81250 | 39 | } |
marcus255 | 5:8dc6d7d81250 | 40 | |
marcus255 | 4:1ec553356dcc | 41 | /* |
marcus255 | 4:1ec553356dcc | 42 | void i2cReadWrite(void){ |
marcus255 | 4:1ec553356dcc | 43 | for(int a = 0; a < MSG_SIZE; a++) fromSlave[a] = 0; |
marcus255 | 4:1ec553356dcc | 44 | |
marcus255 | 4:1ec553356dcc | 45 | int ack = i2c.write(SLAVE_ADDR, data, strlen(data)); |
marcus255 | 4:1ec553356dcc | 46 | if (!ack) |
marcus255 | 4:1ec553356dcc | 47 | pc.printf("data send to slave\n\r"); |
marcus255 | 4:1ec553356dcc | 48 | else |
marcus255 | 4:1ec553356dcc | 49 | pc.printf("NACK!\n\r"); |
mbed_official | 0:f76c26307f9a | 50 | |
marcus255 | 4:1ec553356dcc | 51 | wait(0.1); |
marcus255 | 4:1ec553356dcc | 52 | |
marcus255 | 4:1ec553356dcc | 53 | int read_ack = i2c.read(SLAVE_ADDR, fromSlave, MSG_SIZE - 1); |
marcus255 | 4:1ec553356dcc | 54 | if (!read_ack) |
marcus255 | 4:1ec553356dcc | 55 | pc.printf("data received from slave\n\r"); |
marcus255 | 4:1ec553356dcc | 56 | else |
marcus255 | 4:1ec553356dcc | 57 | pc.printf("data not received\n\r"); |
marcus255 | 4:1ec553356dcc | 58 | |
marcus255 | 4:1ec553356dcc | 59 | pc.printf("Data from Slave: %s\n\r", fromSlave); |
marcus255 | 4:1ec553356dcc | 60 | |
marcus255 | 4:1ec553356dcc | 61 | for(int y = 0; y < 32; y++) fromSlave[y]='x'; |
marcus255 | 4:1ec553356dcc | 62 | }*/ |
marcus255 | 4:1ec553356dcc | 63 | |
marcus255 | 4:1ec553356dcc | 64 | void init(void){ |
marcus255 | 4:1ec553356dcc | 65 | i2c.frequency(100000); |
marcus255 | 5:8dc6d7d81250 | 66 | i2c_ticker.attach(&write_and_read, 2.0f); |
marcus255 | 4:1ec553356dcc | 67 | pc.baud(921600); |
marcus255 | 4:1ec553356dcc | 68 | pc.printf("Master says: Hello World!\n\r"); |
marcus255 | 4:1ec553356dcc | 69 | for (uint8_t i = 0; i < DATA_SIZE; i++) |
marcus255 | 5:8dc6d7d81250 | 70 | data[i] = i+65; |
marcus255 | 5:8dc6d7d81250 | 71 | data[0]=0; |
mbed_official | 0:f76c26307f9a | 72 | } |