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 bootloader asynchronously transfers code from CAN-A to internal memory as shown in Figure 4-17. The host can be any CAN node. The communication is first done with 11-bit standard identifiers (with a MSGID of 0x1) using two bytes per data frame. The host can download a kernel to reconfigure the CAN if higher data throughput is desired.
The bit timing registers are programmed in such a way that a 100kbps bit rate is achieved with a 20MHz external oscillator, as shown in Table 4-36.
OSCCLK | SYSCLK | Bit Rate |
---|---|---|
20MHz | 10MHz | 100kbps |
The SYSCLKOUT values shown are the reset values with the default PLL setting. The BRP and bit-time values are hard-coded to 10 and 20, respectively.
Mailbox 1 is programmed with a standard MSGID of 0x1 for boot-loader communication. The CAN 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 bootloader is identical to the SCI bootloader. The data sequence for the CAN 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 | 00 | 00 | reserved |
5 | 6 | 00 | 00 | reserved |
7 | 8 | 00 | 00 | reserved |
9 | 10 | 00 | 00 | reserved |
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 |