欢迎来到天天文库
浏览记录
ID:10776700
大小:223.00 KB
页数:15页
时间:2018-07-08
《反射内存卡资料整理》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、一、反射内存卡基本特征型号:vmipci-5565-110001.板载内存128MB,地址空间:0x0~0x7FFFFFF2.4kFIFOs3.TransmissionMode=Multimode4.NoConformalCoating保形[角]涂料二、中断式通信流程图1中断式通信流程图2.1特点:一、发送方和接收方通过事件进行同步,CPU占用少;二、发送方可以向多个指定的接收方发送数据,即1对多方式;也可以实现广播方式。2.2注意事项:1.当接收方调用RFM2gWaitForEvent函数后,将挂起当前线程。直到有事件发生或等待超时才能恢复,
2、因此接收部分的代码应采用多线程编程;2.RFM2gSendEvent需要指定接收设备的NodeID,该参数由板卡上的跳线决定(EachRFM2gdeviceonanRFM2gnetworkisuniquelyidentifiedbyitsnodeID,whichismanuallysetbyjumpersonthedevicewhentheRFM2gnetworkisinstalled.ThedriverdeterminesthenodeIDwhenthedeviceisinitialized)。本机的NodeID可以通过APIRFM2gNod
3、eID获取;如果采取广播方式,则参数NodeID应指定为宏定义RFM2G_NODE_ALL;3.数据读写有两种方式:直接读写和内存映射。直接读写的相关函数有:RFM2gRead和RFM2gWrite。内存映射的相关函数有:RFMUserMemory和RFMUnMapUserMemory。后者将板载内存按页(page)映射到程序的内存空间,对映射内存的操作将直接反应到板载内存上。按照手册的解释:使用内存映射后,数据的传输将使用PIO方式,不使用DMA方式。而直接读写函数的数据传输将尽可能采取DMA方式。三、代码3.1收发一体的通信代码(摘自例程r
4、fm2g_send.c,为便于理解,去掉了其中的错误处理代码):#include"rfm2g_windows.h"//屏蔽在Vs2005中编译时的警告#include"rfm2g_api.h"//rfmAPI#defineBUFFER_SIZE256//缓冲区大小256byte#defineOFFSET_10x1000//写数据起始位置4k#defineOFFSET_20x2000//读数据起始位置8k#defineTIMEOUT60000//超时时间60s#defineDEVICE_PREFIX"\\.\rfm2g"//win系统的PC
5、I设备名前缀RFM2G_STATUSresult;//RFM2gAPI调用的返回值,成功为RFM2G_SUCCESSRFM2G_CHARdevice[40];//完整的设备名由前缀和设备编号组成RFM2GHANDLEHandle=0;//设备操作句柄,由RFM2gOpen返回//构造设备名,如"\\.\rfm2g1"sprintf(device,"%s%d",DEVICE_PREFIX,numDevice);//打开设备result=RFM2gOpen(device,&Handle);//使网络中断可用。默认情况下,反射内存网的中断是不可
6、用的,RFM2gEnableEvent函数使得接收设备可以响应网络中断。如果发送方不需响应中断,则不必调用该函数result=RFM2gEnableEvent(Handle,RFM2GEVENT_INTR2);//将数据写入反射内存卡的板载内存。result=RFM2gWrite(Handle,OFFSET_1,(void*)outbuffer,BUFFER_SIZE*4);/*在板载内存的有效范围之内,从第二个参数指定起始地址开始写入数据。写入的长度按字节计算。字长换算法则:1byte=1RFM2G_UINT81word=1RFM2G_UIN
7、T16=2*RFM2G_UINT81longword=1RFM2G_UINT32=4*RFM2G_UINT8*///发网络中断result=RFM2gSendEvent(Handle,otherNodeId,RFM2GEVENT_INTR1,0);//等待中断RFM2GEVENTINFOEventInfo;EventInfo.Event=RFM2GEVENT_INTR2;//等待的网络中断类型EventInfo.Timeout=TIMEOUT;//等待多久即超时result=RFM2gWaitForEvent(Handle,&EventInfo
8、);//调用后程序挂起//读数据.与RFM2gWrite函数类似,需要事先分配读取缓冲和指定读取数据的长度result=RFM2gRead(Handl
此文档下载收益归作者所有