写这些8位寄存器引起UART设备以ULCR(线路控制寄存器)中配置的格式在UART总线上传输5到8个数据位。在FIFO模式下,写入UTHR的数据被放入FIFO。写入UTHR的数据是送到UART总线上的数据,并且写入UTHR的第一个字节就是送到总线上的第一个字节。UDSR[TXRDY]指示何时FIFO满了。参见表18-21和表18-22。
图18-3显示了UTHR中的位。
图18-3 发送器保持寄存器(UTHR1和UTHR2)
表18-5说明了UTHR。
表18-5 UTHR字段说明 位 0-7 名字 DATA 说明 写入UTHR的数据 [只写]
18.3.1.3 分频器高位和低位有效字节寄存器(UDMB和UDLB)
UDLB和分频器高有效字节寄存器(UDMB)连接在一起构成分频器,用来实现DUART输入时钟的分频。波特率发生器的输出频率为波特率的16倍,因此期望的波特率=平台时钟频率/(16x[UDMB||UDLB])。等价的,[UDMB||UDLB||0b0000]=平台时钟频率/期望的波特率。可以通过特定的输入时钟频率产生的波特率如表18-8所示。
图18-4显示了UDMB的位。
表18-4 分频器高字节寄存器(UDMB1和UDMB2)
表18-6说明了UDMB。
表18-6 UDMB字段说明
位 0-7
名字 UDMB 说明 分频器高有效字节 图18-5显示了UDLB的位。
表18-5 分频器低有效字节寄存器(UDLB1和UDLB2)
表18-7说明了UDLB。
表18-7 UDLB字段说明 位 0-7
表18-8给出了不同输入时钟频率的波特率。
表18-8 波特率示例 波特率 (十进制) 分频器 十进制 十六进制 输入时钟 (系统时钟) 频率 (MHz) 266 266 266 266 266 266 333 333 333 333 333 333 误差百分数 (十进制) 名字 UDLB 说明 分频器最低有效字节。它和UDMB连接在一起。 9,600 19,200 38,400 56,000 128,000 256,000 96,00 19,200 38,400 56,000 128,000 256,000 1736 868 434 298 130 65 2170 1085 543 372 163 81 6C8 364 1B2 12A 82 41 87A 43D 21F 174 A3 51 0.0064 0.0064 0.0064 0.1280 0.1600 0.1600 0.0064 0.0064 0.0858 0.0064 0.1472 0.4672
为了得到误差百分数,执行以下三个步骤:
1.将输入时钟频率(ICF)除以实际频率输入(AFI),得到正确的除数值(ICF/AFI,这里AFI=波特率X16)。 2.将除数值减去1。
3.将第2步的结果乘以100,计算出最终的百分数错误。结果取绝对值(没有负数)。
上述三步可以用下面的等式来表示:
百分数错误值=(1-AFI/ICF)x100
18.3.1.4 中断允许寄存器(UIER1和UIER2)
UIER使用户可以屏蔽到MPC8349E可编程中断控制器(PIC)的特定UART中断。 图18-6显示了UIER的位。
图18-6 中断允许寄存器(UIER1和UIER2)
表18-9说明了UIER的字段。
表18-9 UIER字段说明 位 0-3 4 名字 - EMSI 说明 保留 允许MODEM状态中断 0 屏蔽UMSR[DCTS]置位时引起的中断。 1 在UMSR[DCTS]改变状态时,允许并宣告中断。 允许接收器线路状态中断 0 屏蔽对ULSR过载位、奇偶校验位、帧格式错误位或断开中断位置位时产生的中断。 1 在ULSR过载位、奇偶校验位、帧格式错位或断开中断置位时,允许并宣告中断。 允许发送器保持寄存器空中断 0 屏蔽由ULSR[THRE]置位时引起的中断。 1 当ULSR[THRE]置位时,允许并宣告中断。 允许接收数据可用中断 0 屏蔽新的接收数据可用或接收数据超时时的中断。 1 当从外部设备接收了新的数据字符和/或在FIFO模式下发生超时中断时,允许并宣告中断。 5 ERLSI 6 ETHREI 7 ERDAI
18.3.1.5 中断ID寄存器(UIIR1和UIIR2)
UIIR指示来自相应UART的中断挂起以及什么类型的中断是活动的。它们还指示FIFO是否被允许。
DUART将中断分成四个优先级,并将它们记录到对应的UIIR中。按优先顺序的四级中断条件如下: ? 接收器线路状态
? 接收数据就绪/字符超时 ? 发送器数据保持寄存器空 ? MODEM状态
更加详细的说明见表18-11。 在读取UIIR时,相关的DUART串行信道冻结所有中断并指示挂起的最高优先级中断。在出现读事务时,相关的DUART串行信道记录新中断,但不改变UIIR的内容,直到读访问完成。
图18-7显示了UIIR的位。
图18-7 中断ID寄存器(UIIR1和UIIR2)
表18-10说明了UIIR的字段。
表18-10 UIIR字段说明 位 0-1 2-3 4 名字 FE - IID3 保留 中断ID位,标识表18-11中说明的尚未处理的最高优先级的中断。仅当FIFO模式的超时中断挂起时才将IID3和IID2一起置位。 中断ID位,标识表18-11中说明的尚未处理的最高优先级的中断。 IID0指示有中断挂起 0 UART有一个活动中断等待服务。 1 没有挂起的中断。 说明 FIFO允许。反映UFCR[FEN]的设置。 5-6 7 IID2-IID1 IID0
UIIR寄存器包含的位的说明见表18-11。
表18-11 UIIR IID位汇总 IID3-IID0 0001 0110 0100 优先级 - 最高 第二 - 接收器线路状态 收到的数据可用 中断类型 - 过载错、奇偶校验错、帧格式错或断开中断。 FIFO模式下接收的数据可用或达到触发水平。 中断说明 如何复位中断 - 读线路状态寄存器 读接收器缓冲寄存器或接收器FIFO中的字节数目降到触发水平以下。 读接收器缓冲寄存器 1100 第二 字符超时 在最近的四个字符时间内没有字符送入或者移出接收器FIFO,并且在接收器FIFO中至少有1个字符。 0010 0000 第三 第四 UTHR空 MODEM状态 发送器保持寄存器空。 自上一次读UMSR以来读UIIR或者写UTHR 读UMSR CTS输入值发生了变化。
18.3.1.6 FIFO控制寄存器(UFCR1和UFCR2)
UFCR用于允许和清除接收器和发送器FIFO,设置接收器FIFO触发水平以控制接收数据可用中断,以及选择DMA信号的类型。
只能在置位FIFO允许位的时候才可以设定UFCR位。当FIFO模式变成16450模式(非FIFO模式)时,自动从FIFO中清除数据。反之亦然。
在清除了接收器FIFO中所有数据之后,并不清除接收器内部移位寄存器。同样的,清除了发送器FIFO中的字节后并不清除发送器内部移位寄存器。TFR和RFR都是自清除的。
图18-8显示了UFCR的位。
图18-8 FIFO控制寄存器(UFCR1和UFCR2)
表18-12说明了UFCR的字段。
表18-12 UFCR字段说明 位 0-1 名字 RTL 说明 接收器触发水平。当UIER[ERDAI] 置位且接收器FIFO中的字节数目等于RTL值时,产生接收数据可用中断。 00 1字节 01 4字节 10 8字节 11 14字节 保留 DMA模式选择。参看18.4.5.2节“DMA模式选择”。 0 UDSR[RXRDY]和UDSR[TXRDY]位为模式0 1 如果UFCR[FEN]=1,则UDSR[RXRDY]和UDSR[TXRDY]位为模式1 发送器FIFO复位。 0 无动作 1 清除发送器FIFO中的所有字节,并将FIFO计数器/指针复位为0。 接收器FIFO复位 2-3 4 - DMS 5 TFR 6 RFR