From 04:00 PM CDT – 08:00 PM CDT (09:00 PM UTC – 01:00 AM UTC) Tuesday, April 16, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.



当我在使用多个逻辑设备时如何来处理服务请求和串行轮询



硬件: GPIB

问题: TNT4882和TNT5002 ASIC芯片支持在同一个物接口上实现多个逻辑设备。也就是说,这个接口拥有多个地址。我能控制哪个地址来请求服务吗?我能对于每个地址都获取其状态字节吗?

解答: 这块芯片提供的机制是自动的,它在请求服务或者应答串行轮询时是无法感知你的固件执行的多个地址的。硬件认为只有一个地址。这样往往会导致未预期的设特性。

为了避免这些问题,你需要手动来处理这些服务请求和串行轮询。

处理串行轮询时,你需要使能ISR0桑的STBO位。这样在串行轮询时,每次设备请求一个状态字节时,都会产生一个中断(如果中断使能的话)。在STBO的中断服务程序中,你可以根据当前所选的地址决定返回哪个状态字节。如果当前所选的地址不是请求服务的那个的话,你需要写一个状态字节到SPMR中,但是不要设置第6位,然后将SRQ保持当前状态。如果当前线被插入,控制器会继续轮询设备直到请求服务的地址被找到。

如果要请求服务的话,你需要手动将SRQ线置高,然后置低。当一个给定的地址请求服务的话,将SRQ线置高。这样会让控制器串行轮询设备。可以使用BCR(总线控制)寄存器来控制,第二位控制SRQ线缆的状态,设置为1则将线置高,值0则将线置为低电平。注意将其他数据位设置为0,否则可能会导致GPIB总线锁死。使用0X04来请求服务或则0X00来停止请求服务。

相关链接:

附件:





报告日期: 11/14/2003
最近更新: 12/30/2014
文档编号: 33DA1C2Y