アプリケーションノート 2935

Design Considerations for CAN Bus and Asynchronous Serial


要約: This application note gives guidance on system CPU crystal selection for DS80C400 and DS80C390 microcontrollers when using asynchronous serial and CAN.

Introduction

When designing a system that requires both CAN bus and asynchronous serial interfaces on a DS80C390 or DS80C400 processor, the designer can encounter problems choosing a CPU crystal that allows use of standard bit rates on both interfaces. The CAN bus requires less than 0.5% error, while an asynchronous serial interface requires 2.5% error or less. Common serial baud-rate crystals such as 11.0592MHz, 14.7456MHz, and 18.432MHz will not allow high-bit-rate CAN transmission without violating CAN bus bit-error guidelines. To find the compromise for both interfaces, the designer must first understand how each I/O block generates its bit clock.

CAN Bus Timing

Bit rates for the CAN controller are generated from the microcontroller system clock and are affected by the on-board crystal multiplier (doubling and quadrupling do affect the input clock to the CAN controller). The clock signal is first divided by two and then by the baud-rate prescaler (BPR), which determines the time quantum (tqu). The CAN specification requires that each bit time be composed of between 8tqu and 25tqu. After passing through the BPR, the clock signal is divided once again by the user-specified divisor, which is composed of tSEG1 and tSEG2 plus tSYNC_SEG of 1tqu. For more detailed information, refer to Section 19 of the High-Speed Microcontroller User's Guide: DS80C390 Supplement.

The bit rate is determined by the following equation:

Now, we calculate the reload and actual bit rate:

All useful frequencies will have an error of less than 0.005.

Example of unusable crystal for 1Mbps CAN bit rate:

           reload = 36.864E6 / (2*1E6) = 18.432
           actual bit rate = 36.864E6 / (2*18) = 1024000
           error = (1024000 - 1000000) / 1000000 = 0.024

Example of acceptable crystal for 1Mbps CAN bit rate:

           reload = 36E6 / (2*1E6) = 18
           actual bit rate = 36E6 / (2*18) = 1000000
           error = (1000000 - 1000000) / 1000000 = 0.0

           (tSEG1 + tSEG2 + tSYNC_SEG) = 18 / BPR

Remembering that tSYNC_SEG is always 1, and choosing 1 for BPR gives:

           (tSEG1 + tSEG2) = 17

The designer picks the appropriate TSEG values from this constraint.

Async Serial Using Timer 2

Bit rates for Serial Port 0 using Timer 2 are calculated while Timer 2 is in 16-bit autoreload mode. Timer 2 runs off the crystal inputs and is not affected by any crystal multiplier settings. For more detailed information, refer to Section 12 of the High-Speed Microcontroller User's Guide.

The bit rate is determined by the following equations:

All useful frequencies will have an error of less than 0.025.

Example of unusable crystal for 115200 bit/s:

           reload = 16E6 / (32 x 115200) = 4.340
           actual = 16E6 / (32 x 4) = 125000
           error = (125000 - 115200) / 115200 = 0.0851

Example of acceptable crystal for 115200 bit/s:

           reload = 18E6 / (32 x 115200) = 4.883
           actual = 18E6 / (32 x 5) = 112500
           error = (112500 - 115200) / 115200 = 0.0234

Async Serial Using Timer 1

Bit rates for Serial Ports 0 and 1 using Timer 1 are calculated while Timer 1 is in 8-bit autoreload mode. An added feature of this process is the ability to generate baud rates based on divide-by-4 or divide-by-12 from the external crystal or the system clock. In divide-by-4 mode, the input clock is generated from the system clock (f MULT), while in divide-by-12, the base frequency of the external crystal will be used (f osc). You can also enable a serial baud-rate doubler by setting the appropriate SMOD (SMOD_0 or SMOD_1) bit. For more detailed information, refer to Section 12 of the High-Speed Microcontroller User's Guide.

Timer 1 in Divide-by-4 Mode

The bit rate is determined by the following equations:

All useful frequencies will have an error of less than 0.025

Example of unusable crystal:

           reload = 20E6 / (64 x 115200) = 2.713
           actual = 20E6 / (64 x 3) = 104167
           error = (104167 - 115200) / 115200 = 0.096
Example of acceptable crystal:

           reload = 22E6 / (64 x 115200) = 2.984
           actual = 22E6 / (64 x 3) = 114583
           error = (114583 - 115200) / 115200 = 0.0054

Timer 1 in Divide-by-12 Mode

All useful frequencies will have an error of less than 0.025

Example of unusable crystal for 115200 bit/s:

           reload = 18E6 / (192 x 115200) = 0.814
           actual = 18E6 / (192 x 1) = 93750
           error = (93750 - 115200) / 115200 = 0.186

Example of acceptable crystal for 115200 bit/s:

           reload = 22E6 / (192 x 115200) = 0.995
           actual = 22E6 / (192 x 1) = 114583
           error = (114583 - 115200) / 115200 = 0.0054

Suggested Crystal Values for 115200 Serial and CAN Bus

The following table lists crystal frequencies that allow 115,200bps asynchronous serial using Serial 0 and Timer 2 and a 1Mb CAN bus.

Note: These values assume that the designer is not using the system clock multiplier.

CRYSTAL CAN ERROR (%) SERIAL ERROR (%)
18000000 0.00 2.34
22000000 0.00 0.54
26000000 0.00 0.76
30000000 0.00 1.73
34000000 0.00 2.48
36000000 0.00 2.34
40000000 0.00 1.36
44000000 0.00 0.54
48000000 0.00 0.16
52000000 0.00 0.76
54000000 0.00 2.34
56000000 0.00 1.27
60000000 0.00 1.73
64000000 0.00 2.12
66000000 0.00 0.54
68000000 0.00 2.48
72000000 0.00 2.34