# UART baudrate issue in ADUC7020

Hi I have a question:

I  am running aduc7020 with 1 MHz with CD bit 5. I set the dL=4 according  to that for 9600 baudrate. but it doesn't work. On datasheet it never  mention about the CD = 5.

Can you throw some light on this.

nehal

• Hi nsolanki

You mention CD bit 5 and CD = 5 but I assume you mean CD = 5 in both cases and operation at 1.31MHz.  At this clock speed you can not use the "normal" baudrate generation because the DL value would need to be a fraction.  Instead you need to use the fractional diver as described in the Rev D data sheet on page 66.

Regards

EckartH

• I tried even that. in formula they gave i put CD = 5; DL = 4, baudrate = 9600 and core frequency 41.78MHz. value of m = 1 and n comes 128. I change the comdiv2 t0 0x8440 but it doesn't work. In datasheet it ask to refer to the table for given dl value and they don't have dl value for CD=5. if you calculate then dl comes 4.xx for cd =5, so used that value.

 baudrate cd dl acutal baudrate %error 9600 0 0x88 9600 0 19200 0 0x44 19200 0 115200 0 0x0b 118691 3 9600 3 0x11 9600 0 19200 3 0x08 20400 6.25 115200 3 0x01 163200 41.67
• I tried it quickly and even with the normal divider set to 4 (calculates to 4.25) it works on my PC with a UART to USB converter on Windows 7 64-bit w/o any problem @ CD = 5 on a HyperTerminal.

The math will tell you the same. Using the 4 as DL in COMDIV0 the baud rate is calculated as 10200 Baud. This is 600 Baud apart the intended setting of 9600 Baud, or a error of 6.25%, which is well within the +/- 10% typically max. accepted baud rate error.

But as EckartH pointed out, you better use the fractional divider and set the following values to achieve 0% baud rate error => M = 1, N = 128, DL = 4, CD = 5

Or better set the MMRs as

COMDIV0 = 0x04;

COMDIV1 = 0x00;

COMDIV2 = 0x8880;