ML610Q411/ML610Q412/ML610Q415 User’s Manual
Chapter 10
Timers
10 – 23
10.3.3
16-bit timer frequency measurement mode application for setting uart baud-rate
For example, when the target baud-rate is 9600bps and the clock is HSCLK(500kHz), the UART0 baud-rate register
(UA0BRTH, UA0BRTL) should be set as follows. See Section 14.3.2. in UART chapter.
UA0BRTH, UA0BRTL = 500000/9600 - 1 = 51 (decimal) = 33(Hexadecimal)
However, actual 500kHz RC oscillation clock has temperature variation and production tolerance, the calculation by
using the fixed value of 500kHz can not make accurate baud-rate. To compensate it, count the frequency in the
frequency measurement mode to set the baud-rate again before operating UART communication.
After finishing the clock count in the frequency measurement mode, assuming HTBCLK is 451kHz, data of TM2C
register and TM3C register will be:
N1 = 451000 * 437 / 32768
= 6014 (Decimal)
= 177E (Hexadecimal)
= 1011101111110 (Binary)
As (437 / 32768) sec is equivalent to 128 clocks at 9600Hz (more precisely, 9598Hz), a division of the count
(N1) by 128 equals frequency ratio (N2) between the frequency of HTBCLK and 9600Hz.
For the calculation, the accuracy of baud-rate depends on truncating (1) or rounding (2) the data.
UA0BRTH regiser and UA0BRTL register have to be set as follows. See the previous secntion 10.3.2. and
section 14.3.2. in UART chapter.
UA0BRTH, UA0BRTL = (the frequency ratio of HTBCLK and 9600Hz) - 1 = (N1/128)-1 = N2 -1
(1) Round data in caluculation
N1 = 1011101111110 (binary)
N2 = 101111 (binary) = 47 (decimal) = 2F (hexadecimal)
Set N2-1 (= 2E) to UA0BRTH and UA0BRTL registers.
In this case, the acual baud-rate will be 9595.744681.. [bps], so the accuracy = ((9595.744681/9600) -1)*
100= -0.04..[%].
(2) Trancate data in calucuation (the accuracy of baud-rate becomes worse)
N1 = 1011101111110 (binary)
N2 = 101110 (binary) = 46 (decimal) = 2E (hexadecimal)
Set N2-1 (= 2D) to UA0BRTH and UA0BRTL registers.
In this case, the acual baud-rate will be 9804.347826.. [bps], so the accuracy = ((9804.347826/9600) -1)*
100= 2.12..[%].
Table 11-6 Baud-rate and theoretical accuracy
Baud-rate[bps]
Data setting to UA0BRTH register and UA0BRTH register
Theoretical accuracy
300
Round off {N1/4 (2bit right-shift) } - (minus) 1.
600
Round off {N1/8 (3bit right-shift) } - (minus) 1.
1200
Round off {N1/16 (4bit right-shift) } - (minus) 1.
2400
Round off {N1/32 (5bit right-shift) } - (minus) 1.
4800
Round off {N1/64 (6bit right-shift) } - (minus) 1.
9600
Round off {N1/128 (7bit right-shift) } - (minus) 1.
~ +/- 2%
19200
Round off {N1/256 (8bit right-shift) } - (minus) 1.
+/- 2% ~ 2.5%
38400
Round off {N1/512 (9bit right-shift) } - (minus) 1.
57600
Round off {N1/768} - (minus) 1.
} 2.5% ~