SPRUHM8K December 2013 – May 2024 TMS320F28374D , TMS320F28375D , TMS320F28376D , TMS320F28377D , TMS320F28377D-EP , TMS320F28377D-Q1 , TMS320F28378D , TMS320F28379D , TMS320F28379D-Q1
The CAN bootloader asynchronously transfers code from CAN-A to internal memory. 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 50kbps bit rate is achieved with the 10MHz INTOSC1 oscillator, a shown in Table 4-25.
OSCCLK | SYSCLKOUT | Bit Rate |
---|---|---|
10MHz | 10MHz | 50kbps |
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 2 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-26.
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 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 2nd block to load = 0xMMNN words | |
. | BB | AA | Destination address of second block Addr[31:16] | |
. | DD | CC | Destination address of 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 |