TMS320f28335驱动AD7606程序
0赞AD7606作为双极性,单电源供电的16位采集芯片。在电力采集,继电保护中应用比较广泛,配合硬件32位浮点运算处理器TMS320f28335作为数据采集处理的应用比较广泛,现在和大家分享下驱动。采集思想:定时器0作为采样数率源,50hz采样128点采样速率是6400hz,定时器设置
ConfigCpuTimer(&CpuTimer0, 149.2992, 156.25);
//ConfigCpuTimer(&CpuTimer1, 150, 1000000);
//ConfigCpuTimer(&CpuTimer2, 150, 1000000);
StartCpuTimer0();
每次进入定时器中断启动一次采样,中断程序:
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; //0x0001赋给12组中断ACKnowledge寄存器,对其全部清除,不接受其他中断CpuTimer0Regs.TCR.bit.TIF=1; // 定时到了指定时间,标志位置位,清除标志
CpuTimer0Regs.TCR.bit.TRB=1; // 重载Timer0的定时数据
ad7656_convest_start();
启动采样后AD7606完成转化后,会产生一个外部中断给DSP,这里定为外部中断3,八通道数据读8次:
interrupt void ISRExint3(void)
{
PieCtrlRegs.PIEACK.all|=M_INT12 ;
get_ad_buffer[0][which_num]=AD7656B_BASE_ADDR;
get_ad_buffer[4][which_num]=AD7656B_BASE_ADDR;
get_ad_buffer[1][which_num]=AD7656B_BASE_ADDR;
get_ad_buffer[5][which_num]=AD7656B_BASE_ADDR;
get_ad_buffer[2][which_num]=AD7656B_BASE_ADDR;
get_ad_buffer[6][which_num]=AD7656B_BASE_ADDR;
get_ad_buffer[3][which_num]=AD7656B_BASE_ADDR;
get_ad_buffer[7][which_num]=AD7656B_BASE_ADDR;
which_num++;
if(which_num>=N) //128
{
which_num=0;
complele_caiji=1;
StopCpuTimer0();
}
}
采集完128点后停止定时器,计算采集值
