专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
STM32
有用过NI 公司NET9914芯片的吗,就是GPIB协议的芯片?
2020-01-02 19:39
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
STM32/STM8
18528
90
90
有用过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 的晶震! 所有的注释我都已移除了,盼您能谅解..
void Init_Gpib(void)
{
unsigned char temp_uc;
char temp_zero=0;
GpibAUXCR=GPIB_CHIPRST;
GpibAUXCR=GPIB_PIACCR;
GpibACCR=NAT9914_6MHZ;
GpibAUXCR=GPIB_PIEOSR;
GpibEOSR=CR;
GpibAUXCR=GPIB_PIACCR;
GpibACCR=0x94;
GpibADR=GpibAddr;
temp_uc=GpibISR0;
temp_uc=GpibISR1;
temp_uc=GpibISR2;
GpibSPMR=temp_zero;
GpibAUXCR=GPIB_PIACCR;
GpibACCR=0xd0;
GpibAUXCR=GPIB_NVSTDL;
GpibAUXCR=GPIB_NSTDL;
GpibPPR=temp_zero;
GpibAUXCR=GPIB_NHDFE;
GpibAUXCR=GPIB_NHDFA;
GpibAUXCR=GPIB_NSHDW;
GpibIMR0=0x3f;
GpibIMR1=0x8d;
GpibACCR=GPIB_PIIMR2;
GpibIMR2=0xc8;
temp_uc=GpibDIR;
GpibCDOR=temp_zero;
GpibAUXCR=temp_zero;
}
void Gpib_ISR (void) interrupt 0 using 1
{
char temp_c,err;
EX0=0;
GpibAUXCR=GPIB_DAI;
GpibIsr0Reg|=GpibISR0;
GpibIsr1Reg|=GpibISR1;
GpibIsr2Reg|=GpibISR2;
if(GpibADSR&GPIB_LA){
GpibIsr0Reg&=(~GPIB_BO);
}
GpibAUXCR=GPIB_DAI;
if(GpibIsr0Reg&GPIB_INT0){
GpibIsr0Reg&=(~GPIB_INT0);
while(1){
if(GpibIsr0Reg&GPIB_BI){
GpibIsr0Reg&=(~GPIB_BI);
temp_c=GpibDIR;
if(GpibIsr0Reg&GPIB_END){
GpibIsr0Reg&=(~GPIB_END);
if(temp_c==LF){
GpibPutRxChar(temp_c);
}
else if(temp_c==CR){
GpibPutRxChar(temp_c);
}
else{
GpibPutRxChar(temp_c);
}
}
else{
// GpibPutRxChar(temp_c);
}
GpibIsr0Reg|=GpibISR0;
}
else
break;
}
if(GpibADSR&GPIB_TA){
}
while(1){
if(GpibIsr0Reg&GPIB_BO){
temp_c=GpibGetTxChar(&err);
if(err==COMM_NO_ERR){
if(IOBufTxCtr==0){
GpibAUXCR=GPIB_FEOI;
GpibTxFlag=0;
}
GpibIsr0Reg&=(~GPIB_BO);
GpibCDOR=temp_c;
GpibIsr0Reg|=GpibISR0;
}
else
break;
}
else
}
if(GpibIsr0Reg&GPIB_RLC){
GpibIsr0Reg&=(~GPIB_RLC);
if((GpibADSR&GPIB_REM)==GPIB_REM){
}
}
if(GpibIsr0Reg&GPIB_MAC){
GpibIsr0Reg&=(~GPIB_MAC);
}
}
if(GpibIsr0Reg&GPIB_INT1){
GpibIsr1Reg&=(~GPIB_INT1);
if(GpibIsr1Reg&GPIB_GET){
GpibIsr1Reg&=(~GPIB_GET);
GpibAUXCR=GPIB_NRDAC;
}
if(GpibIsr1Reg&GPIB_ERR){
GpibIsr1Reg&=(~GPIB_ERR);
GpibAUXCR=GPIB_NBAF;
}
if(GpibIsr1Reg&GPIB_DCAS){
GpibAUXCR=GPIB_RHDF;
GpibIsr0Reg=0;
GpibIsr1Reg=0;
GpibIsr2Reg=0;
GpibAUXCR=GPIB_NRDAC;
GpibStbReg&=~(GPIB_MAV);
}
if(GpibIsr1Reg&GPIB_MA){
GpibIsr1Reg&=(~GPIB_MA);
GpibAUXCR=GPIB_VRDAC;
}
if(GpibIsr1Reg&GPIB_IFC){
GpibIsr1Reg&=(~GPIB_IFC);/
}
}
if(GpibIsr2Reg&GPIB_STBO){
GpibSPMR=GpibStbReg;
GpibStbReg&=(~GPIB_RQS);
}
if(GpibIsr2Reg&GPIB_LLOC){
}
if(GpibADSR&GPIB_LA){
GpibIsr0Reg&=(~GPIB_BO);
}
GpibAUXCR=GPIB_NDAI;
EX0=1;
}
/*下方是 GPIB 要调用到的 GPIB.H 文件*/
#define IO_GPIB 0x0000
#define GpibISR0 XBYTE[IO_GPIB]
#define GpibIMR0 XBYTE[IO_GPIB]
#define GpibISR1 XBYTE[IO_GPIB+1]
#define GpibIMR1 XBYTE[IO_GPIB+1]
#define GpibADSR XBYTE[IO_GPIB+2]
#define GpibIMR2 XBYTE[IO_GPIB+2]
#define GpibEOSR XBYTE[IO_GPIB+2]
#define GpibBCR XBYTE[IO_GPIB+2]
#define GpibACCR XBYTE[IO_GPIB+2]
#define GpibBSR XBYTE[IO_GPIB+3]
#define GpibAUXCR XBYTE[IO_GPIB+3]
#define GpibISR2 XBYTE[IO_GPIB+4]
#define GpibADR XBYTE[IO_GPIB+4]
#define GpibSPSR XBYTE[IO_GPIB+5]
#define GpibSPMR XBYTE[IO_GPIB+5]
#define GpibCPTR XBYTE[IO_GPIB+6]
#define GpibPPR XBYTE[IO_GPIB+6]
#define GpibDIR XBYTE[IO_GPIB+7]
#define GpibCDOR XBYTE[IO_GPIB+7]
#define GPIB_SWRST 0x80
#define GPIB_NSWRST 0x00
#define GPIB_CHIPRST 0x1c
#define GPIB_VRDAC 0x81
#define GPIB_NRDAC 0x01
#define GPIB_RHDF 0x02
#define GPIB_HDFA 0x83
#define GPIB_NHDFA 0x03
#define GPIB_HDFE 0x84
#define GPIB_NHDFE 0x04
#define GPIB_NBAF 0x05
#define GPIB_FEOI 0x08
#define GPIB_LON 0x89
#define GPIB_NRSV2 0x18
#define GPIB_RSV2 0x98
#define GPIB_SW7210 0x99
#define GPIB_SW9914 0x15
#define GPIB_PIEOSR 0x9e
#define GPIB_PIACCR 0x9f
#define GPIB_PIIMR2 0x1e
#define GPIB_NTON 0x0a
#define GPIB_SRE 0x90
#define GPIB_NVSTDL 0x17
#define GPIB_NSTDL 0x15
#define GPIB_STDL 0x95
#define GPIB_REQT 0x9a
#define GPIB_NREQT 0x1a
#define GPIB_RTL 0x87
#define GPIB_NRTL 0X07
#define GPIB_SHDW 0x96
#define GPIB_NSHDW 0X16
#define GPIB_DAI 0x93
#define GPIB_NDAI 0X13
#define GPIB_BIIE 0x20
#define GPIB_BOIE 0x10
#define GPIB_ENDIE 0x08
#define GPIB_RLCIE 0x02
#define GPIB_INT0 0x80
#define GPIB_INT1 0x40
#define GPIB_BI 0x20
#define GPIB_BO 0x10
#define GPIB_END 0x08
#define GPIB_SPAS 0x04
#define GPIB_RLC 0x02
#define GPIB_MAC 0x01
#define GPIB_GETIE 0x80
#define GPIB_ERRIE 0x40
#define GPIB_UNCIE 0x20
#define GPIB_APTIE 0x10
#define GPIB_DCASIE 0x08
#define GPIB_MAIEE 0x04
#define GPIB_IFCIE 0x01
#define GPIB_GET 0x80
#define GPIB_ERR 0x40
#define GPIB_UNC 0x20
#define GPIB_APT 0x10
#define GPIB_DCAS 0x08
#define GPIB_MA 0x04
#define GPIB_SRQ 0x02
#define GPIB_IFC 0x01
#define GPIB_GLINT 0x80
#define GPIB_STBOIE 0x40
#define GPIB_STBO 0x40
#define GPIB_LLOC 0x08
#define GPIB_EEQ 0x04
#define GPIB_MAV 0x10
#define GPIB_ESB 0x20
#define GPIB_RQS 0x40
#define GPIB_MSS 0x40
#define GPIB_TA 0x02
#define GPIB_LA 0x04
#define GPIB_LLO 0x40
#define GPIB_REM 0x80
#define GPIB_REN 0x01
#define GPIB_ADDR 0x01
复制代码
编辑原因: 将繁体字转为简体字,方便阅读..
加载中...
查看其它90个回答
一周热门
更多
>
相关问题
STM32F4上I2C(在PROTEUS中模拟)调试不通的问题
6 个回答
芯片供应紧张,准备换个MCU,MM32L系列替换STM32L系列的怎么样?
7 个回答
STM32同时使用两个串口进行数据收发时数据丢包的问题
5 个回答
STM32F103串口通信死机问题
4 个回答
STM32WLE5CC连接SX1268在LoRa模式下能与 SX1278互通吗?
2 个回答
相关文章
ST公司第一款无线低功耗单片机模块有效提高物联网设计生产效率
0个评论
如何实现对单片机寄存器的访问
0个评论
通过USB用STM32片内自带Bootloader下载程序及注意事项
0个评论
欲练此功必先自宫之STM32汇编启动,放慢是为了更好的前行
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
STM32
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
楼主应该是要驱动 NI 的 NAT9914 吧? 我冒着工作不保的风险传给您我们公司商业用的标准驱动代码,希望能带给您学习上的方便.
两个 Void,第一个是初始化的程序,第二个是 NAT9914 中断使用的程序,最后是程序内要使用到的 .h 文件,我能提供的也就这么多了.
P.S. 这 NAT9914 是使用于 24 MHz 的晶震! 所有的注释我都已移除了,盼您能谅解..
- void Init_Gpib(void)
- {
- unsigned char temp_uc;
- char temp_zero=0;
-
- GpibAUXCR=GPIB_CHIPRST;
- GpibAUXCR=GPIB_PIACCR;
- GpibACCR=NAT9914_6MHZ;
- GpibAUXCR=GPIB_PIEOSR;
- GpibEOSR=CR;
- GpibAUXCR=GPIB_PIACCR;
- GpibACCR=0x94;
- GpibADR=GpibAddr;
- temp_uc=GpibISR0;
- temp_uc=GpibISR1;
- temp_uc=GpibISR2;
- GpibSPMR=temp_zero;
- GpibAUXCR=GPIB_PIACCR;
- GpibACCR=0xd0;
- GpibAUXCR=GPIB_NVSTDL;
- GpibAUXCR=GPIB_NSTDL;
- GpibPPR=temp_zero;
- GpibAUXCR=GPIB_NHDFE;
- GpibAUXCR=GPIB_NHDFA;
- GpibAUXCR=GPIB_NSHDW;
- GpibIMR0=0x3f;
- GpibIMR1=0x8d;
- GpibACCR=GPIB_PIIMR2;
- GpibIMR2=0xc8;
- temp_uc=GpibDIR;
- GpibCDOR=temp_zero;
- GpibAUXCR=temp_zero;
- }
- void Gpib_ISR (void) interrupt 0 using 1
- {
- char temp_c,err;
- EX0=0;
- GpibAUXCR=GPIB_DAI;
- GpibIsr0Reg|=GpibISR0;
- GpibIsr1Reg|=GpibISR1;
- GpibIsr2Reg|=GpibISR2;
- if(GpibADSR&GPIB_LA){
- GpibIsr0Reg&=(~GPIB_BO);
- }
- GpibAUXCR=GPIB_DAI;
- if(GpibIsr0Reg&GPIB_INT0){
- GpibIsr0Reg&=(~GPIB_INT0);
- while(1){
- if(GpibIsr0Reg&GPIB_BI){
- GpibIsr0Reg&=(~GPIB_BI);
- temp_c=GpibDIR;
- if(GpibIsr0Reg&GPIB_END){
- GpibIsr0Reg&=(~GPIB_END);
- if(temp_c==LF){
- GpibPutRxChar(temp_c);
- }
- else if(temp_c==CR){
- GpibPutRxChar(temp_c);
- }
- else{
- GpibPutRxChar(temp_c);
- }
- }
- else{
- // GpibPutRxChar(temp_c);
- }
- GpibIsr0Reg|=GpibISR0;
- }
- else
- break;
- }
- if(GpibADSR&GPIB_TA){
- }
- while(1){
- if(GpibIsr0Reg&GPIB_BO){
- temp_c=GpibGetTxChar(&err);
- if(err==COMM_NO_ERR){
- if(IOBufTxCtr==0){
- GpibAUXCR=GPIB_FEOI;
- GpibTxFlag=0;
- }
- GpibIsr0Reg&=(~GPIB_BO);
- GpibCDOR=temp_c;
- GpibIsr0Reg|=GpibISR0;
- }
- else
- break;
- }
- else
- }
- if(GpibIsr0Reg&GPIB_RLC){
- GpibIsr0Reg&=(~GPIB_RLC);
- if((GpibADSR&GPIB_REM)==GPIB_REM){
- }
- }
- if(GpibIsr0Reg&GPIB_MAC){
- GpibIsr0Reg&=(~GPIB_MAC);
- }
- }
- if(GpibIsr0Reg&GPIB_INT1){
- GpibIsr1Reg&=(~GPIB_INT1);
- if(GpibIsr1Reg&GPIB_GET){
- GpibIsr1Reg&=(~GPIB_GET);
- GpibAUXCR=GPIB_NRDAC;
- }
- if(GpibIsr1Reg&GPIB_ERR){
- GpibIsr1Reg&=(~GPIB_ERR);
- GpibAUXCR=GPIB_NBAF;
- }
- if(GpibIsr1Reg&GPIB_DCAS){
- GpibAUXCR=GPIB_RHDF;
- GpibIsr0Reg=0;
- GpibIsr1Reg=0;
- GpibIsr2Reg=0;
- GpibAUXCR=GPIB_NRDAC;
- GpibStbReg&=~(GPIB_MAV);
- }
- if(GpibIsr1Reg&GPIB_MA){
- GpibIsr1Reg&=(~GPIB_MA);
- GpibAUXCR=GPIB_VRDAC;
- }
- if(GpibIsr1Reg&GPIB_IFC){
- GpibIsr1Reg&=(~GPIB_IFC);/
- }
- }
- if(GpibIsr2Reg&GPIB_STBO){
- GpibSPMR=GpibStbReg;
- GpibStbReg&=(~GPIB_RQS);
- }
- if(GpibIsr2Reg&GPIB_LLOC){
- }
- if(GpibADSR&GPIB_LA){
- GpibIsr0Reg&=(~GPIB_BO);
- }
- GpibAUXCR=GPIB_NDAI;
- EX0=1;
- }
- /*下方是 GPIB 要调用到的 GPIB.H 文件*/
- #define IO_GPIB 0x0000
- #define GpibISR0 XBYTE[IO_GPIB]
- #define GpibIMR0 XBYTE[IO_GPIB]
- #define GpibISR1 XBYTE[IO_GPIB+1]
- #define GpibIMR1 XBYTE[IO_GPIB+1]
- #define GpibADSR XBYTE[IO_GPIB+2]
- #define GpibIMR2 XBYTE[IO_GPIB+2]
- #define GpibEOSR XBYTE[IO_GPIB+2]
- #define GpibBCR XBYTE[IO_GPIB+2]
- #define GpibACCR XBYTE[IO_GPIB+2]
- #define GpibBSR XBYTE[IO_GPIB+3]
- #define GpibAUXCR XBYTE[IO_GPIB+3]
- #define GpibISR2 XBYTE[IO_GPIB+4]
- #define GpibADR XBYTE[IO_GPIB+4]
- #define GpibSPSR XBYTE[IO_GPIB+5]
- #define GpibSPMR XBYTE[IO_GPIB+5]
- #define GpibCPTR XBYTE[IO_GPIB+6]
- #define GpibPPR XBYTE[IO_GPIB+6]
- #define GpibDIR XBYTE[IO_GPIB+7]
- #define GpibCDOR XBYTE[IO_GPIB+7]
- #define GPIB_SWRST 0x80
- #define GPIB_NSWRST 0x00
- #define GPIB_CHIPRST 0x1c
- #define GPIB_VRDAC 0x81
- #define GPIB_NRDAC 0x01
- #define GPIB_RHDF 0x02
- #define GPIB_HDFA 0x83
- #define GPIB_NHDFA 0x03
- #define GPIB_HDFE 0x84
- #define GPIB_NHDFE 0x04
- #define GPIB_NBAF 0x05
- #define GPIB_FEOI 0x08
- #define GPIB_LON 0x89
- #define GPIB_NRSV2 0x18
- #define GPIB_RSV2 0x98
- #define GPIB_SW7210 0x99
- #define GPIB_SW9914 0x15
- #define GPIB_PIEOSR 0x9e
- #define GPIB_PIACCR 0x9f
- #define GPIB_PIIMR2 0x1e
- #define GPIB_NTON 0x0a
- #define GPIB_SRE 0x90
- #define GPIB_NVSTDL 0x17
- #define GPIB_NSTDL 0x15
- #define GPIB_STDL 0x95
- #define GPIB_REQT 0x9a
- #define GPIB_NREQT 0x1a
- #define GPIB_RTL 0x87
- #define GPIB_NRTL 0X07
- #define GPIB_SHDW 0x96
- #define GPIB_NSHDW 0X16
- #define GPIB_DAI 0x93
- #define GPIB_NDAI 0X13
- #define GPIB_BIIE 0x20
- #define GPIB_BOIE 0x10
- #define GPIB_ENDIE 0x08
- #define GPIB_RLCIE 0x02
- #define GPIB_INT0 0x80
- #define GPIB_INT1 0x40
- #define GPIB_BI 0x20
- #define GPIB_BO 0x10
- #define GPIB_END 0x08
- #define GPIB_SPAS 0x04
- #define GPIB_RLC 0x02
- #define GPIB_MAC 0x01
- #define GPIB_GETIE 0x80
- #define GPIB_ERRIE 0x40
- #define GPIB_UNCIE 0x20
- #define GPIB_APTIE 0x10
- #define GPIB_DCASIE 0x08
- #define GPIB_MAIEE 0x04
- #define GPIB_IFCIE 0x01
- #define GPIB_GET 0x80
- #define GPIB_ERR 0x40
- #define GPIB_UNC 0x20
- #define GPIB_APT 0x10
- #define GPIB_DCAS 0x08
- #define GPIB_MA 0x04
- #define GPIB_SRQ 0x02
- #define GPIB_IFC 0x01
- #define GPIB_GLINT 0x80
- #define GPIB_STBOIE 0x40
- #define GPIB_STBO 0x40
- #define GPIB_LLOC 0x08
- #define GPIB_EEQ 0x04
- #define GPIB_MAV 0x10
- #define GPIB_ESB 0x20
- #define GPIB_RQS 0x40
- #define GPIB_MSS 0x40
- #define GPIB_TA 0x02
- #define GPIB_LA 0x04
- #define GPIB_LLO 0x40
- #define GPIB_REM 0x80
- #define GPIB_REN 0x01
- #define GPIB_ADDR 0x01
复制代码编辑原因: 将繁体字转为简体字,方便阅读..一周热门 更多>