GPIB NAT9914 驱动

void nat9914_init(void)
{
	 u8  gpib_address =0x04;
			GPIB_GPIOConfigure();
	 TIM1_CH2(12,0);//6mhz
	
	
	//-----------step1 上电-------
	Outp(r7210_auxmr, c7210_sw9914);
	Outp(r_auxcr, c_ch_rst);// 芯片软复位
	
/*	//-----------step2 时钟-------
  Outp(r_auxcr, c_sw7210);// 进入7210模式,用于MICR位,设置频率
	Outp(r7210_auxmr, 0x50);// 7210 调入AUXMR寄存器 
  Outp(r7210_icr2, 0x81); // 设置MICR 为1
	Outp(r7210_auxmr,c7210_sw9914); // 返回9914模式
	Outp(r_auxcr,c_piaccr); // 调入时钟配置
	Outp(r_accr,0x26); 			// 12mhz
	Outp(r_auxcr,c_clrpi); // 清除 调入寄存器,*/
	
	
//	//-----------step2 时钟-------
	 Outp(r_auxcr,c_piaccr); // 置页访问寄存器
	 Outp(r_accr,f_icr| f_6mhz);// 时钟6MHZ 
//	Outp(r_accr,c_clrpi);   // 清除 调入寄存器,
	

	
	//-----------step4  可有可无-------
	//Outp(r_spmr, 0x00);//  串行查询响应
	Outp(r_auxcr, c_vstdl); //t1 500ns
	
	//-----------step5  中断-------
	Outp(r_imr0, 0x38);// B0,BI,END enable
	Outp(r_imr1, b_dcas_ie|b_get_ie);// MA enable
	
//	Outp(r_imr0, b_bo_ie | b_bi_ie); // 0x30
//	Outp(r_imr1, b_dcas_ie | b_get_ie); //0x80|0x8
	
	
	Outp(r_auxcr,c_piimr2); // 调入IMR2 寄存器
	Outp(r_imr2, 0x80);     // 充许全局中断
	//Outp(r_auxcr,c_clrpi); // 清除 调入寄存器,
	
// ------ step6 ---------------
//	Outp(r_auxcr,c_ndai); //充许中断
//	Outp(r_auxcr,c_hdfa);    // 设置数据接收方式(每一个需要握手协议),
	
	Outp(r_auxcr, c_pieosr);
	Outp(r_eosr, NEWLINE);// 结束标记
//	Outp(r_auxcr,c_clrpi); // 清除 调入寄存器,
		
	Outp(r_auxcr, c_piaccr);
	Outp(r_accr, f_accra | b_xeos | b_reos);// accra 寄存器
	//Outp(r_auxcr,c_clrpi); // 清除 调入寄存器,
		//-----------step3 地址-------
	Outp(r_adr,gpib_address);
	Outp(r_auxcr,c_nswrst);// 清除本地上电消息,开启GPIB操作
}

void GPIB_Init(void)
{
	
 uint8_t temp_uc=0;
  char temp_zero=0;
	
 	GPIB_GPIOConfigure();
	 TIM1_CH2(12,0);//6mhz
	 
	
	RST = 0; //RST
  Delay_nms(20);
	RST = 1; //RST
	
	 Outp(r_auxcr,c_ch_rst); //芯片复位
   Outp(r_auxcr,c_piaccr); // 置页访问寄存器
	 
	 /* 芯片复位,MICR 被清0  
	  10mhz 以上需要改MICR 位(要先进入7210,才能改MICR位,具体看手册)
		*/
	// Outp(r_auxcr,c_piaccr); // 置页访问寄存器
	 
	 Outp(r_accr,NAT9914_6MHZ);// 时钟6MHZ 
	 Outp(r_auxcr,c_pieosr);// 字符串结束 
	 
	 Outp(r_eosr,LF);//\n
	 
	 Outp(r_auxcr,c_piaccr);// ACCRA
	 Outp(r_accr,0x8c);//  4b=0 7bit   接和收都 
	 
	 Outp(r_adr,0x07);//get_gpib_address());// addr = 0x05
	 
	 temp_uc = Inp(r_isr0);   // Bits are cleared when read
	 temp_uc = Inp(r_isr1);   // Bits are cleared when read
	 temp_uc = Inp(r_isr2);   // Bits are cleared when read
	 
	 Outp(r_spmr,0x00);// 串行查询
	 Outp(r_auxcr,c_piaccr); // 置页访问寄存器 
	 Outp(r_accr,0xD0); 				// ACCRF 0xd0   低电平触发
	 
	 Outp(r_auxcr,c_nvstdl); // clear  T1 delay
	 Outp(r_auxcr,c_nstdl); 	// clear short T1 delay
	 Outp(r_ppr,temp_zero); 		// 轮询 清除	
	 Outp(r_auxcr,c_nhdfe); 	// clear holdoff on END only
	 Outp(r_auxcr,c_nhdfa); 	// clear holdoff on all data
	 
	 Outp(r_auxcr,c_nshdw); 	// clear shadow handshaking  continus
	 
	 Outp(r_imr0,0X3F); 	// B0,BI,END,SPAS,RLC,MAC enable
	 Outp(r_imr1,0X8D); 	// GET ,DCAS,MA,IFC enable
	 // 中断配置,
	 Outp(r_accr,c_piimr2); // 访问 MIR2 中断配置
	 Outp(r_imr2,0XC8); 	  // 全局中断,输出使能,
	 
	 temp_uc = Inp(r_dir);
	 //清除zero
	 Outp(r_cdor,temp_zero); 	// clear
	 
	 Outp(r_auxcr,temp_zero); // clear 本地上电消息,开启GPIB操作*/

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值