UART硬件和软件验证流程

合集下载

uart验证功能点

uart验证功能点

uart验证功能点(原创版)目录1.UART 简介2.UART 验证的重要性3.UART 验证的功能点4.如何进行 UART 验证5.总结正文一、UART 简介UART,全称为 Universal Asynchronous Receiver/Transmitter,即通用异步收发器,是一种串行通信接口。

它广泛应用于电子设备之间的数据传输,如计算机与外设、手机与蓝牙设备等。

UART通过将数据字符从并行转换为串行,以及将从串行转换为并行的数据字符传输,实现了数据在设备之间的高效传输。

二、UART 验证的重要性在各类电子设备和系统中,UART 通信模块的稳定性和可靠性至关重要。

因为一旦 UART 通信出现问题,可能导致整个系统无法正常工作。

因此,对 UART 进行验证以确保其功能正常,成为电子产品研发和生产的关键环节。

三、UART 验证的功能点UART 验证的主要功能点包括以下几个方面:1.通信协议验证:检查 UART 通信是否遵循所规定的通信协议,如波特率、数据位、停止位等。

2.信号完整性验证:验证接收和发送的信号在传输过程中是否保持完整,没有受到干扰或衰减。

3.传输速率验证:测试 UART 通信的传输速率,确保其达到设计要求。

4.误码率验证:评估 UART 通信过程中的误码率,以确保数据传输的准确性。

5.接口兼容性验证:检查 UART 与其他接口的兼容性,如与串口、I2C、SPI 等接口的互操作性。

四、如何进行 UART 验证UART 验证的过程通常包括以下几个步骤:1.制定验证计划:根据产品需求和 UART 通信规范,制定详细的验证计划,明确验证的目标、方法、工具和标准。

2.搭建验证环境:搭建与实际应用场景相符的硬件和软件环境,以便对 UART 通信进行实际测试。

3.设计测试用例:针对 UART 验证的功能点,设计一系列测试用例,包括正常情况和异常情况。

4.执行测试用例:按照测试用例执行 UART 通信测试,记录测试结果。

uart模块验证流程

uart模块验证流程

uart模块验证流程UART(通用异步收发传输)是一种常见的串行通信接口,广泛应用于各种嵌入式系统和通信设备中。

本文将以UART模块验证流程为标题,介绍UART模块的基本原理、验证流程以及相关应用。

UART是一种异步串行通信协议,通过发送和接收数据帧来实现设备之间的通信。

UART通信使用两根信号线:一根用于数据传输(TX),另一根用于接收数据(RX)。

UART通信具有简单、可靠、成本低廉等特点,常用于嵌入式系统中的设备间通信,如与传感器、显示屏、无线模块等的连接。

为验证UART模块的功能和性能,可以按照以下步骤进行:1. 硬件连接:首先,将UART模块与待测试的设备进行连接。

根据模块的规格说明书,将TX端口连接到被测设备的RX端口,将RX 端口连接到被测设备的TX端口。

同时,确保地线和电源线连接正确。

2. 配置参数:根据测试需求,配置UART模块的参数。

常见的配置参数包括波特率(Baud Rate)、数据位数、停止位数、校验位等。

这些参数需要与被测设备保持一致,以确保正常的通信。

3. 发送数据:在测试设备上编写发送数据的代码或使用相关工具发送数据。

发送的数据可以是特定的命令、测试数据或模拟的传感器数据。

通过发送数据,验证UART模块是否能够正常接收并解析数据。

4. 接收数据:在测试设备上编写接收数据的代码或使用相关工具接收数据。

接收到的数据应该与发送的数据一致,以验证UART模块是否能够正确地接收和解析数据。

5. 错误处理:在测试过程中,需要考虑异常情况的处理。

例如,当接收到错误的数据或超时时,UART模块应该能够及时进行错误处理,以保证通信的可靠性。

6. 性能测试:除了功能验证外,还可以进行UART模块的性能测试。

