34.6.2.4.6 10-Bit Addressing

When 10-bit addressing is enabled by the Ten Bit Addressing Enable bit in the Address register (ADDR.TENBITEN = 1) and the Address bit field ADDR.ADDR is written, the two address bytes are transmitted as illustrated in the following figure. The addressed client acknowledges the two address bytes, and the transaction continues. Regardless of whether the transaction is a read or write, the host must start by sending the 10-bit address with the direction bit (ADDR.ADDR[0]) being ‘0’.

If the host receives a NACK after the first byte, the Write Interrupt flag is raised and the STATUS.RXNACK bit is set. If the first byte is acknowledged by one or more clients, the host proceeds to transmit the second address byte and the host will first see the Write Interrupt flag after the second byte is transmitted. If the transaction direction is read-from-client, the 10-bit address transmission must be followed by a repeated start and the first 7 bits of the address with the read/write bit equal to ‘1’.

Figure 34-8. 10-Bit Address Transmission for a Read Transaction
This implies the following procedure for a 10-bit read operation:
  1. Write the 10-bit address to ADDR.ADDR[10:1]. ADDR.TENBITEN must be ‘1’, the direction bit (ADDR.ADDR[0]) must be ‘0’ (can be written simultaneously with ADDR).
  2. When

    the Host on the Bus interrupt is asserted, write the ADDR[7:0] register to ‘11110 address[9:8] 1’. ADDR.TENBITEN must be cleared (can be written simultaneously with ADDR).
  3. Proceed to transmit data.