原创 RS232实验

2013-10-24 18:29 1682 14 14 分类: FPGA/CPLD 文集: FPGA

 

      今天挺冷啊,早上听一姐们说“我自己不说冷,谁知道姐姐我冷”,我笑了,冷暖自知不就这样吗?来到实验室,师哥问我“冷不?穿秋裤了吗?”我说“我没秋裤”,师哥看了我一眼就走开了。实验室里某个电容烧了,那味道大家应该很熟悉,所以就打开了窗户透透气,散散味。味道是淡了不少,但是冻得我手有点不听指挥。好吧,趁这个空整理一下关于RS232的一些内容。接触RS232也是因为板子的需要,所以才去了解,一般我是用到什么学什么。这篇文章中有什么不对的地方希望指正。

      一般了解新事物的时候我习惯的打开百度,打开维基百科。不知道这种习惯是好还是不好,但是我想只要让自己充分了解那样事物的信息都是好的吧,说多了,步入正题。个人计算机上的通讯接口之一,由电子工业协会(Electronic Industries Association,EIA) 所制定的异步传输标准接口。通常 RS-232 接口以9个引脚 (DB-9) 或是25个引脚 (DB-25) 的型态出现,一般个人计算机上会有两组 RS-232 接口,分别称为 COM1 和 COM2这是百度上的解释,由于我用的是Spantan-3E的开发板,所以就去看开发板的资料了,开发板上是这样说的:

Overview

图7.1所示,入门实验板有2个RS-232串口:母口DB9 DCE和公口DTE连接器。DCE口通过标准的串口电缆直接连到PC和工作站上。没有经过调制解调器或交换电缆不能用。

DTE连接器用来控制其他的RS-232外围设备,如调制解调器、打印机或通过DCE连接器完成简单的环回测试。

 

7-1.jpg

图7.1给出了FPGA和2个DB9连接器之间的连接。FPGA使用LVTTL或LVCMOS电平提供串行数据给Maxim 器件——用来电平转换的,以满足RS-232电压的电平。反之,Maxim 器件转换相应的LVTTL电平以满足RS-232串行输入数据给FGPA。在Maxim与FPGA的RXD管脚之间串联一个电阻,以保护外部逻辑干扰。

连接器不支持硬件流控制。DCD、DTR和DSR信号连接一起,如图7.1所示。同样,端口的RTS和CTS信号连接在一起。

 

UCF Location Constraints

图7.2和7.3 分别为RS-232的DTE和DCE端口提供了UCF约束,包括I/O口管脚分配和I/O口使用标准。

 

7-2.jpg

       我主要想说一下代码,UCF不说了,因为开发板已经给出了管脚的分配。特权同学也有说到RS232可以去参考一下(网上有代码,视频,也有文档),代码主要是四个模块组成,接收数据的波特率发生模块,数据接收的模块,发送数据的波特率发生模块,数据发送模块。其中两个波特率发生模块共用。

模块一:接收数据的波特率发生模块,接收模块在接收到下降沿时,通过标志位启动该模块的波特率计数器,并在计数中返回一个采样标志位给接收模块,同志接收模块采样,

模块二:数据接收模块,该模块一旦监测到数据输入端有下降沿,就立即启动波特率(标志位置1),并使能接收标志位志位rx_int,接收开始; 

模块三:发送数据的波特率发生模块,发送模块在监测到接收标志位rx_int产生下降沿时,通过标志位启动该模块的的波特率计数器,并在计数中返回一个发送标志位给发送模块,通知发送模块发送数据;

  模块四:数据发送模块,该模块一旦监测到接收标志位rx_int有下降沿,就立即启动波特率(标志位置1),并使能接收标志位tx_en,发送开始。

代码的话,我想还是先不发了吧,因为RS232这部分代码只是板子代码中的一个小的部分,自己板子上的RS232代码中还有一些其他的问题,至于代码的话,感觉可以看看特权同学的代码,挺好的。

       结束之前,说几个细节,首先关于串口的代码,当然应该下载一个串口调试助手,网上有很多,而且串口调试助手操作起来也是比较容易。如果用的话,在网上下载就行,然后就是如果电脑上之前没有用过串口的话,应该安装一个USB转串口的驱动,也挺容易的估计网上也会有,所以说网上是我们的一个大课堂,有时候我们找不到自己想要的信息只是我们不懂得搜索的方法而已,最后一点,网上有些代码或者说是解释是错误的,我们不能一味的去相信,应该有自己的一个判断能力,应该有自己的分析。加油!!!

文章评论0条评论)

登录后参与讨论
我要评论
0
14
关闭 站长推荐上一条 /2 下一条