Difference between revisions of "Component: Fast Fourier Transform (FFT) (DSP)"

From Flowcode Help
Jump to navigationJump to search
Line 1: Line 1:
 
+
{| style="width:50%"
 
 
{| width="50%"
 
 
|-
 
|-
| width="20%" style="color: gray;" | Author
+
| width="20%" style="color:gray;" | Author
 
| Matrix Ltd
 
| Matrix Ltd
 
|-
 
|-
| width="20%" style="color: gray;" | Version
+
| width="20%" style="color:gray;" | Version
| 1.2 (Release)
+
| 1.2
 
|-
 
|-
| width="20%" style="color: gray;" | Category
+
| width="20%" style="color:gray;" | Category
 
| DSP
 
| DSP
 
|}
 
|}
  
  
 +
==Fast Fourier Transform (FFT) component==
 +
Provides a way of converting a buffer full of time domain data into frequency domain data. The output of the FFT is a set of frequency bins which correspond to the frequencies present in the signal. The number of frequency bins is equal to half the input buffer size with each bin being responsible for a portion of the frequency up to 1/2 the nyquist.
  
==[[File:Component Icon f804a7bd_0280_4ff7_ab75_63be77fb2af3.png|Image]] Fast Fourier Transform (FFT) component==
+
==Detailed description==
Provides a way of converting a buffer full of time domain data into frequency domain data.
+
 
The output of the FFT is a set of frequency bins which correspond to the frequencies present in the signal.
+
''No detailed description exists yet for this component''
The number of frequency bins is equal to half the input buffer size with each bin being responsible for a portion of the frequency up to 1/2 the nyquist.
 
  
 
==Examples==
 
==Examples==
 +
 +
  
 
Example takes two adjustable frequency sine wave inputs and combines them and then passes the collection of 256 samples to the FFT function which produces 128 individual frequency banks which are then plotted from left (lowest frequency) to right (highest frequency) using an XY chart component.
 
Example takes two adjustable frequency sine wave inputs and combines them and then passes the collection of 256 samples to the FFT function which produces 128 individual frequency banks which are then plotted from left (lowest frequency) to right (highest frequency) using an XY chart component.
Line 54: Line 55:
 
==Downloadable macro reference==
 
==Downloadable macro reference==
  
===<span style="font-weight: normal;"><u><tt>ReadFrequencyBank</tt></u></span>===
+
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
Reads the value from one of the frequency banks after the FFT conversion has been performed.  
+
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ReadFrequencyBank'''
 +
|-
 +
| colspan="2" | Reads the value from one of the frequency banks after the FFT conversion has been performed. Valid frequency banks range from 1 to the allocated buffer size / 2 assuming the buffers are sized to be equal to a power of 2.&nbsp;
 +
|-
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 +
| width="90%" | BankIdx
 +
|-
 +
| colspan="2" | &nbsp;
 +
|-
 +
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u16-icon.png]] - UINT
 +
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
  
Valid frequency banks range from 1 to the allocated buffer size / 2 assuming the buffers are sized to be equal to a power of 2.
 
  
'''Parameters'''
+
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 +
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''FFT'''
 +
|-
 +
| colspan="2" | Performs the data conversion from time based data to frequency based data. Takes a full buffer input and converts it into real and imaginary frequency data ready for you to read the individual frequency bins.&nbsp;
 +
|-
 +
|-
 +
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 +
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
  
:[[Variable Types|UINT]] ''BankIdx''
 
  
 +
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 +
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''QueueData'''
 +
|-
 +
| colspan="2" | Takes a single value from the buffer input and stores it, once there are enough values queued up it returns a 1.&nbsp;
 +
|-
 +
|-
 +
| width="10%" align="center" | [[File:]] -
 +
| width="90%" | ProcessWhenFull
 +
|-
 +
| colspan="2" | 0 = Do Nothing when Buffer is full, 1 = Auto call FFT macro when Buffer is full&nbsp;
 +
|-
 +
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:]] -
 +
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
  
'''Return value'''
 
  
:[[Variable Types|UINT]]
+
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 +
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''IsPlaying'''
 +
