
AN462
硬件和软件验证流程
Rev. _1 — 7 August 1987
文件信息
应用规格书
信息 内容
关键词 UART,软硬件验证
摘要 这个流程是用于检验主机(控制处理器)、UART 和印制电路板之间的信号、
总线、电气连接和时序的正确性。以下流程的执行和结果的验证不需要任
何其它的测试设备(逻辑分析仪、协议分析仪,示波器等),它是基于处
理器能够读写UART,并且所得到的结果能显示给操作者的假设之上
的。如果无法完全确认简单的读写操被正确的执行,那么针对UART连
接的其它检验都是不可靠的。

飞利浦半导体
1. 概述
2. 总流程
AN462
硬件和软件验证流程
这个流程是用于检验主机(控制处理器)、UART 和印制电路板之间的信号、总线、电气连接和时
序的正确性。以下流程的执行和结果的验证不需要任何其它的测试设备(逻辑分析仪、协议分析
仪,示波器等),它是基于处理器能够读写UART,并且所得到的结果能显示给操作者的假设之
上的。如果无法完全确认简单的读写操被正确的执行,那么针对UART连接的其它检验都是不可
靠的。
首先,对相关的寄存器进行写和读的操作,在这些操作中与时钟有关的有片选、读、写信号;
其次,通过读取状态寄存器的值来观察所写入的几个控制寄存器的结果;接下来建议的几个流程用
于验证总线数据流并采用“本地循环回送” 的模式来验证接收器和发送器的运行,“本地循环回
送”模式(所有的数据的发送和接收发生在 UART 内部)用于产生处理器中断或查询状态。这些流
程的正确执行将表明内部寄存器、总线接口、时钟发生器、计数器和振荡器的正常运行,没有得到
验证的是振荡器的频率、TxD 和 RxD 与外部端口及普通输入输出管脚的连接。
3. 注释
在硬件和软件的验证模式中,读取状态寄存器的状态是非常有效的,它对于检测那些在”已验证”
过的硬件和软件上出现的“随机”或“少见”的错误也很有效。状态的读取可以在对设备进行操作
之前和之后进行,寄存器的内容将反映异常状况发生的时间地点,这将使得 UART 的内部状态与外
部连接、时序、软件一样具有了可见性。例一:在硬件复位后读取状态将显示发送器空标志位置
位,这表示发送器已经使能(在硬件复位后将立即返回 0x00),然而软件并没有使能发送器,因此
有人会把原因归结于:特殊的干扰,复位信号下降沿太缓慢等等,所有这些就像执行了一个发送器
使能的命令,如果这种情况确实发生,采取进一步的验证操作来修正错误的意义并不大。例二:在
对 UART 复位和执行几个操作之后,并且在使能接收器之前,发现有一些接收器数据状态位置位
(如奇偶校验出错),这表示接收器已经使能,并且收到数据(虽然我们并没在软件上对接收器执
行使能的命令),这可能是由于时序的冲突(可能是地址总线上的)移动了接收器 FIFO 的读取指针而
导致了上电后接收器 FIFO 的随机状态的上报。经常还出现软件的不同模块都控制 UART,并且各控
制是独立的情况,这将导致更多的情况出现。
<12NC>
应用规格书
Rev. _1 — 7 August 1987 2 of 11
Koninklijke Philips Electronics N.V. 2004. All rights reserved.