例如,测试UART模块的最大传输速率、连续传输数据的稳定性以及对噪声的抗干扰能力等。

通过性能测试,可以评估UART模块在实际应用场景中的可靠性和稳定性。

除了基本的验证流程外,UART模块还有一些常见的应用场景:1. 与传感器通信:UART通信常用于与各种传感器进行数据交互。

uart流程图范文

uart流程图范文

uart流程图范文UART(Universal Asynchronous Receiver Transmitter)是一种串行通信协议,用于在计算机系统和外部设备之间传输数据。

UART使用两根线(一根传输,一根接收)进行全双工通信。

UART流程图描述了UART通信的基本步骤和相关信号。

下面将详细介绍UART流程图,并解释每个步骤的功能。

1.初始状态:UART通信首先会处于空闲状态,此时传输线(TX)和接收线(RX)都处于高电平状态。

2.数据准备:在空闲状态下,发送端准备发送数据,将要发送的数据写入发送缓冲器。

3.启动位:发送端发送一个启动位,将传输线从高电平切换到低电平。

这个启动位表示数据的开始。

4.数据位:发送端依次发送数据位,数据位的个数由UART配置决定。

每个数据位都由一定时间的高或低电平表示。

5.停止位:发送端发送一个或多个停止位,表示数据的结束。

停止位通常为高电平。

6.传输完成:数据位和停止位发送完成后,传输线返回到高电平状态,表示传输完成。

7.数据接收:在传输完成后,接收端开始接收数据。

接收端从传输线上读取数据位和停止位。

8.数据解析:接收端将读取的数据位解析为可识别的数据。

根据UART配置,可能需要进行数据校验。

9.数据处理:接收端根据解析得到的数据进行相应的处理,例如存储、显示、响应等。

10.状态更新:UART通信完成一次数据传输后,状态信息会进行相应的更新,以供后续的通信。

11.返回初始状态:通信完成后,UART返回到初始状态,等待下一次数据传输。

上述步骤描述了UART通信的基本流程。

然而,在实际应用中,可能会包含更多的步骤和信号。

例如,流量控制信号(RTS、CTS)、奇偶校验位、数据长度、波特率等都可以根据具体需求进行配置和使用。

此外,UART通信还可能会面临一些问题,如数据丢失、传输错误、电气干扰等。

为了解决这些问题,可能需要采取数据缓冲、错误检测校正、电气隔离等措施。

总结:UART通信的基本流程包括数据准备、启动位、数据位、停止位、数据接收、数据解析、数据处理和状态更新。

UART一些流程

UART一些流程