|-
 +
| colspan="2" | Checks to see if the last played track is still playing&nbsp;
 +
|-
 +
|-
 +
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:]] -
 +
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
  
  
===<span style="font-weight: normal;"><u><tt>FFT</tt></u></span>===
+
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
Performs the data conversion from time based data to frequency based data.
+
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''GetReplyByte'''
 +
|-
 +
| colspan="2" | Reads a single byte from the last reply. Each reply contains 4 bytes starting with the command code.&nbsp;
 +
|-
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" | Index
 +
|-
 +
| colspan="2" | Range: 0-3 / 0=Command, 1=Feedback, 2=Data MSB, 3=Data LSB&nbsp;
 +
|-
 +
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
  
Takes the Input and converts it into real and imaginary frequency data ready for you to read the individual frequency bins.
 
  
'''Parameters'''
+
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 +
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SkipTrack'''
 +
|-
 +
| colspan="2" | Jump to the next or previous track&nbsp;
 +
|-
 +
|-
 +
| width="10%" align="center" | [[File:]] -
 +
| width="90%" | Direction
 +
|-
 +
| colspan="2" | 0=Next, 1=Previous&nbsp;
 +
|-
 +
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 +
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
  
:''This macro has no parameters''
 
  
 +
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 +
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''PlayTrack'''
 +
|-
 +
| colspan="2" | Plays track from the selected folder. MP3 & Advert folder track numbers should be 4 characters long e.g. 0001 any name.mp3, Other folder track numbers should be 3 characters long e.g. 001 Any name.mp3, Root the Track played in placement order.&nbsp;
 +
|-
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" | Directory
 +
|-
 +
| colspan="2" | 0=Root, 1=Folder "01" - 99=Folder "99", 100=MP3, 101=Advert&nbsp;
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 +
| width="90%" | Track
 +
|-
 +
| colspan="2" | Track number 1="001*.MP3" / "0001*.MP3", 100="100*.MP3" / "0100*.MP3"&nbsp;
 +
|-
 +
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 +
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
  
'''Return value'''
 
  
:''This call does not return a value''
+
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 +
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Initialise'''
 +
|-
 +
| colspan="2" | Sets up the UART and does some housekeeping. Must be called before calling any of the other component macros.&nbsp;
 +
|-
 +
|-
 +
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 +
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
  
  
 +
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 +
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ReadAnalogAsInt'''
 +
|-
 +
| colspan="2" | Reads one of the analogue components as an Integer value&nbsp;
 +
|-
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" | Channel
 +
|-
 +
| colspan="2" | 0 = LDR, 1 = POT&nbsp;
 +
|-
 +
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:]] -
 +
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
  
==Simulation macro reference==
 
  
''This component does not contain any simulation macros''
+
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 +
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''RemapCharacter'''
 +
|-
 +
| colspan="2" | Assigns a remap character allowing the PrintString function to automatically swap between pre-defined characters.  The characters can be custom (in the range 0-9) or can point to an existing character in the LCD character map.&nbsp;
 +
|-
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" | RemapIdx
 +
|-
 +
| colspan="2" | Remap Index, Range: 0 to (Remap Characters - 1)&nbsp;
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" | SearchCharacter
 +
|-
 +
| colspan="2" | Character to look for a replace&nbsp;
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" | ReplacementCharacter
 +
|-
 +
| colspan="2" | New character value to use in place of the search character.&nbsp;
 +
|-
 +
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 +
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
  
  
==Property reference==
+
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
<span style="font-weight: normal;"><u>Buffer Manager</u></span>
+
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Start'''
 +
|-
 +
| colspan="2" | Startup routine required by the hardware device. Automatically clears the display after initialising.&nbsp;
 +
|-
 +
|-
 +
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 +
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
  
This property is of type ''Fixed list of ints'' and can be referenced with the variable name ''buffer_manager''.
 
  
DSP buffer manager assigned to the component.
+
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 +
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetLEDState'''
 +
