NAT9914调试记录

    技术2025-11-19  10

    断断续续,折腾了小半年gpib,小个总结

    最开始用tms9914+stc89c52,对于tms9914不熟悉,没有参考代码,资料太少,调试手段麻烦,导致一度进展很慢,后来虽然能简单收发数,设地址,单一直都没有严格调通,暂时搁置

    采用68013+NAT9914方案,nat9914资料要多得多,这个方案也有调试麻烦的问题,而且,用惯了arm,用51,总有说不出的别扭,调到后来发现硬件上有一些bug,而且项目对于usb传输速度要就业没有那么高,全速就行,最主要68013写eeprom老不成功,也懒得弄了,于是搁置(写了大量代码,算是积累了)

    最后采用STM32F103+NAT9914的方案,调试容易得多,很快GPIB可以通过Agilent IO Control找到设备了,这里需要感谢网上找到的一篇论文,“《GPIB接口实现及应用》,陈星燎,陈金树,陈峰,清华大学 电子工程系 计算机应用研究 2003”

    里面关于NAT9914编程框架对于我有很多启发和帮助,当然,NAT9914的手册也是必须要看的。

    调试的时候发现STM32中断只能边沿触发,而NAT9914中断是电平触发,所以采用查询方式操作,本担心效率不高,但实测效果很好

    下面对一些关键点做个记录

    1.NAT9914时钟采用STM32定时器3产生12MHz

    2.通过STM32生成NAT9914接口时序时,需要有一定延时,经过大量测试,大约80周期延时,72MHz下1.11us左右,否则会出现接收丢数

    3.接收时查询MA位,然后根据LA或TA进行收发操作,LA要判断END;TA最后一字节需要发送feoi,有多种方法,具体可以参考手册

    4.T1延时尝试从默认的最大2000ns减小到350ns,没看出啥变化,老古董玩意儿,对速度没啥要求,也没细看

    5.用Agilent IO Control USB-GPIB进行refresh时,收到*IDN?前后,会接收到大量0x0a 和0xff之类的数,也不知Agilent怎么操作细节,在程序里干脆把收到的数0x0a和0xff全丢弃,这样效果还不错。

     

    最后在元宵节前,祝自己新的一年有所进展

     

    最新回复(0)