跳转到主内容
Knowledgebase
Home
Renesas Electronics China - Knowledgebase

在UART接收期间,LSB-first被设置,但是收到的数据有时变成MSB-first。

最新更新:2011年10月 06日

Question:

在UART接收期间,LSB-first被设置,但是收到的数据有时变成MSB-first。

Answer:

这是下列78K0/S 产品的限制。

[目标产品]

uPD789405A/9406A
uPD789415A/9416A
uPDF9418A


[现象]

在UART接收期间,在LSB-first读期间,在一些条件下,读到接收的数据是MSB-first。


[对策]

(1) 当RXE为1时读接收数据。
(2) 当RXE从1变到0并且先前接收数据已经被使用时,在接受中断发生之后读接收数据, 然后把RXE的值从1变为0。
(3) 在读接收数据之前,从1到0改变RXE的值时, 从接收中断等待一个或者多个由BRGC确定的源时钟周期之后,将RXE的值由1变为0, 然后再读取接收数据。
例子:
设置 BRGC00 为 #00H
这种情况下,因为由BRGC00选择的源时钟是fx/2, 如果 fx = 5 MHz, 需要等待0.4μs 。
(4) 如果RXE在没有等待1个或者多个来自BRGC的源时钟周期就将其值改1为0的话, 要用RXE = 0和DIR = 1来读取接收数据。
例子:
SET1 DIR ; 设置DIR标志选择LSB-first
CLR1 RXE
MOV A,RXB ; 读接收数据
Suitable Products