UART/IrDA Control and Status Registers
12-80
The beginning of frame length register (EBLR) specifies the number of BOF
+ XBOFs to transmit in IrDA SIR operations. Value set into this register must
take into account the BOF character; to send sent one BOF with no XBOF, this
register must be set to 1. To send one BOF with N XBOF, this register must be
set to N+1. Furthermore, the value 0 sends 1 BOF plus 255 XBOF.
Table 12–83. BOF Length Register (EBLR)
Bit
Name
Function
R/W
Reset
Value
7–0
EBLR
This register allows definition of up to 176 XBOFs,
the maximum required by IrDA specification.
W
00000000
Table 12–84. DIV1.6 Register (DIV16)
Bit
Name
Function
R/W
Reset
Value
7–0
DIV_1.6L
Used to generate the 1.6-
µ
s pulse
R/W
00000000
In SIR, the DIV1.6 register (DIV16) is used to generate 1.6
-
µ
s
pulse encoding
instead of 3/16 encoding when selected using ACREG[7]. The value of
DIV_1.6 is coded on ten bits by MDR2[4:3] for its MSB and DIV_1.6[7:0] for
its MSB.
In SIR mode, DIV1.6 must be programmed as follows:
DIV1.6 = [(3/(16 * baud rate)) - 1.6E - 6] * FCLK_frequency
DIV1.6 = 0 is forbidden. If the calculated value Div_1.6 is between 0 and 1 the
rounding must be done to 1.
With an input frequency of 13 MHz:
At 115200 bauds
DLH = 0x00
DLL = 0x07
MDR24:3 = 0x00
DIV_1.6 = 0x01
At 57600 bauds
DLH = 0x00
DLL = 0x0E
MDR24:3 = 0x00
DIV_1.6 = 0x16
At 38400 bauds
DLH = 0x00
DLL = 0x15
MDR24:3 = 0x00
DIV_1.6 = 0x2B
At 19200 bauds
DLH = 0x00
DLL = 0x2A
MDR24:3 = 0x00
DIV_1.6 = 0x6A
At 9600 bauds
DLH = 0x00
DLL = 0x55
MDR24:3 = 0x00
DIV_1.6 = 0xEB
At 2400 bauds
DLH = 0x01
DLL = 0x53
MDR24:3 = 0x03
DIV_1.6 = 0x96E5