广告

【博客大赛】Nexys3学习手记8:FT232之高速UART(2)

2013-8-16 11:25 2748 0 1 分类: FPGA/CPLD 文集: Nexys3学习手记

        接下来要看软件的了,打开SDK并定位Workspace到本实例工程的SDK_workspace目录下。我们点击mysoc_hw_platform目录下的system.xml,此时发现并没有出现axi_uartlite_0这个新外设,说明目前的软件工程并没有实时的更新当前硬件工程的信息。

007.jpg

 

图7 查看system.xml

         显然,目前情况下我们无法在软件中编程控制UART外设,必须先更新系统的硬件信息。在mysoc_hw_platform文件夹上右击并选择Change Hardware Platform Specification。如图8所示,将system.xml重新定位到当前工程路径下(当前工程文件夹\mysoc\__xps\system.xml)。

008.jpg

 

图8 定位system.xml

         如图9所示,重新匹配后的system.xml文件中出现了当前实例新添加的axi_uartlite_0外设。

009.jpg

 

图9 查看新的system.xml

         编写软件测试代码,实现查询方式(中断方式特权同学还没有搞明白,有点越弄越糊涂,以后再慢慢研究)串口数据接收,然后对接收数据取反后发送。

/* ------------------------------------------------------------ */

/*              Include File Definitions                        */

/* ------------------------------------------------------------ */

 

#include

#include "xparameters.h"  //The hardware configuration describing constants

#include "xgpio_l.h"    //This header file contains identifiers and driver functions

#include "xil_io.h" //Contains the Xil_Out32 and Xil_In32 functions

#include "xuartlite_l.h"    //

 

#define  uchar unsigned char

#define  uint  unsigned short

 

/* ------------------------------------------------------------ */

/*              main function                                   */

/* ------------------------------------------------------------ */

 

int main()

{

    uchar rxdb;

    XUartLite_SetControlReg(XPAR_UARTLITE_0_BASEADDR,0x10); //enable interrupt

 

    while(1)

    {

        if(!XUartLite_IsReceiveEmpty(XPAR_UARTLITE_0_BASEADDR))

        {

            rxdb = XUartLite_RecvByte(XPAR_UARTLITE_0_BASEADDR);//XUartLite_ReadReg(XPAR_UARTLITE_0_BASEADDR,0);

            XUartLite_SendByte(XPAR_UARTLITE_0_BASEADDR,~rxdb);

        }

    }

    return 0;

}

         编译工程,然后参照上一节将代码烧录Nexys3中。注意此时需要两条Mini-B连接线和PC互连,一条用于连接PC与J3,即上一节提到的下载通路;另一条则用于连接PC与J13,也就是UART-Lite外设的通路。或者将JP1的跳线帽改接2-3PIN,J10连接一个5V直流电源,然后就不停的将唯一的一条Mini-B连接线在J3和J13之间来回晃荡吧,就像特权同学一样(不过这样来回热拔插不知是否会对芯片产生不良影响,尽管USB本身是支持热拔插的)。

         FT232芯片是个USB转UART芯片,一端用于接USB,另一端能够接UART进行通信。所谓的USB端,物理特性上来说,肯定是真USB,直接可以连接PC的USB端口。从协议层面看,当然它也确实能够实现USB协议的数据传输,不过更简单方便的方法是用UART协议来传输数据,此时它就是个实实在在的“伪USB”——借USB跑UART。这个看似神奇的芯片也没神马特殊之处,接上PC后,若是不提示安装驱动(若是需要驱动,则可以到FTDI公司官方网站下载:http://www.ftdichip.com/Products/ICs/FT232R.htm),则默认就出现在了设备管理器的端口下,如图10所示的“USB Serial Port(COM3)”,记住这个COM3,后面用调试助手收发数据时别选错端口。

010.jpg

 

图10 设备管理器的新串口

         如图11所示,设置串口调试助手端口为COM3、波特率9600、数据位8、无校验位,进行通信,则发送55AA返回AA55。

011.jpg

 

图11 串口数据收发

         FT232芯片既然用USB来传UART,一定要有点过人之处才有存在的理由。当然,一方面这个芯片会解决很多新的PC没有RS232串口的尴尬,而老串口的波特率最高通常不会超过115200bps,那么这个FT232就要来挑战一下,因此特权同学也特地进行了高速传输的测试,标称最高的921600bps,折腾老半天发现不干活,这下毛了,最后特权同学干脆来个只发不收的软件测试,发现原本为AA的发送数据在PC端却变成了CA或者DA。一推理,可能外设波特率有误差,于是放低波特率到460800bps,OK了,进一步确认波特率的误差问题。由于UART-Lite外设的时钟由CPU时钟分频得到,而CPU此次波特率为50MHz,对于921600bps这种非整数倍的值进行分频肯定存在误差。以此简单的将CPU时钟调高到100MHz,问题解决了。其实这个解决办法没有本质上解决波特率误差问题,若是严谨一些,恐怕需要调算好一个961600bps整数倍的频率作为外设时钟会更合适一些,总之呢,具体问题要具体分析。事实证明这个高速UART还是靠谱的,今后就不愁UART上不了115200bps了。

 

 

 

广告

文章评论 1条评论)

登录后参与讨论

billzhu_345737527 2012-5-25 21:16

特权同学,FT232不给力啊,你可以用fpga在921600bps连续发送数据,看看还行不行, 我用ch341,1500000bps,fpga在13.56M时钟下,连续发送计算机都可以接受成功,
相关推荐阅读
ilove314_323192455 2016-06-30 21:16
例说FPGA连载6:FPGA开发所需的技能
例说FPGA连载6:FPGA开发所需的技能 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   前面的文字已经做了很多铺垫,相信读...
ilove314_323192455 2016-06-28 21:09
例说FPGA连载5:FPGA的优势与局限性
例说FPGA连载5:FPGA的优势与局限性 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   若要准确评估FPGA技术能否满足开...
ilove314_323192455 2016-06-28 21:05
例说FPGA连载5:FPGA的优势与局限性
例说FPGA连载5:FPGA的优势与局限性 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   若要准确评估FPGA技术能否满足开...
ilove314_323192455 2016-06-26 22:11
例说FPGA连载4:FPGA语言与厂商介绍
例说FPGA连载4:FPGA语言与厂商介绍 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   Verilog与VHDL 说到FP...
ilove314_323192455 2016-06-23 21:26
例说FPGA连载3:FPGA与其它主流芯片的比较
例说FPGA连载3:FPGA与其它主流芯片的比较 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   FPGA、ASIC和ASSP...
ilove314_323192455 2016-06-21 20:32
例说FPGA连载2:FPGA是什么
例说FPGA连载2:FPGA是什么 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   2015年伊始,Intel欲出资百亿美金收...
我要评论
1
0
广告