UART一些流程1.内核时钟设置SysCtlClockSet2.片上设备时钟使能SysCtlPeripheralEnable3.GPIO设置GPIODirModeSet/Get// Param3:1.输入(数字、模拟)2.输出(数字)3.硬件决定(数字第二功能)GPIOPadConfigSet/Get// Param2:1.驱动强度(数字、模拟)// Param3:1.推挽/开漏(数字) 2.模拟功能(模拟)注:上述两个函数被封装成了以下函数做简化GPIOPinTypeGPIOInput //输入、2mA、推挽_GPIOGPIOPinTypeGPIOOnput //输出、2m、推挽_GPIO GPIOPinTypeGPIOOutputOD //输出、2mA、开漏_GPIO GPIOPinTypeADC //输入、2mA、模拟_ADC GPIOPinTypeComparator //输入、2mA、模拟_比较器GPIOPinTypeCAN //硬件、8mA、推挽_CAN GPIOPinTypeEthernetLED //硬件、8mA、推挽_以太网LED GPIOPinTypeI2C //硬件、2mA、开漏弱上拉_I2C GPIOPinTypeI2S //硬件、2mA、推挽_I2SGPIOPinTypePWM //硬件、2mA、推挽_PWM GPIOPinTypeQEI //硬件、2mA、推挽弱上拉_QEI GPIOPinTypeSSI //硬件、2mA、推挽_SSIGPIOPinTypeTimer //硬件、2mA、推挽_Timer GPIOPinTypeUART //硬件、2mA、推挽_Uart GPIOPinTypeUSBDigital //硬件、2mA、推挽_USB4 IO口读写GPIOPinRead/Write //Pin数据读写GPIO用作中断的操作流程1.系统时钟配置SysCtlClockSet2.GPIO设备时钟打开SysCtlPeripheralEnable3.Pin脚功能设置GPIOPinTypeInput4.Pin脚中断触发模式设置GPIOIntTypeSet //0.片内外设中断模式配置5.Pin脚中断允许GPIOPinIntEnable //1.使能片内外设的具体中断6.内设中断允许IntEnable //2.使能片内外设的总中断7.MCU总中断允许IntMasterEnable //3.使能MCU的总中断中断服务程序1.读取中断源GPIOPinIntStatus2.清除中断源GPIOPinIntClear //M3的内核中断,不需要手动清除UART的操作流程1.系统时钟配置SysCtlClockSet2.GPIO设备时钟打开SysCtlPeripheralEnable3.UART设备时钟打开SysCtlPeripheralEnable4.GPIO复用引脚设定为Tx和Rx GPIOPinTypeUART5.1UART工作参数配置UARTConfigSetExpClk[5.2] 若使用UART中断模式,则需配置5.2.1 Tx和Rx引脚中断允许UARTIntEnable5.2.2 UART功能启动UARTEnable5.2.3 内设中断允许IntEnable6.UART收发6.1 Block模式:(将NoBlock模式的4个函数封装成2个)直接发送字符UARTCharPut直接接收字符UARTCharGet6.2 NoBlock模式:(使用FIFO)等待Rx_FIFO有数据UARTCharsAvail等待Tx_FIFO有数据UARTSpaceAvailBlock发送字符UARTCharPutNonBlockingBlock接收字符UARTCharGetNonBlocking (注:使用此函数,必须先查询UARTCharsAvail)6.3 INT模式:(中断服务函数)UART中断清除UARTIntClear使用Block/NoBlock模式发送和接收字符PWM的操作流程1.系统时钟设置SysCtlClockSet2.PWM模块时钟设置SysCtlPWMClockSet3.GPIO设备时钟打开SysCtlPeripheralEnable4.PWM模块时钟打开SysCtlPeripheralEnable5.GPIO设置为硬件指定(PWM) GPIOPinTypePWM6.Pin脚配置为PWM功能GPIOPinConfigure7.PWM发生器计数模式设置PWMGenConfigure8.PWM发生器周期设置PWMGenPeriodSet9.PWM发生器脉宽设置PWMPulseWidthSet10.PWM输出管脚使能PWMOutputState10111.PWM启动PWMGenEnable102 103 104 105SysTick的操作流程1.系统时钟设置SysCtlClockSet2.SysTick周期设置SysTickPeriodSet//减法计数器,归零后自动重装3.SysTick启动SysTickEnable1114.MCU总中断开启IntMasterEnable5.SysTick中断服务函数void SysTick_ISR() { //SysTick是系统内设,硬件自动清除中断,无须手动清除Timer的操作流程32bit 定时器32bit RTC定时器16bit 定时器16bit 捕获器(边沿计数:计算有几个边沿;边沿定时:计算前后边沿的时间差)16bit PWM1.系统时钟设置SysCtlClockSet2.片上设备时钟使能SysCtlPeripheralEnable3.定时器工作模式设置TimerConfigure4.定时器载入值设置TimerLoadSet5.定时器中断使能TimerIntEnable1366.外设中断总使能IntEnable7.MCU总中断使能IntMaskEnable8.定时器启动TimerEnable140Timer中断服务函数void Timer_ISR() { //手工清除中断状态TimerIntClear(); ...//功能代码}ADC操作流程1.系统时钟设置SysCtlClockSet2.ADC所在GPIO外设时钟打开SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);3.IO口配置为ADC功能GPIOPinTypeADC(GPIO_PORTE_BASE, GPIO_PIN_3);4.ADC外设时钟打开SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC);5.ADC采样序列配置ADCSequenceConfigure(ADC0_BASE, 3, DC_TRIGGER_PROCESSOR, 0);6.ADC采样序列步进配置ADCSequenceStepConfigure(ADC0_BASE, 3, 0, ADC_CTL_CH0 | ADC_CTL_IE | ADC_CTL_END); // 启动AD的采样序列发生器3 ADCSequenceEnable(ADC0_BASE, 3); // 清除中断标志ADCIntClear(ADC0_BASE, 3);。

