总感觉488过时了,但在仪器领域还是事实接口标准,技术含量不高,东西死贵。由于项目需要,需要加入488相关设置,由于488零基础,在此记录一下吧。
488芯片主要有两种,TI的 TMS9914A和NEC的uPD7210,目前TI最新的芯片NAT9914包含了这两种模式,并可以进行切换。由于主要用于9914模式下,基本忽略7210。
TMS9914兼容488.1,NAT9914兼容NAT488.2。
这两种9914还有点不同的,NAT9914进行了扩展,多了一些paged寄存器
9914模式下寄存器
NAT9914模式下共有8个地址,每个地址分为读写寄存器,还有些Page-in condition寄存器,共计19个独立寄存器。
page-in condition
ADSR(+2)地址有四个只写寄存器,同时ISR2,SPSR。。。
这些paged寄存器需要通过向寄存器AUXCR(+3W)写入相关命令调出来。
看文档发现
隐藏寄存器
paged只写寄存器ACCR由5个寄存器组成,通过高位bit选择(太节省空间了 ;))
GPIB地址
调试了一段时间9914,发现发送命令前,还需在命令前加上GPIB地址,末尾需要加上0x0d 0x0a结束(后来试验发现,在HP34401A上,只用0x0a就可以结束,但是用0x0d不能正确结束)
关于GPIB地址,使用抓包工具抓下来,地址和对应关系如下
地址 16进制数据 无符号数 ascii
0 0x20 32 SP
1 0x21 33 !
2 0x22 34 "
3 0x23 35 #
4 0x24 36 $
5 0x25 37 %
6 0x26 38 &
7 0x27 39 '
8 0x28 40 (
9 0x29 41 )
10 0x2a 42 *
11 0x2b 43 +
12 0x2c 44 ,
13 0x2d 45 -
14 0x2e 46 .
15 0x2f 47 /
16 0x30 48 0
17 0x31 49 1
18 0x32 50 2
19 0x33 51 3
20 0x34 52 4
21 0x35 53 5
22 0x36 54 6
23 0x37 55 7
24 0x38 56 8
25 0x39 57 9
26 0x3a 58 :
27 0x3b 59 ;
28 0x3c 60 <
29 0x3d 61 =
30 0x3e 62 >
31 0x3f 63 ? (Talk Only 不能接收)
总结GPIB命令格式如下:
<ADDR CODE(1byte)><CMD CODE(ascii string)><0x0d 0x0a>
0x0d表示回车 CR /r
0x0a表示换行 LF /n
TMS9914发送流程
TMS9914接收流程