飞利浦半导体
操作流程 结果及注释
1.执行硬件复位(在没使用硬件复位的系统中,
可通过手工断开复位管脚连接来临时产生硬件复
位)
2.向每个 MR 寄存器写入两个不同的数据
(0xaa,0x55),不必考虑 MR 指针。
AN462
硬件和软件验证流程
UART的正常工作并不要求有硬件复位,
但是在本流程中我们强烈推荐硬件复位,即
便采用手工复位。软件复位可随时执行,但
软件复位在某种程度上来说是隐性的,所以
在本流程中没有使用软件复位,如果没有完
整正确地进行后续的操作是很难检验软件复
位是否生效的。
这个操作将把第二个字节写入 MR2 中,
(本例是 0x55)这将表明(在第 4 步)你
至少已经可以对设备进行读写并且回送数据
到控制系统,不需要其它任何测试设备,系
统本身就可以完成。这个测试甚至在没有
Vss 和 Vdd 的情况下都可以实现,尽管逻辑
低电平将接近+0.7V
3.在对 MR 寄存器操作之前和之后读每个 UART
的状态寄存器。将返回 0x 00
4.对 MR 寄存器执行一个单独的读操作,不必考
虑 MR 指针将返回第二个写入 MR 寄存器的数据,
按照上面的数据将返回 0x55
注意:这一步非常关键,它反映了基本控制的正确
性,对于芯片内部逻辑来说这是很简单,即使Vss
和Vdd不连接的情况下也起作用。
返回的结果一定是0x 00,如果不是0x 00,
那么相应的MR寄存器将无法执行其它操
作。状态寄存器反映了MR的情况。
经过之前的 2 个写操作(第 2 步)后,MR
指针指向 MR2,这时读取 MR 将返回第 2
步中第 2 个写入 MR 的数据。
这一步表明至少一部分的地址线已经连接并
且工作正常,CEN,RDN 和 WRN 信号正
确。同时表明数据总线正在运行但并不意味
着数据总线是正确连接的。
在理论设计中,大部分的 CMOS 器件可通
过输入管脚供电,假设至少一个 Vcc 和
Vss。这将给内部逻辑提供近似 3.6V 的电压
(在 Vss 上浮一个二极管电压,在 Vcc 上下降
一个二极管电压).但它很有可能并不运行在
一个特定的速度下,这将容易倒致(在 Vss
和 Vdd 不连接)CMOS的闭锁而损坏器
件。新的CMOS电路设计充分考虑了CM
OS闭锁的潜在危害,改进了电路设计和执
行流程以防止闭锁现象。
<12NC>
应用规格书
Rev. _1 — 7 August 1987 3 of 11
Koninklijke Philips Electronics N.V. 2004. All rights reserved.

飞利浦半导体
操作流程 结果及注释
5.对地址为 0x02 的命令寄存器写入 0x10。
重复第 2 步中对 MR 寄存器的写操作。设置 MR 指
针指回 MR1 并执行 2 次对 MR 寄存器的读操作,对
所有 MR 寄存器执行该操作,返回值将是先前写入
的 2 个字节。
注意:分别置MR1、MR2为00和87对于步骤8来说将
是比较方便的,但在这一步中所有的MR寄存器必须
写入不同的数据。
6.再次对命令寄存器进行写操作并使能发送器,对
每个 UART 的命令寄存器写入 0x15。
AN462
硬件和软件验证流程
这表明 1 条以上的地址线在工作,1 条数
据线是正确的,晶振起振,UART 不是工
作在掉电模式,Vss 和 Vdd 已连接。
按这顺序完成所有操作之后,读取状态寄
存器,返回值都是 0x00。
使能发送器将使状态寄存器中的发送器状
态位立即置位,并使 MR 指针指向 MR1
7.读状态寄存器。发送器准备就绪标志位和发送器
空标志位都处于置位状态,返回值是 0x0C。
回到上面提到的:如果 MR1 和 MR2 分别是 00 和
87,那么接收器和发送器将处于“本地循环回送
“模式。设置 MR1 和 MR2 为以上数值。(在上一
步中 MR 指针已指向 MR1)
8.对时钟选择寄存器写入分频字节来选择一个时
钟,如写入字节 BB 表示每个接收器和发送器波特率
为 9600bps。
9.对命令寄存器进行写操作来使能发送器和接收
器。???
10.读取状态,结果仍为 0C
11.对发送器写入一个字节,通过读状态寄存器可
看到发生的几个事件。
12.循环读取状态寄存器,状态为 0x04 和 0x0D 在
读取事件中十分重要。
A.在写入到发送器后将立即返回状态值 0x00
B.状态将变为 0x04,这表明起始位的结束及
TxFIFO 已经准备好接收下一个字节。
C.下一个状态值将为 0x05,它将维持小于 7/16 个
位时长,通常在总线周期是观察不到这一状态的
寄存器将按顺序报告状态:0x0C,0x00,
0x04,0x0C,0x0D,鉴于波特率为 9600
读时序的异步特性,
你可能看不到以上所有数据的,有的维持
1/16 个位的时间,有的仅为 270 纳秒,但
是你肯定能观察到 0x04 和 0x0D。
<12NC>
应用规格书
Rev. _1 — 7 August 1987 4 of 11
Koninklijke Philips Electronics N.V. 2004. All rights reserved.