实验5 UART的使用

实验5 UART的使用

实验五UART的使用一、实验目的1.了解并掌握控制器的UART特性和用途2.掌握控制器UART的使用方法。

3.掌握程序系统调试的方法。

二、实验设备(1)PC机一台ARM-CORTEX-M3教学实验开发平台一套(2)Windows xp 系统和编译软件KEIL三、实验内容1.以中断的方式实现UART和PC串行通信四、实验步骤1.软件安装(1)安装嵌入式软件目录里的winrar340.exe(2) 解压缩文件:mdk3.50绿色版.rar到当前文件夹下,并复制到C盘,覆盖C盘原来的KEIL文件夹。

(3)解压缩嵌入式软件目录里的Setup_JLinkARM_V406b.zip,并安装。

(4)打开C:\Keil\UV3\Uv3.exe(建议创建Uv3.exe快捷方式到桌面)(5)注册KEIL软件(已在课堂上详细讲解)2.硬件连线说明:(1) 实验前,先把所有拨码开关置为off,之后把本次实验用到的拨码开关置为on;(2) 实验结束后,把所有拨码开关置为off;(3) 本次实验的所使用实验板上的硬件资源如下图中黄色圆圈所示,短接相应跳线、把相应拨码开关拨到on的位置。

注意:J4和J5的跳线帽横着连接。

(4) 连接JLINK的排线到电路板(5) 使用USB线连接电路板到计算机的USB口,给电路板供电,同时把J11的V_USB侧使用跳线帽短接;连接JLINK的USB线到计算机的USB口。

3. UART和PC串行通信(1) 打开C:\Keil\UV3\Uv3.exe(2) 在UV3界面下,使用打开project的方式,打开文件:实验5\ UART和PC串行通信\ wireless_slave.Uv2(3)重新编译,下载运行程序,打开嵌入式软件目录里的文件UartAssist.exe(4)在发送栏里,填写要发送的信息,以叹号:!作为一包数据的结束,观察接收数据栏内收到的数据(注意十六进制显示和ASC码显示是不一样的)。

uart传输流程

uart传输流程

uart传输流程UART传输流程什么是UART传输?UART(通用异步收发器)是一种常见的串行通信协议,用于在电子设备之间传输数据。

它通过发送和接收电平变化来传输数据,常用于连接微控制器、传感器和其他设备。

UART传输的基本流程UART传输过程中涉及到发送方和接收方两个角色。

下面是UART 传输的基本流程:1.数据帧:发送方将要传输的数据分成多个数据帧,每个数据帧包括一个起始位、若干数据位、一个校验位和一个或多个停止位。

2.起始位:数据帧的起始位用于通知接收方数据的传输即将开始。

起始位通常为低电平。

3.数据位:数据位是要传输的实际数据。

每个数据位的电平表示数据的值。

常见的数据位数有5、6、7和8位。

4.校验位:校验位用于验证数据的准确性。

发送方根据数据位的值计算校验位,并在数据帧中加入。

接收方将校验位与接收到的数据位进行比较,以检测传输错误。

5.停止位:停止位用于通知接收方数据帧的传输已经结束。

停止位通常为高电平。

6.波特率:波特率是UART传输中的重要参数,用于表示数据传输的速度,即每秒传输的位数。

