你的位置:EETOP 赛灵思(Xilinx) 社区 >> >> 全部 >> 详细内容

增加FIFO清空操作,串口自测程序更加健壮

发布者:jackzhang 时间:2013-04-17 14:44:55

ISE 14.4中,自带ZYNQ UART的测试程序。测试程序先将串口设置成自环模式,再在循环总发送一个字节和接收一个字节。循环32次后,再比较发送的字符和接收字符是否一致。如果一致,就表示UART测试成功,否则就报告失败。

如果Zynq不是刚刚复位启动,UARTFIFO中可能已经有数据。这样的话,测试就会失败。如果调试串口自测程序,在发送字符后,接收字符前,停止程序。然后再启动串口自测程序,就会报告失败。

解决的办法是在测试前清空FIFO。代码如下:

 

 

               Status = XUartPs_CfgInitialize(&Uart_PS, Config, Config->BaseAddress);

               if (Status != XST_SUCCESS) {

                              return XST_FAILURE;

               }

 

               /*

                * Clear the FIFO.

                */

               while ( (XUartPs_IsReceiveData(Uart_PS.Config.BaseAddress)) )

               {

                              /*

                               * Receive the byte

                               */

                              XUartPs_Recv(&Uart_PS, FirstString, 1);

 

               }

 

 

               /*

                * Check hardware build.

                */

               Status = XUartPs_SelfTest(&Uart_PS);

               if (Status != XST_SUCCESS) {

 

 

其中while循环及其中的XUartPs_Recv是新增加的。

最新课程

  • 深入浅出玩儿转FPGA

    本视频基于Xilinx公司的Artix-7FPGA器件以及各种丰富的入门和进阶外设,提供了一些典型的工程实例,帮助读者从FPGA基础知识、逻辑设计概念

  • 从零开始大战FPGA基础篇

    本课程为“从零开始大战FPGA”系列课程的基础篇。课程通俗易懂、逻辑性强、示例丰富,课程中尤其强调在设计过程中对“时序”和“逻辑”的把控,以及硬件描述语言与硬件电路相对应的“

  • Verilog基础及典型数字

    课程中首先会给大家讲解在企业中一般数字电路从算法到流片这整个过程中会涉及到哪些流程,都分别使用什么工具,以及其中每个流程都分别做了