Yahoo Groups archive

Lpc2000

Index last updated: 2026-04-28 23:31 UTC

Message

Confirmed: U1DLL = 0x01 does not recieve on LPC2148 using fractional divisor

2005-11-03 by jp_thrower

This post is a followup to my original post number 9985.

When U1DLL = 0x01, U1DLM=0x00, and is used with the fractional divisor
U1FDR to set the baudrate, the device properly transmits at the
assigned baudrate, but does not receive at the assigned baudrate.

I have conducted a series of elementary tests using the frequency
117187 and a PC com port terminal set to 115200 baud.  The program
(genesis from Keil's example to give credit) transmits characters from
the LPC2148 to the PC, reads characters from the PC, and echos them
back to the PC.

The frequency 117187 can be acquired with multiple settings using a 12
MHz clock, or 15 MHz PCLK:

UART_baudrate = PCLK/(16*(16*U1DLM+U1DLL)) * (MulVal/(MulVal+DivAddVal))

U1DLL, MulVal, DivAddVal, Equation
0x01    0x1        0x7    117187 = 15000000/16/(1)*(1/8)
0x02    0x1        0x3    117187 = 15000000/16/(2)*(1/4)
0x03    0x9        0xF    117187 = 15000000/16/(3)*(9/24)

In each case, the tranmit of characters worked fine, but in the case
of 0x01, the receive characters were garbled.

I do have set U1FCR |= 0x01, which the manual says is required for
correct operation.

Is there an errata on this?  Does UART0 have the same issue?
Is there a way around this that I don't know?
This is important to me because I have to work with 500000 baud
signal, and U1DLL=1 seems like my only option without swapping crystals.

JP

Attachments

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.