Calibre UK UCA93 Appendix a I2C Communications Adapter Status Codes, Bit 7 MSB The old PIN Bit

Page 21

CALIBRE

Appendix A I2C Communications Adapter Status Codes

This is an eight bit register, read using the GetStatus routine. Each individual bit has its own meaning as follows:

Bit 7 (MSB) - The (old) PIN Bit

To all intents and purposes, this bit is now redundant. Previous Calibre I2C products used this bit to synchronise data transfers between the I2C bus and the host PC. On the UCA93 synchronisation is achieved by the Adapter returning a status byte to the host when the requested function has completed or timed out. Whereas the value of the PIN bit used to be important, now it is whether or not the status byte has been returned to the host that is important. The PIN bit roughly mimics the behaviour of the old products so that customers still feel comfortable with it, but software should not rely on it. Other bits in the status word are still important, and should be interpreted as below.

Bit 6 – The Timeout Bit Normally this bit should read as a 0. If it is set the Adapter timed out when attempting some master activity. This could mean that another master has control of the bus or that a bus error has occurred or that a slave device is seriously slowing down the bus. Timeout normally occurs about 500uS after a master function is requested. This is a new bit which was not implemented on previous generations of Calibre products.

Bit 5 - The (old) STS Bit

This bit normally reads as a 0 and is set this way only as legacy support. On previous Calibre I2C products indicated that a stop had been detected whilst in slave receiver mode. Software should not rely on this bit.

Bit 4 - The BER (Bus Error) Bit

This bit should normally read as a 0. It is set high when a misplaced Start or Stop has been detected. This can be quite serious since the I2C devices on the bus may be left in an undefined state after a bus error has occurred - in some circumstances the only way to get the bus going again may be to reset all the I2C devices on it.

Bit 3 - The Ack Bit

This bit indicates the state of the 9th I2C bit which is the acknowledge bit. It is active low so reads as 0 for if the receiver acknowledged and 1 if the receiver did not acknowledge. In a master SendAddress or Restart function it indicates whether the slave is present or not. In a master write operation it indicates whether the slave acknowledged the data byte or not, in a master read it indicates whether or not the master was requested to acknowledge the data from the slave or not.

Bit 2 - The (old) AAS Bit

This bit should normally read as a 0 and is set this way for legacy support. On previous Calibre I2C products indicated that a device had been addressed whilst in a slave mode. Software should not rely on this bit.

Bit 1 - The LAB (Lost Arbitration) Bit

This bit should read as a 0. It is set = 1 when, in multimaster operation (more than one master present on the I2C bus) arbitration is lost to another master on the I2C bus.

Bit 0 - The BB (Bus Busy) Bit

This bit reads as a 1 when the bus is idle. Once a Start has been detected it goes low and stays low until the transfer is terminated correctly with a Stop. New transmissions should therefore not be attempted if this bit is low – it may be that another master has control. If there is no other master on the system it may be that a slave is stuck or a bus error has occurred in which case a Recover may free up the bus.

Issue 1.0

Page 18

01/07/03

 

Image 21
Contents Calibre Calibre Contents General Introduction Connecting the Adapter to your SystemPacking List Bus Termination and ProtectionBus Capacitance Limitations/Cable Choice Variable Voltage Bus Power SupplyIntroduction Installing the AdapterLibraries for Programming in Microsoft Windows Environments Function Prototypes Calibre Int ownaddress Int SlaveBlockTimeoutInt ClockSpeed Int BusVoltageSendAddress Int DataByteInt I2CData NoneInt I2Cstatus Using the AdapterInt NoTries Int NoBytesToSendInt DataVal Returns an unused integerInt Timeout Int RdDataInt NoBytesToTransmit Int NoBytesToReceive Int PullupVoltage Int Int IOStateSendAddressNoStatus WriteByteNoStatus Stop Real-Time Bus MonitorAppendix a I2C Communications Adapter Status Codes Bit 4 The BER Bus Error BitBit 7 MSB The old PIN Bit Bit 5 The old STS BitPolling the Status Register and how to avoid it USB Bus CharacteristicsBlock Functions Block Write FunctionSlave Receiver Function Slave Transmitter FunctionCalibre Question Get corrupted transfers why is this? When the the Most Commonly Asked I2C QuestionsGeneral Questions Question Do you have software to talk to my........?