常见的波特率值有9600、115200等。

UART传输的工作原理UART传输包含以下几个关键的工作原理:1.逻辑电平:UART传输使用高低电平表示数据位的值。

通常,高电平代表1,低电平代表0。

2.起始位检测:接收方通过检测起始位的下降沿来确定数据传输的开始。

3.时钟同步:发送方和接收方通过共享一个时钟信号来保持传输的同步。

接收方通过时钟信号来确定数据位的采样时间。

4.数据采样:接收方在每个数据位的中间采样数据的电平,并将其转换成对应的数据值。

5.错误检测:接收方通过比较校验位和接收到的数据位,检测传输过程中是否存在错误。

UART传输的应用领域UART传输由于其简单、可靠的特性,在许多领域得到了广泛应用,包括:•嵌入式系统:UART常用于嵌入式系统中的设备通信,如传感器数据的采集和控制命令的发送等。

•电子设备:UART用于连接计算机和外部设备,如打印机、调制解调器、数码相机等。

uart驱动调试方法

uart驱动调试方法

uart驱动调试方法UART驱动是一种用于串口通信的驱动程序,常用于嵌入式系统中。

调试UART驱动的目的是确保其正常工作,并排除可能的问题。

下面是一些调试UART驱动的方法:1.检查硬件连接:确保UART的引脚正确连接到目标设备上,并且没有虚焊、短路或其他硬件问题。

需要检查TX、RX、地线和电源线的正确连接。

2.配置正确的波特率:确认驱动程序和目标设备的波特率设置一致。

如果波特率设置不正确,通信将无法成功。

3.检查中断和DMA:如果使用中断或DMA进行数据传输,在调试过程中需要确保它们的配置和使用正确。

确认中断和DMA的初始化和处理函数是否正确,以及是否可靠。

4.使用调试工具:使用调试工具可以帮助检测和解决UART驱动的问题。

例如,使用示波器可以观察波形是否符合预期,使用串口调试助手可以查看发送和接收的数据。

还可以使用软件调试器来观察代码执行的过程。

5.打印调试信息:在驱动程序中添加打印语句,以便在运行时输出调试信息。

可以打印各种变量、标志位和状态信息,以便跟踪代码的执行流程。

这种方法可以帮助定位并解决问题。

6.内部测试模式:一些UART控制器提供了内部测试模式,可以自动生成和接收特定模式的数据。

通过使用内部测试模式,可以排除硬件和物理连接的问题,并检查驱动程序的正确性。

7.理解数据协议:UART驱动中很重要的一点是理解通信的协议。

要确保驱动程序正确地构造和解析数据帧,包括起始位、停止位、校验位和数据位。

8.分阶段调试:UART驱动的调试可以分成多个阶段进行。

首先,确保驱动程序可以正常初始化和配置。

然后,测试发送和接收数据的功能。

最后,检查错误处理和异常情况的处理。

9.必要时查看硬件文档:如果遇到了很棘手的问题,无法通过常规的调试方法解决,可以查看硬件文档或厂商提供的技术支持。

硬件文档可以提供关于UART控制器的详细说明和配置建议。

10.与其他设备协同调试:UART驱动通常会与其他设备进行通信,例如处理器、外设或其他串口设备。

uart验证功能点

uart验证功能点

uart验证功能点
摘要:
1.UART简介
2.UART验证功能点的目的
3.UART验证功能点的具体实现
4.UART验证功能点的重要性
正文:
UART,全称为Universal Asynchronous Receiver/Transmitter,即通用异步收发器,是一种串行通信接口。

在电子设备中,UART被广泛应用于微控制器(MCU)和外部设备之间的通信。

为了确保UART通信的稳定性和可靠性,UART验证功能点应运而生。

UART验证功能点的目的在于验证UART模块在各种工作条件下能否正常运行。

