數(shù)字頻率計電路功能概述:
本設計采用TMS320F2812 DSP 芯片,制作了一臺簡易數(shù)字頻率計。本設計綜合了傳統(tǒng)的多周期測量和等精度測量方法,實現(xiàn)了對被測信號頻率、周期、脈寬和占空比寬范圍、高精度的測量。提出了一種在無需任何外部硬件控制情況下,利用DSP 2812豐富的軟件資源實現(xiàn)等精度測量的一種方法。它根據(jù)每個門閘時間內(nèi)高頻標準脈沖的個數(shù)與已知被測信號的個數(shù),求得被測信號頻率,最后再通過多次測量取平均值的方法得到最終結(jié)果。系統(tǒng)測試結(jié)果表明我們的設計是可行的。
硬件設計:
數(shù)字頻率計系統(tǒng)硬件設計由四部分組成:整形電路、DSP選擇與F2812最小系、通訊模塊和電池管理模塊。具體介紹說明,詳見附件內(nèi)容。
Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)
0.png (21.63 KB, 下載次數(shù): 147)
下載附件
2017-8-14 01:43 上傳
0.png (21.65 KB, 下載次數(shù): 154)
下載附件
2017-8-14 01:44 上傳
0.png (58.88 KB, 下載次數(shù): 172)
下載附件
2017-8-14 01:44 上傳
程序打包:
0.png (12.89 KB, 下載次數(shù): 139)
下載附件
2017-8-14 01:47 上傳
TMS320F2812 DSP源程序如下:
-
- void init_eva_timer1(void)//定時器1初始化
- {
- EvaRegs.GPTCONA.all= 0x6052;//將定時器1,2配置成遞增計數(shù)模式
- //沒有事件啟動ADC,定時器1,2的比較輸出由各定時器比較邏輯獨立驅(qū)動
- //定時器1比較輸出設為高有效
- EvaRegs.T1PR = 2; // 周期值
- EvaRegs.T1CMPR = 1; // 比較值
- EvaRegs.EVAIFRA.bit.T1CINT= 1;//復位定時器1的比較中斷標志
- EvaRegs.EVAIFRC.bit.CAP1INT = 1;//復位捕獲單元1的中斷標志
- EvaRegs.EVAIMRA.bit.PDPINTA= 0;//禁止功率驅(qū)動保護中斷
- EvaRegs.EVAIMRA.bit.T1CINT= 0;//禁止定時器1的比較中斷使能
- EvaRegs.EVAIMRC.bit.CAP1INT = 0;//禁止捕獲單元1的中斷使能
- EvaRegs.T1CNT= 0x0000;//定時器1的計數(shù)值初始化為0
- EvaRegs.T1CON.all = 0x1012;//將定時器1配置為仿真掛起時立即停止,
- //連續(xù)增計數(shù)模式,禁止定時器1操作,用外部時鐘,比較寄存器設為計數(shù)器值為0或等于周期寄存器的值時重載
- //使能定時器的比較操作
- }
- void init_eva_timer2(void)//定時器2的初始化
- {
- EvaRegs.GPTCONA.all=0x6052;
- EvaRegs.T2PR= 0xFFFF; // 周期值
- EvaRegs.T2CNT = 0x0000; //初始化計數(shù)值
- EvaRegs.EVAIFRB.bit.T2OFINT= 1; //復位定時器2的上溢中斷標志
- EvaRegs.EVAIMRB.bit.T2OFINT = 1;//使能定時器2的上溢中斷使能
- EvaRegs.T2CON.all= 0x1502;//將定時器2配置為仿真掛起時立即停止,
- //連續(xù)增計數(shù)模式,預分頻設為32分頻,使用自身使能位,禁止定時器2操作
- //使用內(nèi)部時鐘,比較寄存器設為計數(shù)器值為0或等于周期寄存器的值時重載
- //使用自身的周期寄存器
- }
- void frequence(void)//計算頻率
- { //計算捕獲1捕獲的定時器2的脈沖數(shù)
- if(Ny2>Ny3)
- Ny1=(65535-Ny2)+Ny3+65536*(EvaTimer2InterruptCount-1);
- else
- Ny1=Ny3-Ny2+65536*EvaTimer2InterruptCount;
- if(flag3 == 0) //判斷被測信號頻率范圍
- {
- if(Ny1>781250)
- {
- FR=7031250.0/Ny1;
- TR=1000000.0/FR;
- }
- if(Ny1>=150000&&Ny1<=781250) //頻率小于46.875Hz,直接計算
- {
- FR1=7031250.0/Ny1;//FR1=1000000.0/Ny1/64*150*3;
- FR0[FRCount++]=FR1;
- if(FRCount==7)//如果已計算了5個值,即數(shù)組已滿,則禁止定時器1的比較操作
- {
- flag6=1;
- // EvaRegs.EVAIFRA.bit.T1CINT=0;
- }
- else
- flag6=0;
- }
- else if( Ny1>=3&&Ny1<150000)//被測頻率小于150/64MH,大于150M/64/50000=46。875Hz
- {
- if(flag1 == 0)//大于46.875H小于150M/64頻率
- {
- flag3 = 1;
- flag1 = 1;
- N=150000.0/ Ny1;
- if(N<16383) //重新配置定時器1
- { EvaRegs.T1PR=4*N+3;// N=15384.6,T1PR最大為61542
- EvaRegs.T1CMPR=2*N+1;
- EvaRegs.T2CON.bit.TPS=3;//定時器2輸入時鐘預定標設為8分頻
- }
- else if(flag5==0) //大于767953.125H(150M/64/200000*65532)小于150M/64 頻率
- {
- flag5=1;
- EvaRegs.T1PR=65529;
- EvaRegs.T1CMPR=32764;
- EvaRegs.T2CON.bit.TPS=0;
- }
- }
- }
- else
- {
- if(flag2==0)//大于150M/64 頻率
- {
- flag3 = 1;
- flag2 = 1;
- EvaRegs.T1PR=65529;
- EvaRegs.T1CMPR=32764;
- EvaRegs.T2CON.bit.TPS=0;
- }
- }
- }
- else
- if(flag3==1) //重新配置中頻和高頻之后重新計算
- {
- if(flag1 == 1)
- {
- if(flag5==1)
- {
- FR1=4914750.0/Ny1*1000000;//FR1=150.0/2*65530/Ny1*1000000;
- FR0[FRCount++]=FR1;
- if(FRCount==7)
- {
- flag6=1;
- // EvaRegs.EVAIFRA.bit.T1CINT=0;
- }
- else
- flag6=0;
- }
- else
- {
- FR1=9375000.0/Ny1*(EvaRegs.T1PR+1);//FR1=1000000.0/Ny1/16*150*4*(N+1);
- FR0[FRCount++]=FR1;
- if(FRCount==7)
- {
- flag6=1;
- // EvaRegs.EVAIFRA.bit.T1CINT=0;
- }
- else
- flag6=0;
- }
- }
- else
- if(flag2 == 1)
- {
- FR1=4914750.0/Ny1*1000000;//FR1=150.0/2*65530/Ny1*1000000;
- FR0[FRCount++]=FR1;
- if(FRCount==7)
- {
- flag6=1;
- // EvaRegs.EVAIFRA.bit.T1CINT=0;
- }
- else
- flag6=0;
- }
- }
- }
- interrupt void eva_timer2_isr(void)//定時器2溢出中斷程序
- {
- if((EvaTimer2InterruptCount>98)&&(flag3 ==1)&&((flag2 ==1)|(flag5==1)))
- {
- EvaRegs.T1PR = 2; // 75M*65530/65536/767953.125H,由767953.125H以上變低頻處理,復位EV模塊
- flag3 = 0;
- flag2 = 0;
- flag1 = 0;
- flag4 = 0;
- flag5 = 0;
- EvaRegs.T1CNT = 65525;
- EvaRegs.T1CMPR = 1;
- EvaRegs.T1CON.bit.TCLD10=2;
- EvaRegs.T1CON.bit.TCLD10=0;
- EvaRegs.T2CON.bit.TPS=5;
- EvaTimer2InterruptCount=0;
- }
- else
- if((EvaTimer2InterruptCount>=25)&&(flag3 ==1)&&(flag1 ==1)&&(flag5==0))
- {
- EvaRegs.T1PR = 2; // 150M/16*8/65536/46.875,由中頻變低頻處理
- flag3 = 0;
- flag1 = 0;
- flag4 = 0;
- EvaRegs.T1CNT = 4*N;
- EvaRegs.T1CMPR = 1;
- EvaRegs.T1CON.bit.TCLD10=2;
- EvaRegs.T1CON.bit.TCLD10=0;
- EvaRegs.T2CON.bit.TPS=5;
- EvaTimer2InterruptCount=0;
- }
- else
- {
- EvaTimer2InterruptCount++;
- }
- EvaRegs.EVAIFRB.bit.T2OFINT= 1;//復位定時器2的上溢中斷標志
- PieCtrlRegs.PIEACK.all= PIEACK_GROUP3;//清除PIE分組3械牡鬧卸舷煊ξ?
- }
復制代碼
所有資料51hei提供下載:
pcb和原理圖:
硬件設計.zip
(230.99 KB, 下載次數(shù): 139)
2017-8-13 23:29 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
源程序:
Flash program.zip
(505.09 KB, 下載次數(shù): 110)
2017-8-13 23:29 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
頻率計設計論文:
簡易數(shù)字頻率計.pdf
(1.28 MB, 下載次數(shù): 168)
2017-8-13 23:29 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
頻率計資料(贈送設計方案).zip
(1.62 MB, 下載次數(shù): 111)
2017-8-13 23:28 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|