Kazuki Yamamoto
/
uart_i2c_conv_824
only for LPC824 chip to match hardware I2C channels(2->4)
Diff: main.cpp
- Revision:
- 5:655e58295f1e
- Parent:
- 4:bbea62f185e1
- Child:
- 6:9368ba5f485c
--- a/main.cpp Thu Oct 23 16:18:03 2014 +0000 +++ b/main.cpp Fri Oct 24 09:27:38 2014 +0000 @@ -1,4 +1,5 @@ #include "mbed.h" +#include "i2c_api.h" Serial pc(USBTX,USBRX); /* @@ -16,7 +17,7 @@ I2C dev2(A0,A1);//6,14 I2C dev3(A2,A3);//23,22 I2C dev4(A4,A5);//21,20 -//BusOut bus(LED1,LED2,LED3,LED4); +BusOut bus(LED1,LED2,LED3,LED4); DigitalOut led1(LED1); //DigitalOut led2(LED2); //DigitalOut led3(LED3); @@ -42,9 +43,28 @@ dev3.frequency(100000);//100k dev4.frequency(100000);//100k +/** debug code +pc.printf("assign0: %08X\n\r",LPC_SYSCON->PRESETCTRL );//??_??_??_(?|4)? +pc.printf("enable I2C0: %08X\n\r",LPC_SWM->PINENABLE0);//????_(C|?)??? pc.printf("assign1: %08X\n\r",LPC_SWM->PINASSIGN[9] );//23_14_06_?? pc.printf("assign2: %08X\n\r",LPC_SWM->PINASSIGN[10] );//??_20_21_22 pc.printf("clock: %08X\n\r",LPC_SYSCON->SYSAHBCLKCTRL );// ??_(?|E)?_??_(?|2)? +pc.printf("dev1: %08X\n\r",dev1 ); +pc.printf("LPC_I2C1: %08X, ",LPC_I2C1 ); +pc.printf("dev2: %08X\n\r",dev2 ); +pc.printf("LPC_I2C2: %08X, ",LPC_I2C2 ); +pc.printf("dev3: %08X\n\r",dev3 ); +pc.printf("LPC_I2C3: %08X, ",LPC_I2C3 ); +pc.printf("dev4: %08X\n\r",dev4 ); +pc.printf("dev: %08X\n\r",*dev ); +dev=&dev2; +pc.printf("dev: %08X\n\r",*dev ); +dev=&dev3; +pc.printf("dev: %08X\n\r",*dev ); +dev=&dev4; +pc.printf("dev: %08X\n\r",*dev ); +dev=&dev1; +*/ // int data=0x50; // int ack=0; int plength=0; @@ -92,25 +112,25 @@ channel=recieve[i+1]; switch(channel) { case I2C0adr: -//// bus=0x01; + bus=~0x01; //pc.printf("ch0 is selected,"); channel='0'; dev=&dev1; break; case I2C1adr: -//// bus=0x02; + bus=~0x02; //pc.printf("ch1 is selected,"); channel='1'; dev=&dev2; break; case I2C2adr: -//// bus=0x04; + bus=~0x04; //pc.printf("ch2 is selected,"); channel='2'; dev=&dev3; break; case I2C3adr: -//// bus=0x08; + bus=~0x08; //pc.printf("ch3 is selected,"); channel='3'; dev=&dev4; @@ -127,30 +147,30 @@ address=recieve[i+1]; length=recieve[i+2]; //pc.printf("addr=%02X, length=%d,",address,length); -dev1.start(); -dev1.write(address); -//// dev->start(); -//// dev->write(address); +//dev1.start(); +//dev1.write(address); + dev->start(); + dev->write(address); if( (address&0x01)) {//read //pc.printf("read from ch%c,",channel); for(int j=0; j<length; j++) { -//pc.putc(dev->read(0)); pc.printf("%02X,",dev->read(0)); +//pc.printf("%02X,",dev1.read(0)); } i+=(3); } else {//write //pc.printf("write to ch%c, ",channel); for(int j=0; j<length; j++) { //pc.printf("%02X,",recieve[3+j]); -dev1.write(recieve[3+j]); -//// dev->write(recieve[3+j]); +//dev1.write(recieve[3+j]); + dev->write(recieve[3+j]); } i+=(3+length); } break; case 'P': -dev1.stop(); -//// dev->stop(); +//dev1.stop(); + dev->stop(); i=plength; pc.printf("ok\n\r"); break;