教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 互联网资料 >

毕业论文再次修改版- 副本 - 图文(8)

来源:网络收集 时间:2026-07-28
导读: VOID EINT_ConfigInterruptPin(VOID) { } 由于pINTCRegs是INTC_REGS_T类型的实例,而INTC_REGS_T定义如下: /* Interrupt Controller Module Register Structure */ typedef struct { volatile UNS_32 er; /* Enabl

VOID EINT_ConfigInterruptPin(VOID) { }

由于pINTCRegs是INTC_REGS_T类型的实例,而INTC_REGS_T定义如下: /* Interrupt Controller Module Register Structure */ typedef struct {

volatile UNS_32 er; /* Enable Register */ volatile UNS_32 rsr; /* Raw Status Register */ volatile UNS_32 sr; /* Status Register */

volatile UNS_32 apr; /* Activation Polarity select Register */ volatile UNS_32 atr; /* Activation Type select Register */ volatile UNS_32 itr; /* Interrupt Type select Register */ } INTC_REGS_T;

其中,APR寄存器表示中断极选择:0表示通过低电平或者下降沿产生,1表示通过高电平或者上升沿产生;

ATR寄存器表示中断激活类型选择:0表示电平敏感,1表示边沿敏感; 将两者都设置为1,则表示GPI_2中断是由上升沿产生。

在完成FPGA以及中断的初始化和相关寄存器的设置后,下面的工作就是具体通过DeviceIO Control函数和相应的IO_Control Code来执行具体的读写操作。用户模式下的DeviceIO Control函数可以发送特定的IO_Control Code给一个特定的设备驱动程序,使相应的设备执行该动作。

实现的具体函数为PGA_IOControl。分别为读取FPGA寄存器和写入FPGA寄存器功能。

switch(dwCode)

{

case IOCTL_FPGA_WRITE_REG:

mreg=(FPGA_DATA*)pBufIn;

if(mreg->RegAdr < 0 || mreg->RegAdr > 15)

第 35 页 (共41 页)

pINTCRegs->atr |= GPIO_IRQ_MASK; //上升沿或者高电平触发 pINTCRegs->apr |= GPIO_IRQ_MASK; //上升沿触发

{

RETAILMSG(1,(L\)); return FALSE;

pBuff = mreg -> pBuff;

}

for(WriteLen = 0;WriteLen < mreg->BufferLengh;WriteLen ++) { } break ;

g_lpBaseFPGA[mreg->RegAdr * 2] = pBuff[WriteLen];

case IOCTL_FPGA_READ_REG:

mReadReg = (FPGA_DATA_READ*)pBufIn; pRDBuff = mReadReg->pBuff;

for(ReadLen=0;ReadLenReadLen;ReadLen++)

pRDBuff[ReadLen]=g_lpBaseFPGA[mReadReg->RegAdr * 2];

break; }

第六章 实验

1、FPGA收发数据测试

FPGA的RS485通信模块测试采用方法:一台主DCS控制站通过RS485模块向从DCS控制站发送0~49共50个数据,从DCS控制站的RS485模块收到数据后,将数据发送到PC机并显示,显示如下图:

第 36 页 (共41 页)

图6.1 FPGA收发数据测试终端显示

在接收数据过程中,FPGA能够准确的接收到来自RS485通信协议传输的数据,并且能够判断数据接收完成,能够实现RS485的双通道冗余功能。在FPGA发送数据过程中,能够正常的FIFO清零,然后能够正确的发送准确的数据。

图6.2 RS485总线波形 第 37 页 (共41 页)

通过示波器显示的RS485总线波形,发送控制信号的宽度基本与数据信号的宽度一致,所以保证了发送数据的正确和发送和接收数据。

图6.3 RS485传输距离测试

通过对RS485传输距离的测试,可以得知RS485在100m的距离上能够实现10Mb/s的数据传输,总的来说RS485作为一种串行通信的接口,它的传输距离还是比较的长的,满足DCS控制站与现场I/O模块之间的通信需求。

2、FPGA中断测试

图6.4 FPGA采用中断方式接收数据

在实验过程中,FPGA在收到中断信号之后,能够立即开始接受数据,并能够接收

第 38 页 (共41 页)

到正确的数据,因此能够实现FPGA与LPC3250之间通过中断的方式接收数据。

图6.5 FPGA中断方式WinCE测试程序

3、实验结论

通过本次实验,可以得知能够基本完成课题的要求,完成了基于FPGA的RS485通信模块之间的数据接收与发送的要求,以及RS485的传输距离的测试。同时RS485需要具有两路独立通道以实现冗余功能,FPGA与LPC2350之间要能够以中断方式接收数据,并实现校验。

参考文献

[1] http://blog.csdn.net/jw212/article/details/6255848

[2]http://topic.csdn.net/u/20101026/18/5413cb6c-3749-4280-8caf-2d2b49e77999.html [3] Draft LPC32x0 User manual. Rev. 00. 27 — 20 November 2008 [4] LPC3220/30/40/50 Product data sheet. Rev. 01. 01 - 1 April 2009.

[5] http://topic.csdn.net/u/20090527/11/2075c97a-d088-4ea6-bfd2-f4c1036d09ff.html [6]王常力,罗安.分布式控制系统(DCS)设计与应用实例.电子工业出版社.2004 [7]刘皖,何道君,谭明.FPGA设计与应用.清华大学出版社.2006 [8]赵艳华,曹丙霞,张睿.基于QuartusⅡ的FPGA/CPLD设计与应用.电子工业出版社.2009 [9]倪旭翔,计春雷.ARM Cortex-A8嵌入式系统开发与实践.中国水利水电出版社.2011 [10]马建国,孟宪元.FPGA现代数字系统设计.清华大学出版社.2010 [11]MAX3088 User manual.Rev3;12/05

[12]Cyclone Ⅱ Device Handbook(Altera Corporation).November 2004 [13]74AHC1G14 Product specification.2002 Feb 18

[14] 桂电—丰宝联合实验室编著.基于LPC3250的嵌入式Linux系统开发.电子工业出版社.2010 03

第 39 页 (共41 页)

[15]徐欣.FPGA的嵌入式系统设计.机械工业出版社.2004

第 40 页

41 页)

(共

…… 此处隐藏:1184字,全部文档内容请下载后查看。喜欢就下载吧 ……
毕业论文再次修改版- 副本 - 图文(8).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/443115.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)