How to filter my ADC output ?

조회 수: 4 (최근 30일)
bianchi
bianchi 2019년 9월 2일
편집: bianchi 2019년 9월 2일
Dear Members,
I got a filter coefficient from matlab :
/* General type conversion for MATLAB generated C-code */
#include "tmwtypes.h"
/*
* Expected path to tmwtypes.h
* C:\Program Files\MATLAB\R2018b\extern\include\tmwtypes.h
*/
const int BL = 252;
const real64_T B[252] = {
6.509489485376e-06,8.270468373576e-06,7.064827126383e-06,2.035036566381e-06,
-6.199144943968e-06,-1.530430577156e-05,-2.170369436731e-05,-2.174427733836e-05,
-1.324304616624e-05,3.149084058685e-06,2.339035331051e-05,4.073809420116e-05,
4.771598033019e-05, 3.88749823869e-05,1.343292994109e-05,-2.328007613973e-05,
-6.040768693408e-05,-8.440733005252e-05,-8.353908676759e-05,-5.263877917656e-05,
3.573508475597e-06,7.018851252303e-05,0.0001255118884919, 0.000147627918814,
0.0001222953867957,4.952226525078e-05,-5.382154786297e-05,-0.0001570052393388,
-0.0002239403811517,-0.0002250586264019,-0.000148863525125,-8.971673748049e-06,
0.0001565921278752,0.0002948202746476,0.0003538868289885,0.0003013760703547,
0.0001384716510019,-9.546804025625e-05,-0.0003309454428265,-0.0004879684402625,
-0.0005020986841372,-0.000348744552471,-5.704216636268e-05,0.0002928736706498,
0.0005904665632932,0.0007285044131239,0.0006399792716264, 0.000325987210871,
-0.0001361070302262,-0.0006094448304161, -0.00093670421378,-0.0009907704066022,
-0.0007211998800203,-0.0001802110032807,0.0004829797264755, 0.001061180750259,
0.001352190579092, 0.001227129264082,0.0006816976957453,-0.0001487550665314,
-0.0010193333099,-0.001645588235867,-0.001794153121802,-0.001365824774668,
-0.0004425130028242,0.0007213421897964, 0.001765671644857, 0.002333570437864,
0.002189935617387, 0.001311451978109,-8.479801395671e-05,-0.001589583874628,
-0.002718070358089,-0.003062598285136,-0.002434585940507,-0.0009475929608268,
0.0009914380896389, 0.002788470577278, 0.00384022894245, 0.00373166167708,
0.002389832564894,0.0001396368407159,-0.002365947536661,-0.004329634042112,
-0.005057755292929,-0.004196967869377,-0.001881265667525, 0.001266880368926,
0.004294843744221, 0.006200435613341, 0.006254439807294, 0.00426393327023,
0.0006854015379761,-0.003462805399825, -0.00687871151427,-0.008373150891941,
-0.007267200985151,-0.003662419169445, 0.001515171799773, 0.006732980928894,
0.01028679430541, 0.01083449837216, 0.007867746323399, 0.001965125316513,
-0.005275587183862, -0.01163742062178, -0.01492483266663, -0.01366929215605,
-0.007686544451677, 0.001703476697994, 0.01189919209156, 0.01966422424027,
0.02205153049026, 0.01736115274647, 0.005854450632269, -0.01000807742441,
-0.0259235455839, -0.03665900395193, -0.03732268145457, -0.02468377261547,
0.001805107035604, 0.03957199855514, 0.08322774168024, 0.1255731326557,
0.159094765642, 0.1776005452962, 0.1776005452962, 0.159094765642,
0.1255731326557, 0.08322774168024, 0.03957199855514, 0.001805107035604,
-0.02468377261547, -0.03732268145457, -0.03665900395193, -0.0259235455839,
-0.01000807742441, 0.005854450632269, 0.01736115274647, 0.02205153049026,
0.01966422424027, 0.01189919209156, 0.001703476697994,-0.007686544451677,
-0.01366929215605, -0.01492483266663, -0.01163742062178,-0.005275587183862,
0.001965125316513, 0.007867746323399, 0.01083449837216, 0.01028679430541,
0.006732980928894, 0.001515171799773,-0.003662419169445,-0.007267200985151,
-0.008373150891941, -0.00687871151427,-0.003462805399825,0.0006854015379761,
0.00426393327023, 0.006254439807294, 0.006200435613341, 0.004294843744221,
0.001266880368926,-0.001881265667525,-0.004196967869377,-0.005057755292929,
-0.004329634042112,-0.002365947536661,0.0001396368407159, 0.002389832564894,
0.00373166167708, 0.00384022894245, 0.002788470577278,0.0009914380896389,
-0.0009475929608268,-0.002434585940507,-0.003062598285136,-0.002718070358089,
-0.001589583874628,-8.479801395671e-05, 0.001311451978109, 0.002189935617387,
0.002333570437864, 0.001765671644857,0.0007213421897964,-0.0004425130028242,
-0.001365824774668,-0.001794153121802,-0.001645588235867, -0.0010193333099,
-0.0001487550665314,0.0006816976957453, 0.001227129264082, 0.001352190579092,
0.001061180750259,0.0004829797264755,-0.0001802110032807,-0.0007211998800203,
-0.0009907704066022, -0.00093670421378,-0.0006094448304161,-0.0001361070302262,
0.000325987210871,0.0006399792716264,0.0007285044131239,0.0005904665632932,
0.0002928736706498,-5.704216636268e-05,-0.000348744552471,-0.0005020986841372,
-0.0004879684402625,-0.0003309454428265,-9.546804025625e-05,0.0001384716510019,
0.0003013760703547,0.0003538868289885,0.0002948202746476,0.0001565921278752,
-8.971673748049e-06,-0.000148863525125,-0.0002250586264019,-0.0002239403811517,
-0.0001570052393388,-5.382154786297e-05,4.952226525078e-05,0.0001222953867957,
0.000147627918814,0.0001255118884919,7.018851252303e-05,3.573508475597e-06,
-5.263877917656e-05,-8.353908676759e-05,-8.440733005252e-05,-6.040768693408e-05,
-2.328007613973e-05,1.343292994109e-05, 3.88749823869e-05,4.771598033019e-05,
4.073809420116e-05,2.339035331051e-05,3.149084058685e-06,-1.324304616624e-05,
-2.174427733836e-05,-2.170369436731e-05,-1.530430577156e-05,-6.199144943968e-06,
2.035036566381e-06,7.064827126383e-06,8.270468373576e-06,6.509489485376e-06
};
I use STM32
HAL_ADC_Start_DMA (&hadc, (uint32_t *) adc_buf, 4); // data to be converted = 4
HAL_Delay(10);
printf("ADC value 3 %u \r\n",adc_val[3]);
.
.
.
I want to filter adc_val[3] ...
How can I attach it to my ADC result ? and then print the result out to compare ?
Thanks

답변 (1개)

bianchi
bianchi 2019년 9월 2일
편집: bianchi 2019년 9월 2일
Is it possible that I do :
for(int i=0;i<BL;i++)
{
y =y + x[i]*B[BL-i];
}
for(int i=0;i<BL-1;i++)
{
x[i] = x[i+1];
}
x[251]=Vdd[3];
printf("Filtered value %u",(int)y);

카테고리

Help CenterFile Exchange에서 Filter Banks에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by