有用过NI 公司NET9914芯片的吗,就是GPIB协议的芯片?

2020-01-02 19:39发布

有用过NET9914芯片的朋友吗?我看了它的PDF文档,我不明白里面说的可以有两种模式,即MODE 9914 各MODE 7210模式。到底应该怎么样初始化它啊?是不是两种模式都要进入进行设置呢?有用过的可以讲一下吗?谢谢了!
90条回答
xyz543
2020-01-04 06:22
本帖最后由 xyz543 于 2012-11-16 11:02 编辑

楼主应该是要驱动 NI 的 NAT9914 吧? 我冒着工作不保的风险传给您我们公司商业用的标准驱动代码,希望能带给您学习上的方便.

两个 Void,第一个是初始化的程序,第二个是 NAT9914 中断使用的程序,最后是程序内要使用到的 .h 文件,我能提供的也就这么多了.

P.S. 这 NAT9914 是使用于 24 MHz 的晶震! 所有的注释我都已移除了,盼您能谅解..
  1. void Init_Gpib(void)
  2. {
  3.         unsigned char temp_uc;
  4.         char temp_zero=0;
  5.        
  6.         GpibAUXCR=GPIB_CHIPRST;
  7.         GpibAUXCR=GPIB_PIACCR;
  8.         GpibACCR=NAT9914_6MHZ;
  9.         GpibAUXCR=GPIB_PIEOSR;
  10.         GpibEOSR=CR;
  11.         GpibAUXCR=GPIB_PIACCR;
  12.         GpibACCR=0x94;
  13.         GpibADR=GpibAddr;
  14.         temp_uc=GpibISR0;
  15.         temp_uc=GpibISR1;
  16.         temp_uc=GpibISR2;
  17.         GpibSPMR=temp_zero;
  18.         GpibAUXCR=GPIB_PIACCR;
  19.         GpibACCR=0xd0;
  20.         GpibAUXCR=GPIB_NVSTDL;
  21.         GpibAUXCR=GPIB_NSTDL;
  22.     GpibPPR=temp_zero;
  23.     GpibAUXCR=GPIB_NHDFE;
  24.     GpibAUXCR=GPIB_NHDFA;
  25.     GpibAUXCR=GPIB_NSHDW;
  26.         GpibIMR0=0x3f;
  27.         GpibIMR1=0x8d;
  28.         GpibACCR=GPIB_PIIMR2;
  29.     GpibIMR2=0xc8;
  30.         temp_uc=GpibDIR;
  31.     GpibCDOR=temp_zero;
  32.     GpibAUXCR=temp_zero;
  33. }

  34. void Gpib_ISR (void) interrupt 0 using 1
  35. {
  36. char temp_c,err;
  37.     EX0=0;
  38.     GpibAUXCR=GPIB_DAI;
  39.     GpibIsr0Reg|=GpibISR0;
  40.     GpibIsr1Reg|=GpibISR1;
  41.     GpibIsr2Reg|=GpibISR2;
  42.     if(GpibADSR&GPIB_LA){
  43.          GpibIsr0Reg&=(~GPIB_BO);
  44.     }                          
  45.         GpibAUXCR=GPIB_DAI;
  46.     if(GpibIsr0Reg&GPIB_INT0){
  47.         GpibIsr0Reg&=(~GPIB_INT0);
  48.         while(1){
  49.                 if(GpibIsr0Reg&GPIB_BI){      
  50.                     GpibIsr0Reg&=(~GPIB_BI);
  51.                     temp_c=GpibDIR;
  52.                     if(GpibIsr0Reg&GPIB_END){
  53.                         GpibIsr0Reg&=(~GPIB_END);
  54.                         if(temp_c==LF){
  55.                             GpibPutRxChar(temp_c);
  56.                         }
  57.                         else if(temp_c==CR){
  58.                             GpibPutRxChar(temp_c);
  59.                         }
  60.                         else{
  61.                             GpibPutRxChar(temp_c);
  62.                         }   
  63.                     }
  64.                     else{
  65. //                        GpibPutRxChar(temp_c);
  66.                                 }
  67.                 GpibIsr0Reg|=GpibISR0;
  68.                 }
  69.             else
  70.                 break;
  71.         }
  72.         if(GpibADSR&GPIB_TA){
  73.         }
  74.         while(1){
  75.                 if(GpibIsr0Reg&GPIB_BO){
  76.                     temp_c=GpibGetTxChar(&err);
  77.                     if(err==COMM_NO_ERR){
  78.                         if(IOBufTxCtr==0){
  79.                             GpibAUXCR=GPIB_FEOI;
  80.                         GpibTxFlag=0;
  81.                                         }
  82.                     GpibIsr0Reg&=(~GPIB_BO);
  83.                                         GpibCDOR=temp_c;
  84.                     GpibIsr0Reg|=GpibISR0;
  85.                     }   
  86.                     else
  87.                                         break;
  88.                         }
  89.             else
  90.         }
  91.         if(GpibIsr0Reg&GPIB_RLC){
  92.             GpibIsr0Reg&=(~GPIB_RLC);
  93.             if((GpibADSR&GPIB_REM)==GPIB_REM){
  94.             }
  95.         }
  96.         if(GpibIsr0Reg&GPIB_MAC){
  97.             GpibIsr0Reg&=(~GPIB_MAC);
  98.         }
  99.     }
  100.     if(GpibIsr0Reg&GPIB_INT1){
  101.         GpibIsr1Reg&=(~GPIB_INT1);         
  102.         if(GpibIsr1Reg&GPIB_GET){
  103.             GpibIsr1Reg&=(~GPIB_GET);
  104.             GpibAUXCR=GPIB_NRDAC;
  105.         }        
  106.         if(GpibIsr1Reg&GPIB_ERR){
  107.             GpibIsr1Reg&=(~GPIB_ERR);
  108.             GpibAUXCR=GPIB_NBAF;
  109.         }      
  110.         if(GpibIsr1Reg&GPIB_DCAS){
  111.             GpibAUXCR=GPIB_RHDF;
  112.             GpibIsr0Reg=0;      
  113.             GpibIsr1Reg=0;
  114.             GpibIsr2Reg=0;
  115.             GpibAUXCR=GPIB_NRDAC;
  116.             GpibStbReg&=~(GPIB_MAV);
  117.         }
  118.         if(GpibIsr1Reg&GPIB_MA){
  119.             GpibIsr1Reg&=(~GPIB_MA);
  120.             GpibAUXCR=GPIB_VRDAC;
  121.         }
  122.                 if(GpibIsr1Reg&GPIB_IFC){
  123.                         GpibIsr1Reg&=(~GPIB_IFC);/
  124.                 }
  125.         }
  126.         if(GpibIsr2Reg&GPIB_STBO){               
  127.                 GpibSPMR=GpibStbReg;
  128.                 GpibStbReg&=(~GPIB_RQS);
  129.         }
  130.         if(GpibIsr2Reg&GPIB_LLOC){               
  131.         }
  132.     if(GpibADSR&GPIB_LA){
  133.         GpibIsr0Reg&=(~GPIB_BO);
  134.     }
  135.     GpibAUXCR=GPIB_NDAI;
  136.     EX0=1;  
  137. }

  138. /*下方是 GPIB 要调用到的 GPIB.H 文件*/

  139. #define IO_GPIB       0x0000

  140. #define GpibISR0      XBYTE[IO_GPIB]
  141. #define GpibIMR0      XBYTE[IO_GPIB]
  142. #define GpibISR1      XBYTE[IO_GPIB+1]
  143. #define GpibIMR1      XBYTE[IO_GPIB+1]
  144. #define GpibADSR      XBYTE[IO_GPIB+2]
  145. #define GpibIMR2      XBYTE[IO_GPIB+2]
  146. #define GpibEOSR      XBYTE[IO_GPIB+2]
  147. #define GpibBCR       XBYTE[IO_GPIB+2]
  148. #define GpibACCR      XBYTE[IO_GPIB+2]
  149. #define GpibBSR       XBYTE[IO_GPIB+3]
  150. #define GpibAUXCR     XBYTE[IO_GPIB+3]
  151. #define GpibISR2      XBYTE[IO_GPIB+4]
  152. #define GpibADR       XBYTE[IO_GPIB+4]
  153. #define GpibSPSR      XBYTE[IO_GPIB+5]
  154. #define GpibSPMR      XBYTE[IO_GPIB+5]
  155. #define GpibCPTR      XBYTE[IO_GPIB+6]
  156. #define GpibPPR       XBYTE[IO_GPIB+6]
  157. #define GpibDIR       XBYTE[IO_GPIB+7]
  158. #define GpibCDOR      XBYTE[IO_GPIB+7]

  159. #define GPIB_SWRST    0x80   
  160. #define GPIB_NSWRST   0x00   
  161. #define GPIB_CHIPRST  0x1c   
  162. #define GPIB_VRDAC    0x81   
  163. #define GPIB_NRDAC    0x01   
  164. #define GPIB_RHDF     0x02   
  165. #define GPIB_HDFA     0x83   
  166. #define GPIB_NHDFA    0x03   
  167. #define GPIB_HDFE     0x84   
  168. #define GPIB_NHDFE    0x04
  169. #define GPIB_NBAF     0x05   
  170. #define GPIB_FEOI     0x08   
  171. #define GPIB_LON      0x89      
  172. #define GPIB_NRSV2    0x18   
  173. #define GPIB_RSV2     0x98   
  174. #define GPIB_SW7210   0x99   
  175. #define GPIB_SW9914   0x15   
  176. #define GPIB_PIEOSR   0x9e   
  177. #define GPIB_PIACCR   0x9f   
  178. #define GPIB_PIIMR2   0x1e   
  179. #define GPIB_NTON     0x0a   
  180. #define GPIB_SRE      0x90   
  181. #define GPIB_NVSTDL   0x17   
  182. #define GPIB_NSTDL    0x15   
  183. #define GPIB_STDL     0x95   
  184. #define GPIB_REQT     0x9a   
  185. #define GPIB_NREQT    0x1a   
  186. #define GPIB_RTL      0x87   
  187. #define GPIB_NRTL     0X07
  188. #define GPIB_SHDW     0x96   
  189. #define GPIB_NSHDW    0X16   
  190. #define GPIB_DAI      0x93   
  191. #define GPIB_NDAI     0X13
  192. #define GPIB_BIIE     0x20
  193. #define GPIB_BOIE     0x10
  194. #define GPIB_ENDIE    0x08
  195. #define GPIB_RLCIE    0x02
  196. #define GPIB_INT0     0x80   
  197. #define GPIB_INT1     0x40  
  198. #define GPIB_BI       0x20  
  199. #define GPIB_BO       0x10  
  200. #define GPIB_END      0x08  
  201. #define GPIB_SPAS     0x04
  202. #define GPIB_RLC      0x02  
  203. #define GPIB_MAC      0x01
  204. #define GPIB_GETIE    0x80
  205. #define GPIB_ERRIE    0x40
  206. #define GPIB_UNCIE    0x20
  207. #define GPIB_APTIE    0x10
  208. #define GPIB_DCASIE   0x08
  209. #define GPIB_MAIEE    0x04
  210. #define GPIB_IFCIE    0x01
  211. #define GPIB_GET      0x80   
  212. #define GPIB_ERR      0x40
  213. #define GPIB_UNC      0x20
  214. #define GPIB_APT      0x10
  215. #define GPIB_DCAS     0x08
  216. #define GPIB_MA       0x04
  217. #define GPIB_SRQ      0x02
  218. #define GPIB_IFC      0x01
  219. #define GPIB_GLINT    0x80
  220. #define GPIB_STBOIE   0x40
  221. #define GPIB_STBO     0x40
  222. #define GPIB_LLOC     0x08
  223. #define GPIB_EEQ      0x04
  224. #define GPIB_MAV      0x10
  225. #define GPIB_ESB      0x20
  226. #define GPIB_RQS      0x40
  227. #define GPIB_MSS      0x40
  228. #define GPIB_TA       0x02
  229. #define GPIB_LA       0x04
  230. #define GPIB_LLO      0x40
  231. #define GPIB_REM      0x80
  232. #define GPIB_REN      0x01
  233. #define GPIB_ADDR     0x01
复制代码编辑原因: 将繁体字转为简体字,方便阅读..

一周热门 更多>