Ejemplo n.º 1
0
extern void readChannels(uint8 channel_map, uint8 *data) {

    I2cReset();
    I2cRawCommand(i2c_cmd_send_start, TRUE, I2C_WAIT_CMD_TIMEOUT);
    I2cRawWriteByte((0b0100011 << 1) | 0);
    I2cRawCommand(i2c_cmd_wait_ack, TRUE, I2C_WAIT_ACK_TIMEOUT);
    I2cRawWriteByte(0b01110010);
    I2cRawCommand(i2c_cmd_wait_ack, TRUE, I2C_WAIT_ACK_TIMEOUT);  
    /*Channel map*/
    I2cRawWriteByte((channel_map >> 4) & 0x0F);
    I2cRawCommand(i2c_cmd_wait_ack, TRUE, I2C_WAIT_ACK_TIMEOUT);  
    I2cRawWriteByte(((channel_map << 4) & 0xF0) | 0b1000);
    I2cRawCommand(i2c_cmd_wait_ack, TRUE, I2C_WAIT_ACK_TIMEOUT);  
    I2cRawCommand(i2c_cmd_send_stop, TRUE, I2C_WAIT_CMD_TIMEOUT);
    
    /*Setup conversion register for read access*/
    I2cRawCommand(i2c_cmd_send_start, TRUE, I2C_WAIT_CMD_TIMEOUT);
    I2cRawWriteByte(0b01000110);
    I2cRawCommand(i2c_cmd_wait_ack, TRUE, I2C_WAIT_ACK_TIMEOUT);    
    I2cRawWriteByte(0b01110000);
    I2cRawCommand(i2c_cmd_wait_ack, TRUE, I2C_WAIT_ACK_TIMEOUT);
    
    /*read*/
    I2cRawCommand( i2c_cmd_send_restart, TRUE, I2C_WAIT_CMD_TIMEOUT);
    I2cRawWriteByte(0b01000111);

    I2cRawCommand(i2c_cmd_wait_ack, TRUE, I2C_WAIT_ACK_TIMEOUT);
    I2cRawRead(&data[0], bitcount(channel_map)*2);
    I2cRawCommand(i2c_cmd_send_stop, TRUE, I2C_WAIT_CMD_TIMEOUT);
    
    I2cRawTerminate();

}
Ejemplo n.º 2
0
/**********************************************************************************
测试EPPROM
**********************************************************************************/
void Test_Epprom_Err(void)
{  
  INT8U Err;  
  mem_set(Temp_Buf_PUCK,0xa5,sizeof(Temp_Buf_PUCK),Temp_Buf_PUCK,sizeof(Temp_Buf_PUCK));
  I2cReset();
  Read_Storage_Data(0x10003,Temp_Buf_PUCK,Temp_Buf_PUCK,180,&Err);
  
}
Ejemplo n.º 3
0
/*----------------------------------------------------------------------------*
 *  NAME
 *      I2CRelease
 *
 *  DESCRIPTION
 *      This function releases the I2C bus
 *
 *  RETURNS
 *      Nothing
 *
 *----------------------------------------------------------------------------*/
extern void I2CRelease(void)
{
    bus_I2C_status = i2c_bus_released;
    I2cReset();
}