Digital signal processing (DSP) has become an important tool in the embedded software developer’s toolbox. DSP allows a developer to modify a signal in ways that wouldn’t be otherwise possible. While DSP is often used in audio applications, developers can use DSP to create digital filters that can be used to remove analog hardware from their board as well. An interesting and unique tool for creating digital filters is the ASN Filter Designer and in today’s post, we are going to explore a few of its capabilities.
The main reasons that I have found the ASN Filter Designer to be useful is to create digital filters in a way that doesn’t require me to be an expert in digital signal processing. There are many applications where an embedded software developer needs to implement an IIR or FIR filter such as sensor filtering before using that sensor data to control a BLDC motor. I’ve found that I can easily create filters by either entering in the frequency band and requirements or I can literally just drag around lines on a graph to get the desired filter response. For example, below is a simple IIR low pass filter that uses an elliptic method to create the filter. The filter has two bands; one from 0 – 25 and then 125 to 250 Hz as can be seen in the image below:
What’s great about this tool is that I can pretty easily change my filter. For example, in the upper right I could change my IIR elliptical filter to an IIR butterworth filter by just changing the method type. As you can see below, making this change instantly changes the filter response:
Changing from a lowpass filter to a high pass filter requires a similar effort. All I have to do is change the filter type dropdown to the desired filter type and I have my filter.
The feature that I think is the most powerful is that once I design my filter, I can easily export the filter as a code module. There are actually several different programming languages that I can export my filter in. For example, I can export my filter in:
- Arm CMSIS-DSP
This is extremely important because it allows a developer to automatically generate their filter code. If a filter needs to change at some point in development, it doesn’t require going back and making delicate code changes or reworking the code. Instead, a developer just updates their ASN Filter Design project file, regenerate the code and then deploy it.
To date, I’ve mostly used the Arm CMSIS-DSP generated code. The reason for this is that it utilizes the CMSIS-DSP library which makes running the DSP algorithm on a Cortex-M very efficient. An example for how this code looks for the filter we designed can be seen below:
You’ll notice that it generates a “mini” application that includes a main function and everything. Typically, the process that I’ve used is that I just copy and paste the definitions into my filter module and then copy the executable loop into the function that I call for my filter. Since a real application runs continuously and uses sensor data, there have to be hooks to feed that filter algorithm the data and then call it as required.
The ASN Filter Designer is an interesting and unique tool that developers can leverage to easily create digital filters for their applications without becoming a DSP or spending days or weeks hand calculating out how a filter will perform. I’ve barely scratched the surface on what can be done with this tool. To learn a little more, I recommend you check out the tool itself and read the developer blog at http://www.advsolned.com/asn_filter_designer/