//************************************************************************* // I2C_Send // // Inputs: // char Address - Address to write data to // char *Data - Pointer to buffer // char Num - Number of bytes to send //************************************************************************* char I2C_Send(char Address,char *Data,char Num) { i2cstart(); //-- Send Address i2csendbyte(Address & 0xFE); //-- Lowest bit = 0 => WRITE if(!i2cgetack()) { i2cstop(); return(0); } while(Num--) { i2csendbyte(*Data); if(!i2cgetack()) { i2cstop(); return(0); } Data++; } i2cstop(); return(1); }
//************************************************************************* // char I2C_Read(char Address,char *data, char Num) //************************************************************************* char I2C_Read(char Address,char *Data, char Num) { i2cstart(); //-- Send Address i2csendbyte(Address | 0x01); //-- Lowest bit = 1 => READ if(!i2cgetack()) { i2cstop(); return(0); } while(Num--) { *Data=i2cgetbyte(); Data++; if(Num > 0) { i2csendack(); } } i2cstop(); return(1); }
//************************************************************************* // I2C_Send // // Inputs: // char Address - Address to write data to // char *Data - Pointer to buffer // char Num - Number of bytes to send //************************************************************************* char I2C_Send(char Address,char *Data,char Num) { i2cstart(); //-- Send Address i2csendbyte(Address & 0xFE); //-- Lowest bit = 0 => WRITE if(!i2cgetack()) { i2cstop(); printf("DID NOT SEND INITIAL WRITE COMMAND PROPPERLY\r\n"); //i2cdelay(10000000); return(0); } while(Num--) { i2csendbyte(*Data); if(!i2cgetack()) { i2cstop(); printf("HEX: 0x%x",*Data); printf("DID NOT SEND COMMAND PROPPERLY\r\n"); //i2cdelay(10000000); return(0); } Data++; } i2cstop(); i2cdelay(100); return(1); }
char I2C_Read_Delay(char Address,char *Data, char Num, DWORD countMs) { i2cstart(); //-- Send Address i2csendbyte(Address | 0x01); //-- Lowest bit = 1 => READ if(!i2cgetack()) { i2cstop(); printf("ERROR IN SENDING READ CMD\n\r"); //i2cdelay(10000000); return(0); } i2cdelay(countMs*1000); while(Num--) { *Data=i2cgetbyte(); printf("Got the data from byte %d, it's %x\r\n", Num, *Data); Data++; if(Num > 0) { i2csendack(); } } i2cstop(); return(1); }
void write_i(unsigned char ins) { i2cstart(); write_w(0x78); write_w(0x80); write_w(ins); i2cstop(); }
void Display_Picture(unsigned char pic[]) { unsigned char i,j,num=0; for(i=0;i<0x04;i++) { Set_Page_Address(i); Set_Column_Address(0x00); i2cstart(); write_w(0x78); write_w(0x40); for(j=0;j<0x40;j++) { write_w(pic[i*0x40+j]); } i2cstop(); } return; }