反射内存卡资整料理.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
反射内存卡资整料理

反射内存卡基本特征 型号:vmipci-5565-11000 板载内存128MB ,地址空间:0x0 ~ 0x7FFFFFF 4k FIFOs Transmission Mode=Multimode No Conformal Coating保形[角]涂料 图1 中断式通信流程图 2.1 特点: 发送方和接收方通过事件进行同步,CPU占用少; 发送方可以向多个指定的接收方发送数据,即1对多方式;也可以实现广播方式。 2.2 注意事项: 当接收方调用RFM2gWaitForEvent函数后,将挂起当前线程。直到有事件发生或等待超时才能恢复,因此接收部分的代码应采用多线程编程; RFM2gSendEvent需要指定接收设备的NodeID,该参数由板卡上的跳线决定(Each RFM2g device on an RFM2g network is uniquely identified by its node ID, which is manually set by jumpers on the device when the RFM2g network is installed. The driver determines the node ID when the device is initialized)。本机的NodeID可以通过API RFM2gNodeID获取;如果采取广播方式,则参数NodeID应指定为宏定义RFM2G_NODE_ALL; 数据读写有两种方式:直接读写和内存映射。直接读写的相关函数有:RFM2gRead和RFM2gWrite。内存映射的相关函数有:RFMUserMemory和RFMUnMapUserMemory。后者将板载内存按页(page)映射到程序的内存空间,对映射内存的操作将直接反应到板载内存上。按照手册的解释:使用内存映射后,数据的传输将使用PIO方式,不使用DMA方式。而直接读写函数的数据传输将尽可能采取DMA方式。 代码 3.1收发一体的通信代码 (摘自例程rfm2g_send.c,为便于理解,去掉了其中的错误处理代码): #include rfm2g_windows.h //屏蔽在Vs2005中编译时的警告 #include rfm2g_api.h //rfm API #define BUFFER_SIZE 256 //缓冲区大小 256byte #define OFFSET_1 0x1000 //写数据起始位置 4k #define OFFSET_2 0x2000 //读数据起始位置 8k #define TIMEOUT 60000 //超时时间 60s #define DEVICE_PREFIX \\\\.\\rfm2g //win系统的PCI设备名前缀 RFM2G_STATUS result; // RFM2g API 调用的返回值,成功为RFM2G_SUCCESS RFM2G_CHAR device[40]; // 完整的设备名由前缀和设备编号组成 RFM2GHANDLE Handle = 0; //设备操作句柄,由RFM2gOpen返回 //构造设备名,如\\\\.\\rfm2g1 sprintf(device, %s%d, DEVICE_PREFIX, numDevice); //打开设备 result = RFM2gOpen( device, Handle ); //使网络中断可用。默认情况下,反射内存网的中断是不可用的,RFM2gEnableEvent函数使得接收设备可以响应网络中断。如果发送方不需响应中断,则不必调用该函数 result = RFM2gEnableEvent( Handle, RFM2GEVENT_INTR2 ); //将数据写入反射内存卡的板载内存。 result = RFM2gWrite( Handle, OFFSET_1, (void *)outbuffer, BUFFER_SIZE*4 ); /*在板载内存的有效范围之内,从第二个参数指定起始地址开始写入数据。写入的长度按字节计算。 字长换算法则: 1 byte= 1 RFM2G_UINT8 1 word= 1 RFM2G_UINT16= 2* RFM2G_UINT8 1 long word= 1 RFM2G_UINT32= 4* RFM2G_UINT8 */ //发网络中断 result = RFM2gSendEvent( Handle, otherNodeId, RFM2GEVENT_INTR1, 0); //等待中断 RFM2GEVENTINFO Ev

文档评论(0)

sfd38 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档