1. 发送GPIB数据消息的基本流程(from nat9914_rm):
(1) 确认T1 delay已经被正确设置;
(2) 等待NAT9914被编程(向auxcr寄存器写入0x09\89\0A\<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />8A指令)或寻址(CIC发送MTA(My Talker Address)指令)作为活动讲者;
(3) 等待BO位(ISR0[4])被设置;
(4) 将数据字节写到CDOR寄存器中;
(5) 等待BO位(ISR0[4])或ERR位(ISR1[6])被设置;
BO=1表明系统中的所有设备都已经接收了这个数据或指令;
ERR=1表明系统中有设备没有正常工作。
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
主端口(host interface)可以通过对BO与ERR位进行查询,也可以通过设置BO IE与ERR IE位使得这些事件自动产生中断。(两种方式:查询、中断)
2. 如何发送EOI或EOS?
方法一:将字节写入CDOR之前,写入Send EOI指令(向auxcr寄存器写入0x08);
这一指令的作用:使得下一个数据字节传输完成后EOI信号线自动变高;
方法二:设置XEOS(ACCRA[3])=1,当CDOR中的字节值与EOSR中设置的值相同时,EOI线将自动置高;
方法三:直接向CDOR中写入EOS码。
3. 与T1 Delay有关的问题:
T1 Delay的定义:在GPIB端口数据传输的过程中,NAT9914作为讲者驱动数据字节到DIO[8-1]信号线上,经过一定的延迟(称为T1 Delay),NAT9914置DAV为低向听者表明数据字节已经被放置到DIO[8-1]信号线上。
关于T1 Delay的设置,目前先不设ustd, vstdl和stdl,先设为缺省值2000ns,等系统功能初步实现后,再琢磨如何提高传输速度。
4. nbaf: auxiliary command(0x05),New Byte Available False
nbaf强制将本地消息nba(new byte available)置为false,这个动作将禁止NAT9914发送CDOR中最后写入的字节。这一命令在下面的情形中有用:
NAT9914作为一个讲者,而CDOR中刚被写入一个字节。在讲者将要发送CDOR中的字节数据之前,控者发出了ATN信号。正常情况下,当控者撤销ATN信号后,讲者会继续发送CDOR中的字节数据。如果控者发出ATN信号后,CDOR中的字节数据已经不再需要了,可以使用nbaf来取消这次传输。
5. 接收GPIB数据消息的基本流程(from nat9914_rm):
(1) NAT9914被编程或寻址为活动听者(设置ISR1中的MA位与ADSR中的LA位);
(2) 执行rhdf(Release RFD Holdoff)的辅助命令,释放所有挂起的RFD Holdoff;
(3) 等待BI位为1;
(4) 读取DIR寄存器中的值作为接收到的字节数据;
(5) 如果设置了BI IE位,则接收到数据后产生中断信号。
6. 接收END或EOS信息
END位(ISR0[3])表明NAT9914作为听者已经接收到一个END或EOS消息。
END消息:讲者置EOI信号线;
EOS消息:
如果NLEN(IMR2[5])=1,“新行”(new line)字符(0x0A)代表EOS消息;
如果REOS(ACCRA[2])=1,EOSR中的值代表EOS消息。
如果接收到上述字节数据,END位将被置为有效。
现在已知END位有效,怎样判断是上面的哪种情况发生呢?
查询NL位(ISR2[5])与EOS位(ISR2[4])。如果NL位有效,说明NAT9914接收到一个new line字符;如果EOS位有效,说明REOS=1并且NAT9914接收到的字符与EOSR寄存器中的内容相同。
7. 最终数据字节的RFD holdoff
在一个GPIB读操作过程中,可能需要在读一个数据字符串的最后一个字节时执行RFD holdoff。如果最后一个字节读取时EOI有效或者该字节为EOS字符,那么在NAT9914被编程为RFD Holdoff On End模式(通过hlde辅助命令实现)的情况下,RFD Holdoff自动发生。
如果不知道讲者在发送最后一个字节时是否置EOI有效或者接收接收字节是否匹配EOS字符,可以将NAT9914编程为RFD Holdoff On All模式(通过hlda辅助命令实现)。在RFD Holdoff On All模式下,只要接收到GPIB讲者发送的数据字节,NAT9914将执行RFD holdoff。
文章评论(0条评论)
登录后参与讨论