这包括但不限于:验证UART的波特率设置是否正确、数据位长度是否正确、停止位设置是否正确,以及在通信过程中是否能够正确地发送和接收数据。

具体来说,UART验证功能点的实现过程包括以下几个步骤:
1.初始化UART模块:首先,我们需要对UART模块进行初始化,包括设置波特率、数据位长度、停止位等参数。

2.发送数据:在初始化UART模块后,我们需要向外部设备发送一些特定的测试数据,以验证UART模块是否能够正确地发送数据。

3.接收数据:发送数据后,我们需要等待外部设备的响应,并验证UART
模块是否能够正确地接收数据。

4.数据校验:在接收到外部设备的响应后,我们需要对数据进行校验,以确认数据在传输过程中是否发生了错误。

5.异常处理:在验证过程中,如果出现异常情况,如数据传输错误、UART 模块崩溃等,我们需要进行相应的异常处理,以确保验证过程的顺利进行。

UART验证功能点的重要性不言而喻。

在嵌入式系统、物联网等领域,UART通信的稳定性直接影响到整个系统的正常运行。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

AN462硬件和软件验证流程Rev. _1 — 7 August 1987 应用规格书文件信息信息内容关键词UART,软硬件验证摘要这个流程是用于检验主机(控制处理器)、UART和印制电路板之间的信号、总线、电气连接和时序的正确性。

以下流程的执行和结果的验证不需要任何其它的测试设备(逻辑分析仪、协议分析仪,示波器等),它是基于处理器能够读写UART,并且所得到的结果能显示给操作者的假设之上的。

如果无法完全确认简单的读写操被正确的执行,那么针对UART连接的其它检验都是不可靠的。

1. 概述这个流程是用于检验主机(控制处理器)、UART和印制电路板之间的信号、总线、电气连接和时序的正确性。

以下流程的执行和结果的验证不需要任何其它的测试设备(逻辑分析仪、协议分析仪,示波器等),它是基于处理器能够读写UART,并且所得到的结果能显示给操作者的假设之上的。

如果无法完全确认简单的读写操被正确的执行,那么针对UART连接的其它检验都是不可靠的。

2. 总流程首先,对相关的寄存器进行写和读的操作,在这些操作中与时钟有关的有片选、读、写信号;其次,通过读取状态寄存器的值来观察所写入的几个控制寄存器的结果;接下来建议的几个流程用于验证总线数据流并采用“本地循环回送”的模式来验证接收器和发送器的运行,“本地循环回送”模式(所有的数据的发送和接收发生在UART内部)用于产生处理器中断或查询状态。

这些流程的正确执行将表明内部寄存器、总线接口、时钟发生器、计数器和振荡器的正常运行,没有得到验证的是振荡器的频率、TxD和 RxD与外部端口及普通输入输出管脚的连接。

3. 注释在硬件和软件的验证模式中,读取状态寄存器的状态是非常有效的,它对于检测那些在”已验证”过的硬件和软件上出现的“随机”或“少见”的错误也很有效。

状态的读取可以在对设备进行操作之前和之后进行,寄存器的内容将反映异常状况发生的时间地点,这将使得UART的内部状态与外部连接、时序、软件一样具有了可见性。

例一:在硬件复位后读取状态将显示发送器空标志位置位,这表示发送器已经使能(在硬件复位后将立即返回0x00),然而软件并没有使能发送器,因此有人会把原因归结于:特殊的干扰,复位信号下降沿太缓慢等等,所有这些就像执行了一个发送器使能的命令,如果这种情况确实发生,采取进一步的验证操作来修正错误的意义并不大。

例二:在对UART复位和执行几个操作之后,并且在使能接收器之前,发现有一些接收器数据状态位置位(如奇偶校验出错),这表示接收器已经使能,并且收到数据(虽然我们并没在软件上对接收器执行使能的命令),这可能是由于时序的冲突(可能是地址总线上的)移动了接收器FIFO的读取指针而导致了上电后接收器FIFO的随机状态的上报。