|-
 +
| colspan="2" | Sets the state of a single LED&nbsp;
 +
|-
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" | Port
 +
|-
 +
| colspan="2" | 0 = PortA, 1 = PortB&nbsp;
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" | LED
 +
|-
 +
| colspan="2" | 0 = LED0, 7 = LED7&nbsp;
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" | State
 +
|-
 +
| colspan="2" | &nbsp;
 +
|-
 +
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 +
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
  
<span style="font-weight: normal;"><u>Input</u></span>
 
  
This property is of type ''Fixed list of ints'' and can be referenced with the variable name ''input_a''.
+
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 +
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Initialise'''
 +
|-
 +
| colspan="2" | Must be called before any other CAN component macros to enable and initialise the CAN peripheral. &nbsp;
 +
|-
 +
|-
 +
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 +
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
  
Time based inputs, signal data should be signed and centered around the 0 position so it goes positive and negative.
 
  
<span style="font-weight: normal;"><u>Output Real</u></span>
 
  
This property is of type ''Fixed list of ints'' and can be referenced with the variable name ''output_c''.
 
  
The Real portion of the FFT conversion data.
+
==Property reference==
  
The Real and Imaginary data are combined to provide frequency bank readings such as amplitude and phase.
+
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
+
|-
<span style="font-weight: normal;"><u>Output Imaginary</u></span>
+
| width="10%" align="center" style="background-color:#D8C9D8;" | [[File:Fc9-prop-icon.png]]
 
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Properties'''  
This property is of type ''Fixed list of ints'' and can be referenced with the variable name ''output_i''.
+
|-
 
+
|-
The Imaginary portion of the FFT conversion data.  
+
| width="10%" align="center" | [[File:Fc9-type-17-icon.png]]
 
+
| width="90%" | Connect To
The Real and Imaginary data are combined to provide frequency bank readings such as amplitude and phase.
+
|-
 
+
| colspan="2" | &nbsp;
<span style="font-weight: normal;"><u>Filter Input Data</u></span>
+
|-
 
+
| width="10%" align="center" | [[File:Fc9-type-21-icon.png]]
This property is of type ''True or false'' and can be referenced with the variable name ''filterdata''.
+
| width="90%" | Buffer Size
 
+
|-
Applies a hamming window filter to the time domain sample data to provide better frequency detection.
+
| colspan="2" | Number of individual elements the buffer can store, must be a power of 2, default 256.&nbsp;
 
+
|-
<span style="font-weight: normal;"><u>Sample Rate</u></span>
+
| width="10%" align="center" | [[File:Fc9-type-16-icon.png]]
 
+
| width="90%" | Buffer Type
This property is of type ''Floating point'' and can be referenced with the variable name ''sample_rate''.
+
|-
 
+
| colspan="2" | Sets the buffer data type.&nbsp;
Sample rate used to perform simple calculations like nyquist and bin size.
+
|-
 
+
| width="10%" align="center" | [[File:Fc9-type-7-icon.png]]
<span style="font-weight: normal;"><u>Nyquist Frequency</u></span>
+
| width="90%" | Filter Input Data
 
+
|-
This property is of type ''Floating point'' and can be referenced with the variable name ''nyquist''.
+
| colspan="2" | Applies a hamming window filter to the time domain sample data to provide better frequency detection.&nbsp;
 
+
|-
The maximum frequency that can theoretically be detected by the FFT component assuming the sample rate is setup correctly.
+
| width="10%" align="center" | [[File:Fc9-type-15-icon.png]]
 
+
| width="90%" | Sample Rate
<span style="font-weight: normal;"><u>Frequency Bin Count</u></span>
+
|-
 
