Fir Filter

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
IaCa_4674211
Level 3
Level 3
25 replies posted 10 replies posted 10 questions asked

Using moving average filters for hard filtering. – controlpaths.

Could this be implemented on the Psoc?

Cheers

0 Likes
1 Solution
odissey1
Level 9
Level 9
First comment on KBA 1000 replies posted 750 replies posted

IaCa,

PSoC5 Filter component has both low pass and band-stop filters build-in, with better performance than in the link above.

Please bear in mind that in that above article the FIR filter code is also incorrect:

assign os14_data = (rs14_pipe1>>>3) + (rs14_pipe2>>>3) + (rs14_pipe3>>>3) + (rs14_pipe4>>>3) + (rs14_pipe5>>>3) + (rs14_pipe6>>>3) + (rs14_pipe7>>>3) + (rs14_pipe8>>>3);

For example, the filter output equals 8 when the input value is 15(!)

/odissey1

View solution in original post

0 Likes
3 Replies
VenkataD_41
Moderator
Moderator
Moderator
750 replies posted 500 replies posted 250 solutions authored

Hi,

What is the PSoC family that you are using?

In case if you are using PSOC 6, you can definitely do this using the CMSIS DSP library that you can easily combine with PSoC 6 libraries. Please refer the following page:

CMSIS DSP Software Library

In case if you are using PSoC 4 device, you have to implement this logic in either firmware or using UDB blocks.

If you are using PSoC 5Lp device, you can use the dedicated Digital Filter block inside PSoC

https://www.cypress.com/documentation/component-datasheets/digital-filter-block-dfb-assembler

Thanks

Ganesh

Hi Ganesh, I am using PSOC 5LP, but looks to me like the PSOC 6 with bluetooth would be useful for interfacing with an Android device for control,

Cheers

0 Likes
odissey1
Level 9
Level 9
First comment on KBA 1000 replies posted 750 replies posted

IaCa,

PSoC5 Filter component has both low pass and band-stop filters build-in, with better performance than in the link above.

Please bear in mind that in that above article the FIR filter code is also incorrect:

assign os14_data = (rs14_pipe1>>>3) + (rs14_pipe2>>>3) + (rs14_pipe3>>>3) + (rs14_pipe4>>>3) + (rs14_pipe5>>>3) + (rs14_pipe6>>>3) + (rs14_pipe7>>>3) + (rs14_pipe8>>>3);

For example, the filter output equals 8 when the input value is 15(!)

/odissey1

0 Likes