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(); }
/********************************************************************************** 测试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); }
/*----------------------------------------------------------------------------* * NAME * I2CRelease * * DESCRIPTION * This function releases the I2C bus * * RETURNS * Nothing * *----------------------------------------------------------------------------*/ extern void I2CRelease(void) { bus_I2C_status = i2c_bus_released; I2cReset(); }