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操作*/
}
09-07