经常还出现软件的不同模块都控制UART,并且各控制是独立的情况,这将导致更多的情况出现。

<12NC> ©Koninklijke Philips Electronics N.V. 2004. All rights reserved.应用规格书Rev. _1 — 7 August 1987 2 of 11<12NC>©Koninklijke Philips Electronics N.V. 2004. All rights reserved.应用规格书 Rev. _1 — 7 August 19873 of 11操作流程 结果及注释1.执行硬件复位(在没使用硬件复位的系统中,可通过手工断开复位管脚连接来临时产生硬件复位)UART的正常工作并不要求有硬件复位,但是在本流程中我们强烈推荐硬件复位,即便采用手工复位。

软件复位可随时执行,但软件复位在某种程度上来说是隐性的,所以在本流程中没有使用软件复位,如果没有完整正确地进行后续的操作是很难检验软件复位是否生效的。

2.向每个MR 寄存器写入两个不同的数据(0xaa ,0x55),不必考虑MR 指针。

这个操作将把第二个字节写入MR2中,(本例是0x55)这将表明(在第4步)你至少已经可以对设备进行读写并且回送数据到控制系统,不需要其它任何测试设备,系统本身就可以完成。

这个测试甚至在没有Vss 和Vdd 的情况下都可以实现,尽管逻辑低电平将接近+0.7V3.在对MR 寄存器操作之前和之后读每个UART 的状态寄存器。

将返回0x 00返回的结果一定是0x 00,如果不是0x 00,那么相应的MR 寄存器将无法执行其它操作。

状态寄存器反映了MR 的情况。

4.对MR 寄存器执行一个单独的读操作,不必考虑MR 指针将返回第二个写入MR 寄存器的数据,按照上面的数据将返回0x55注意:这一步非常关键,它反映了基本控制的正确性,对于芯片内部逻辑来说这是很简单,即使Vss 和Vdd 不连接的情况下也起作用。

经过之前的2个写操作(第2步)后,MR 指针指向MR2,这时读取MR 将返回第2步中第2个写入MR 的数据。

这一步表明至少一部分的地址线已经连接并且工作正常,CEN ,RDN 和WRN 信号正确。

同时表明数据总线正在运行但并不意味着数据总线是正确连接的。

在理论设计中,大部分的CMOS 器件可通过输入管脚供电,假设至少一个Vcc 和Vss 。

这将给内部逻辑提供近似3.6V 的电压(在Vss 上浮一个二极管电压,在Vcc 上下降一个二极管电压).但它很有可能并不运行在一个特定的速度下,这将容易倒致(在Vss 和Vdd 不连接)CMOS的闭锁而损坏器件。

新的CMOS电路设计充分考虑了CMOS闭锁的潜在危害,改进了电路设计和执行流程以防止闭锁现象。

<12NC>©Koninklijke Philips Electronics N.V. 2004. All rights reserved.应用规格书 Rev. _1 — 7 August 19874 of 11操作流程结果及注释5.对地址为0x02的命令寄存器写入0x10。

重复第2步中对MR 寄存器的写操作。

设置MR 指针指回MR1并执行2次对MR 寄存器的读操作,对所有MR 寄存器执行该操作,返回值将是先前写入的2个字节。

注意:分别置MR1、MR2为00和87对于步骤8来说将是比较方便的,但在这一步中所有的MR 寄存器必须写入不同的数据。

这表明1条以上的地址线在工作,1条数据线是正确的,晶振起振,UART 不是工作在掉电模式,Vss 和Vdd 已连接。

按这顺序完成所有操作之后,读取状态寄存器,返回值都是0x00。

6.再次对命令寄存器进行写操作并使能发送器,对每个UART 的命令寄存器写入0x15。

使能发送器将使状态寄存器中的发送器状态位立即置位,并使MR 指针指向MR17.读状态寄存器。

发送器准备就绪标志位和发送器空标志位都处于置位状态,返回值是0x0C 。

