Xuyi Wang
/
USB2I2C
USB to I2C converter
Diff: main.cpp
- Revision:
- 0:63512ce9aa8b
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue Nov 23 11:59:32 2021 +0000 @@ -0,0 +1,40 @@ +#include "mbed.h" + +DigitalOut led(LED1); +Serial pc(USBTX,USBRX); //UART0 via OpenSDA +I2CSlave i2c(I2C_SDA, I2C_SCL); +int BUFFER_SIZE = 2; + +int main() { + pc.baud(115200); + pc.printf("%s\r\n", "ok"); + led = 0; + char buf[BUFFER_SIZE]; + //pc.attach(pc_recv); + i2c.frequency(400000); + i2c.address(0x18); + while(true) { + for(int i = 0; i < BUFFER_SIZE; i++){ + buf[i] = 0; + } + switch (i2c.receive()) { + case I2CSlave::ReadAddressed: + // Write back the buffer from the master + i2c.write(buf, BUFFER_SIZE); + pc.printf("Written to master (addressed): %s\r\n", buf); + break; + case I2CSlave::WriteGeneral: + i2c.read(buf, BUFFER_SIZE); + pc.printf("Read from master (general): %s\r\n", buf); + break; + case I2CSlave::WriteAddressed: + i2c.read(buf, BUFFER_SIZE); + pc.printf("Read from master (addressed): %d\r\n", buf[0]); + for(int i = 1; i < BUFFER_SIZE; i++){ + pc.printf("%d ", buf[i]); + } + pc.printf("\r\n"); + break; + } + } +}