+
| colspan="2" | Sample rate used to perform simple calculations like nyquist and bin size.&nbsp;
This property is of type ''Signed integer'' and can be referenced with the variable name ''bin_count''.
+
|-
 
+
| width="10%" align="center" | [[File:Fc9-type-15-icon.png]]
The number of frequency bins that the component will provide.
+
| width="90%" | Nyquist Frequency
 
+
|-
<span style="font-weight: normal;"><u>Frequency Bin Size (Hz)</u></span>
+
| colspan="2" | The maximum frequency that can theoretically be detected by the FFT component assuming the sample rate is setup correctly.&nbsp;
 
+
|-
This property is of type ''Floating point'' and can be referenced with the variable name ''bin_size''.
+
| width="10%" align="center" | [[File:Fc9-type-14-icon.png]]
 
+
| width="90%" | Frequency Bin Count
The frequency range covered by each frequency bin.
+
|-
 +
| colspan="2" | The number of frequency bins that the component will provide.&nbsp;
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-type-15-icon.png]]
 +
| width="90%" | Frequency Bin Size (Hz)
 +
|-
 +
| colspan="2" | The frequency range covered by each frequency bin.&nbsp;
 +
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" | [[File:Fc9-conn-icon.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Connections'''  
 +
|-
 +
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" | [[File:Fc9-conn-icon.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Simulations'''  
 +
|-
 +
|}

Revision as of 16:53, 16 November 2021

Author Matrix Ltd
Version 1.2
Category DSP


Fast Fourier Transform (FFT) component

Provides a way of converting a buffer full of time domain data into frequency domain data. The output of the FFT is a set of frequency bins which correspond to the frequencies present in the signal. The number of frequency bins is equal to half the input buffer size with each bin being responsible for a portion of the frequency up to 1/2 the nyquist.

Detailed description

No detailed description exists yet for this component

Examples

Example takes two adjustable frequency sine wave inputs and combines them and then passes the collection of 256 samples to the FFT function which produces 128 individual frequency banks which are then plotted from left (lowest frequency) to right (highest frequency) using an XY chart component.

FC6 Icon.png FFT Example

Frequency output for a set of data

FFT.jpg


Frequency banks can be worked out by using the sample frequency and buffer size. The number of frequency banks is equal to the number of samples divided by 2 minus 1. We subtract the one because bank 0 is always empty and so can be discounted.

FrequencyBanks = (SampleCount / 2) - 1


The frequency ranges present inside a bank can be worked out as follows.

FreqMin = ((SampleRate / 2) / (SampleCount / 2)) * Bank

FreqMax = ((SampleRate / 2) / (SampleCount / 2)) * (Bank + 1)


For example if we sample at 10KHz and collect 256 samples then frequency bank 10 would represent any frequencies in the range of 390.6Hz to 429.7Hz.


Here is a spreadsheet document that will calculate the frequencies present in each bank. The highlighted green fields are editable and will update the rest of the values.

File:FFT Frequency Bank Calculator.xls

FFTBanks.jpg

Downloadable macro reference

Fc9-comp-macro.png ReadFrequencyBank
Reads the value from one of the frequency banks after the FFT conversion has been performed. Valid frequency banks range from 1 to the allocated buffer size / 2 assuming the buffers are sized to be equal to a power of 2. 
Fc9-u16-icon.png - UINT BankIdx
 
Fc9-u16-icon.png - UINT Return


Fc9-comp-macro.png FFT
Performs the data conversion from time based data to frequency based data. Takes a full buffer input and converts it into real and imaginary frequency data ready for you to read the individual frequency bins. 
Fc9-void-icon.png - VOID Return


Fc9-comp-macro.png QueueData
Takes a single value from the buffer input and stores it, once there are enough values queued up it returns a 1. 
[[File:]] - ProcessWhenFull
0 = Do Nothing when Buffer is full, 1 = Auto call FFT macro when Buffer is full 
[[File:]] - Return