回到上面提到的:如果MR1和MR2分别是00和87,那么接收器和发送器将处于“本地循环回送“模式。

设置MR1和MR2为以上数值。

(在上一步中MR 指针已指向MR1)8.对时钟选择寄存器写入分频字节来选择一个时钟,如写入字节BB 表示每个接收器和发送器波特率为9600bps 。

9.对命令寄存器进行写操作来使能发送器和接收器。

???10.读取状态,结果仍为0C11.对发送器写入一个字节,通过读状态寄存器可看到发生的几个事件。

12.循环读取状态寄存器,状态为0x04和0x0D 在读取事件中十分重要。

A.在写入到发送器后将立即返回状态值0x00B.状态将变为0x04,这表明起始位的结束及TxFIFO 已经准备好接收下一个字节。

C.下一个状态值将为0x05,它将维持小于7/16个位时长,通常在总线周期是观察不到这一状态的寄存器将按顺序报告状态:0x0C ,0x00,0x04,0x0C ,0x0D ,鉴于波特率为9600读时序的异步特性,你可能看不到以上所有数据的,有的维持1/16个位的时间,有的仅为270纳秒,但是你肯定能观察到0x04和0x0D 。

<12NC>©Koninklijke Philips Electronics N.V. 2004. All rights reserved.应用规格书 Rev. _1 — 7 August 19875 of 11操作流程结果及注释D.状态将变为0x0DA .这表明发送器已经收到字节,正把它传送到移位寄存器中并开始发送起始位。

B .出现0x04的时间取决于相关的Tx 16x 时钟,Tx 1x 时钟和总线周期,大约在1/16到17/16个位时长之间。

C .表明接收器收到字节(一过停止位时长的中间点接收器就把字节传送到Rx FIFO 中),并且发送器还没完成停止位的发送。

D .表明接收器已经把字节传送到Rx FIFO 并且发送器是空的。

13.读接收器FIFO 你将读到在步骤11中送入到发送器的字节14.读取状态,显示为0x0C 。

显示0x0C 表明接收器FIFO 是空的,发送器FIFO 是空,并且FIFO 已准备就绪等待数据传送。

15.到此就完成了对总线接口的基本验证,并从状态寄存器中得到相应的数值。

以上流程必须确保正常运行,时序的冲突、错误的的连线或者振荡器不工作都将导致异常结果的出现,当然芯片的损坏也可能导致异常结果。

以上流程的失败是败是“第一类”的影响造成的。

如果设置MR2寄存器为03,便可以将发送器输出管脚连接到接受器输入管脚,并重复步骤11到步骤13的流程。

在大多数情况下这实现起来很困难,因为电路板上与UART 的连接已经固定了。

但如果可以在发送器和接收器之间建立一个像 “导线”的连接,就证明发送器输出端口和接收器的输入端口并没有损坏。

另一方面,可通过让UART 与其它UART 或DUMB 终端”通话”来验证其功能。

这要求你可以针对”另类设备”来对UART 进行编程,而且”另类设备”已经正确编程并且所有涉及的硬件都正常运行,操作流程结果及注释另外需要提及的一点:它很有可能导致解决问题的调试过程相当曲折。

在这一点上,与真实的外部的发送器和接收器相连接将涉及到很多方面,故障发生的原因可能是:外部硬件,通信设备之间的差异,以及对通信协议的误解。

通信协议包括:波特率,字符长度,RTS/CTS 的握手信号,单工或全双工等等。

请切记所有这些操作是在系统本身实现。

不必使用外接的逻辑分析仪,发送器,接收器等等,在这里只用到3个资源:UART,UART与控制设备相连接的接口,控制/显示设备。

那么下来就是UART能否与外部设备通信的问题。

例如:在这里没有用到ACR(辅助控制寄存器),MR0也没有编程,这将导致波特率超过9600,但发送器和接收器仍将以同样的波特率同时运行。

相关文档
最新文档