SPRUIW9C October 2021 – March 2024 TMS320F280033 , TMS320F280034 , TMS320F280034-Q1 , TMS320F280036-Q1 , TMS320F280036C-Q1 , TMS320F280037 , TMS320F280037-Q1 , TMS320F280037C , TMS320F280037C-Q1 , TMS320F280038-Q1 , TMS320F280038C-Q1 , TMS320F280039 , TMS320F280039-Q1 , TMS320F280039C , TMS320F280039C-Q1
The CAN-FD bootloader asynchronously transfers code from CAN-FD to internal memory and follows the same bootloader execution flow as Section 4.8.8.2.5. The host can be any CAN-FD node. The communication is first done with 11-bit standard identifiers (with a MSGID of 0x1) using two bytes per data frame. The CAN-FD uses a fixed 64-byte payload size and default bit rate of 1Mbps for nominal phase and 2Mbps for data phase. Bit data timing can be optionally reconfigured after receiving first data segment. The CAN-FD supports the same debug boot mode and GPIO option 0 as the CAN bootloader.
Mailbox 1 is programmed with a standard MSGID of 0x1 for boot-loader communication. The CAN-FD host can transmit only two bytes at a time, LSB first and MSB next. For example, to transmit the word 0x08AA to the device, transmit AA first, followed by 08. The program flow of the CAN-FD bootloader is identical to the CAN bootloader. The data sequence for the CAN-FD bootloader is shown in Table 4-38.
Bytes | Byte 1 of 2 | Byte 2 of 2 | Description | |
---|---|---|---|---|
1 | 2 | AA | 08 | 0x08AA (KeyValue for memory width = 16 bits) |
3 | 4 | XX (for example, BB) |
XX (for example, AA) |
0:
Ignored Nonzero: Custom nominal bit register timing [31:16] |
5 | 6 | XX (for example, DD) |
XX (for example, CC) |
0:
Ignored Nonzero: Custom nominal bit register timing [15:0] (NBTR = 0xAABB CCDD) |
7 | 8 | XX (for example, BB) |
XX (for example, AA) |
0:
Ignored Nonzero: Custom nominal bit register timing [31:16] |
9 | 10 | XX (for example, DD) |
XX (for example, CC) |
0:
Ignored Nonzero: Custom nominal bit register timing [15:0] (DBTR = 0xAABB CCDD) |
11 | 12 | 00 | 00 | reserved |
13 | 14 | 00 | 00 | reserved |
15 | 16 | 00 | 00 | reserved |
17 | 18 | 00 | 00 | reserved |
19 | 20 | BB | AA | Entry point PC[22:16] |
21 | 22 | DD | CC | Entry point PC[15:0] (PC = 0xAABB CCDD) |
23 | 24 | NN | MM | Block size of the first block of data to load = 0xMMNN words |
25 | 26 | BB | AA | Destination address of first block Addr[31:16] |
27 | 28 | DD | CC | Destination address of the first block Addr[15:0] (Addr = 0xAABB CCDD) |
29 | 30 | BB | AA | First word of the first block in the source being loaded = 0xAABB |
... ... ... |
.... Data for this section. ... |
|||
. | BB | AA | Last word of the first block of the source being loaded = 0xAABB | |
. | NN | MM | Block size of the second block to load = 0xMMNN words | |
. | BB | AA | Destination address of the second block Addr[31:16] | |
. | DD | CC | Destination address of the second block Addr[15:0] | |
. | BB | AA | First word of the second block in the source being loaded | |
. | … | |||
n | n+1 | BB | AA | Last
word of the last block of the source being loaded (More sections if required) |
n+2 | n+3 | 00 | 00 | Block size of 0000h - indicates end of the source program |