Fc9-comp-macro.png IsPlaying
Checks to see if the last played track is still playing 
[[File:]] - Return


Fc9-comp-macro.png GetReplyByte
Reads a single byte from the last reply. Each reply contains 4 bytes starting with the command code. 
Fc9-u8-icon.png - BYTE Index
Range: 0-3 / 0=Command, 1=Feedback, 2=Data MSB, 3=Data LSB 
Fc9-u8-icon.png - BYTE Return


Fc9-comp-macro.png SkipTrack
Jump to the next or previous track 
[[File:]] - Direction
0=Next, 1=Previous 
Fc9-void-icon.png - VOID Return


Fc9-comp-macro.png PlayTrack
Plays track from the selected folder. MP3 & Advert folder track numbers should be 4 characters long e.g. 0001 any name.mp3, Other folder track numbers should be 3 characters long e.g. 001 Any name.mp3, Root the Track played in placement order. 
Fc9-u8-icon.png - BYTE Directory
0=Root, 1=Folder "01" - 99=Folder "99", 100=MP3, 101=Advert 
Fc9-u16-icon.png - UINT Track
Track number 1="001*.MP3" / "0001*.MP3", 100="100*.MP3" / "0100*.MP3" 
Fc9-void-icon.png - VOID Return


Fc9-comp-macro.png Initialise
Sets up the UART and does some housekeeping. Must be called before calling any of the other component macros. 
Fc9-void-icon.png - VOID Return


Fc9-comp-macro.png ReadAnalogAsInt
Reads one of the analogue components as an Integer value 
Fc9-u8-icon.png - BYTE Channel
0 = LDR, 1 = POT 
[[File:]] - Return


Fc9-comp-macro.png RemapCharacter
Assigns a remap character allowing the PrintString function to automatically swap between pre-defined characters. The characters can be custom (in the range 0-9) or can point to an existing character in the LCD character map. 
Fc9-u8-icon.png - BYTE RemapIdx
Remap Index, Range: 0 to (Remap Characters - 1) 
Fc9-u8-icon.png - BYTE SearchCharacter
Character to look for a replace 
Fc9-u8-icon.png - BYTE ReplacementCharacter
New character value to use in place of the search character. 
Fc9-void-icon.png - VOID Return


Fc9-comp-macro.png Start
Startup routine required by the hardware device. Automatically clears the display after initialising. 
Fc9-void-icon.png - VOID Return


Fc9-comp-macro.png SetLEDState
Sets the state of a single LED 
Fc9-u8-icon.png - BYTE Port
0 = PortA, 1 = PortB 
Fc9-u8-icon.png - BYTE LED
0 = LED0, 7 = LED7 
Fc9-u8-icon.png - BYTE State
 
Fc9-void-icon.png - VOID Return


Fc9-comp-macro.png Initialise
Must be called before any other CAN component macros to enable and initialise the CAN peripheral.  
Fc9-void-icon.png - VOID Return



Property reference

Fc9-prop-icon.png Properties
Fc9-type-17-icon.png Connect To
 
Fc9-type-21-icon.png Buffer Size
Number of individual elements the buffer can store, must be a power of 2, default 256. 
Fc9-type-16-icon.png Buffer Type
Sets the buffer data type. 
Fc9-type-7-icon.png Filter Input Data
Applies a hamming window filter to the time domain sample data to provide better frequency detection. 
Fc9-type-15-icon.png Sample Rate
Sample rate used to perform simple calculations like nyquist and bin size. 
Fc9-type-15-icon.png Nyquist Frequency
The maximum frequency that can theoretically be detected by the FFT component assuming the sample rate is setup correctly. 
Fc9-type-14-icon.png Frequency Bin Count
The number of frequency bins that the component will provide. 
Fc9-type-15-icon.png Frequency Bin Size (Hz)
The frequency range covered by each frequency bin. 
Fc9-conn-icon.png Connections
Fc9-conn-icon.png Simulations