Пример #1
0
int RcvIMUData(unsigned int reg_addr) {
//	//see page 92 of https://www.adafruit.com/datasheets/BST_BNO055_DS000_12.pdf
   
    rcv = 0;
    StartI2C2();                //Send line start condition
    IdleI2C2();                 //Wait to complete
    MasterWriteI2C2(0x50);      //Write slave addr WRITE (OR 0)
    IdleI2C2();
    MasterWriteI2C2(reg_addr);      //BNO055_QUATERNION_DATA_W_LSB_ADDR
    IdleI2C2();             
  
    RestartI2C2();
    IdleI2C2();
    
    MasterWriteI2C2(0x51);      //Write the slave address, READ (OR 1)
    IdleI2C2(); 
    
    rcv |= MasterReadI2C2();    //Read in LSB
    IdleI2C2();       
    AckI2C2();
    IdleI2C2();
    rcv |= MasterReadI2C2()<<8;    //Read in MSB

    NotAckI2C2();
    IdleI2C2();
    StopI2C2();                 //Send line stop condition
    IdleI2C2();                 
    return rcv;  
    
}
Пример #2
0
/**
 * Reads temperature from IR sensor of an object in front of sensor
 * @return A hex value from 0x27AD (-70 ?C) to 0x7fff (382.19?C)
 */
int RcvIRTemp(void){
    rcv = 0;
    StartI2C2();                //Send line start condition
    IdleI2C2();                 //Wait to complete
    MasterWriteI2C2(0xb4);      //Write slave addr WRITE (OR 0)
    IdleI2C2();
    MasterWriteI2C2(0x07);      //0x07 = read RAM for TObj1 temperature
    IdleI2C2();             
  
    RestartI2C2();
    IdleI2C2();
    
    MasterWriteI2C2(0xb5);      //Write the slave address, READ (OR 1)
    IdleI2C2(); 
    
    rcv |= MasterReadI2C2();    //Read in LSB
    IdleI2C2();         
    AckI2C2();                  //Acknowledge LSB
    IdleI2C2();
    
    rcv |= MasterReadI2C2()<<8; //Read in MSB       
    AckI2C2();                  //Acknowledge MSB
    IdleI2C2();
    
    MasterReadI2C2();           //Read in PEC            
    AckI2C2();                  //Acknowledge MSB
    IdleI2C2();
   
    StopI2C2();                 //Send line stop condition
    IdleI2C2();                 
    return rcv;                 //Return read value    
}
int RcvData2(unsigned int address){
    rcv = 0;
    StartI2C2();				//Send line start condition
	IdleI2C2();			        //Wait to complete
	MasterWriteI2C2((address << 1) | 1);	//Write out slave address OR 1 (read command)
	IdleI2C2();				//Wait to complete
	rcv = MasterReadI2C2()<<8;		//Read in a value   
    AckI2C2();
    rcv |= MasterReadI2C2();    
	StopI2C2();				//Send line stop condition
	IdleI2C2();				//Wait co complete
	return rcv;				//Return read value    
}
void sleepIRTemp(){
    StartI2C2();				//Send line start condition
	IdleI2C2();			        //Wait to complete
	MasterWriteI2C2(0xb4);      //Write slave addr WRITE (OR 0)
    IdleI2C2();
    MasterWriteI2C2(0xff);      //sleep command
    IdleI2C2();				
   
    MasterReadI2C2();           //Read in PEC
    IdleI2C2();	        
    AckI2C2();                  //Acknowledge PEC
    IdleI2C2();
    StopI2C2();
}
int RcvIRTemp(unsigned int address){
    rcv = 0;
    StartI2C2();				//Send line start condition
	IdleI2C2();			        //Wait to complete
	MasterWriteI2C2(0xb4);	//Write slave addr WRITE (OR 0)
    IdleI2C2();
    MasterWriteI2C2(0xf0); //command
//    //Command to read Tobj1 on ir sensor's ram: 000 = read ram; 0x07 = tobj1
	IdleI2C2();				//Wait to complete
    
//    StopI2C2();             //restart
//    IdleI2C2();
//    StartI2C2();
//    IdleI2C2();
//    
//    MasterWriteI2C2(0xb5); //Write the slave address, READ (OR 1)
//    IdleI2C2(); 
    
    MasterReadI2C2();		//Read in LSB
    IdleI2C2();	        
    AckI2C2();              //Acknowledge LSB
    IdleI2C2();
    
    MasterReadI2C2();		//Read in MSB
    IdleI2C1();	        
    AckI2C2();              //Acknowledge MSB
    IdleI2C2();
    
    MasterReadI2C2();		//Read in PEC
    IdleI2C1();             
    AckI2C2();              //Acknowledge MSB
    IdleI2C2();
   
	StopI2C2();				//Send line stop condition
	IdleI2C2();				//Wait co complete
	return rcv;				//Return read value    
}
Пример #6
0
/*****************************************************************************
* Function Name : gyroReceiveByte
* Description   : Receive a byte from gyroscope
* Parameters    : None
* Return Value  : None
*****************************************************************************/
static inline unsigned char gyroReceiveByte(void) {
    return MasterReadI2C2();
}
Пример #7
0
unsigned char i2cReceiveByte(unsigned char channel) {
    if (channel == 1) { return MasterReadI2C1(); }
    else              { return MasterReadI2C2(); }
}