I2C_Boot
Set CopyWord function
pointer to
I2C_CopyWord
Enable SDAA and
SCLA pins
Enable pullups on
SDAA and SCLA
Enable I2C-A clock
Set slave address 0x50
I2C prescaler I2CPSC = or 0
100-kHz bit rate
Enable TX/RX FIFOs to
receive 2 bytes.
Place I2C in master
transmitter mode
Set EEPROM address
pointer to 0x0000
NACK
received
?
Yes
Read KeyValue
No
Valid
KeyValue
(0x08AA)
?
Jump to Flash
No
Read I2CPSC value
Read I2CCLKH value
Read 12CCLKL value
Put 12c-A in Reset
Set I2CPSC value
Set I2CCLKH value
Set I2CCLKL value
Bring I2C-A out of Reset
Read and discard 5
reserved words
Yes
Read EntryPoint
address
Call CopyData
Return
EntryPoint
Jump to Flash
C-Boot ROM Description
651
SPRUHE8E – October 2012 – Revised November 2019
Copyright © 2012–2019, Texas Instruments Incorporated
ROM Code and Peripheral Booting
Figure 6-24. Overview of I2C_Boot Function
The bit-period prescalers (I2CCLKH and I2CCLKL) are configured by the bootloader to run the I2C at a 50
percent duty cycle at 100-kHz bit rate (standard I2C mode) when the system clock is 10 MHz. These
registers can be modified after receiving the first few bytes from the EEPROM. This allows the
communication to be increased up to a 400-kHz bit rate (fast I2C mode) during the remaining data reads.
Arbitration, bus busy, and slave signals are not checked. Therefore, no other master is allowed to control
the bus during this initialization phase. If the application requires another master during I2C boot mode,
that master must be configured to hold off sending any I2C messages until the application software
signals that it is past the bootloader portion of initialization.
The non-acknowledgment bit is checked only during the first message sent to initialize the EEPROM base
address. This is to make sure that an EEPROM is present at address 0x50 before continuing. If an
EEPROM is not present, code will The non-acknowledgment bit is not checked during the address phase
of the data read messages (I2C_Get Word). If a non acknowledgment is received during the data read
messages, the I2C bus will hang.
shows the 8-bit data stream used by the I2C.