Difference between revisions of "Component: USB Slave (Comms: USB)"
Line 16: | Line 16: | ||
==Detailed description== | ==Detailed description== | ||
+ | |||
+ | |||
Line 22: | Line 24: | ||
==Examples== | ==Examples== | ||
+ | |||
+ | |||
Revision as of 10:40, 17 November 2021
Author | Matrix Ltd. |
Version | 1.3 |
Category | Comms: USB |
Contents
USB Slave component
Component to create and communicate using a generic USB communications profile. Has the ability to allow the device to be a slave to the PC. Compatible with simulation and USB enabled microcontroller devices (PIC/dsPIC).
Detailed description
No detailed description exists yet for this component
Examples
The PIC based ECIOs or MIAC are good targets for USB as they do not have any additional configuration setting that need to be setup to allow the firmware to run correctly. For other targets you will have to setup the configuration correctly for your hardware to allow the USB to run correctly.
Basic Embedded Example
Here is an example file which waits for incoming data and then when valid data is received it displays this as a binary value onto the PortB pins before echoing back the data.
USB Slave Simple Receive
USB Drivers
The example requires a device driver to function correctly. The driver can be generated by selecting the USB Slave component on the System panel, Looking down the list of properties in the properties window, selecting the Generate Driver property and switching the setting to Yes. This will place the driver .inf file into the same directory as the Flowcode fcfx project file is located.
Here is a signed version of the USB Slave device driver using the default VID/PID properties. The .inf driver file generated by Flowcode also requires some associated files which are not auto generated, these files can also be downloaded here.
The final driver files can be assembled by extracting the contents of the zip archive into a folder on your computer and adding the .inf file created by your Flowcode project. Running the correct executable for your PC type should then auto install the driver for you.
When the driver is installed correctly you will get your device showing up in the Windows device manager like this.
Basic Simulations Example
Here is an example file which is designed to run in simulation to communicate with the connected embedded device. The instance property will have to match the USB instance for the embedded device to allow the communications to work correctly.
USB Slave Simulation
The USB Slave instance is selected by selecting the USB slave component on the panel and setting the instance property.
When editing the USB Slave examples the slave service macro needs to match the setting in the USB Slave properties as shown below.
Slave Macro Setup
Slave Properties
Example console showing the data passed between the simulation and the embedded hardware.
The MIAC USB Slave and ECIO USB Slave Components are written based on the USB Slave component so these give a good example of what is possible using the component.
Downloadable macro reference
![]() |
SendString |
Adds a string of bytes onto the end of the outgoing data buffer. | |
![]() |
Data |
Data String To Send | |
![]() |
Length |
Max number of bytes to try and add to the outgoing buffer. | |
![]() |
Return |
![]() |
SendByte |
Adds the byte onto the end of the outgoing data buffer. | |
![]() |
Data |
Data byte to transmit to the host | |
![]() |
Return |
![]() |
CheckRx |
Called to check if there is any incoming data waiting to be received. Returns the number of incoming data bytes. Only needed when not running the slave service. | |
![]() |
Return |
![]() |
GetByte |
Retreives the byte at location Idx from the incoming data buffer. | |
![]() |
Idx |
Specifies the location in the incoming buffer | |
![]() |
Return |
![]() |
Initialise |
Starts up the USB communications and attempts to enumerate. Returns 0 for a successful startup or 255 for a enumeration timeout. | |
![]() |
Return |
![]() |
SendChannelPressure |
![]() |
Channel |
![]() |
Pressure |
![]() |
Return |
![]() |
Initialise |
Starts up the USB communications and attempts to enumerate. Returns 0 for a successful startup or 255 for a enumeration timeout. | |
![]() |
Return |
![]() |
OUTPUT |
Sets the output to; 0 = ON, 1 = OFF, 2 = NORMAL, 3 = INVERT. | |
![]() |
SetOutput |
Set the output. (0 = ON, 1 = OFF, 2 = NORMAL, 3 = INVERT). | |
![]() |
Return |
![]() |
MODPWMDEVWDT |
Sets the PWM waveform deviation to <nrf> sec. | |
[[File:]] - | Sec |
![]() |
Return |
![]() |
SWPMODE |
Sets the sweep mode to <CONT> or <TRIG>. 0 = CONT, 1 = TRIG. | |
[[File:]] - | Mode |
Set the sweep mode (0 = CONT, 1 = TRIG). | |
![]() |
Return |
![]() |
MODFSKRATE |
Sets FSK rate to <nrf> Hz. (Lower limit: 2mHz - Upper limit: 100kHz). | |
[[File:]] - | Rate |
Sets FSK rate in Hertz(Hz) (2mHz - 100kHz). | |
![]() |
Return |
![]() |
BST |
Sets the burst mode to; 0 = <OFF>, 1 = <NCYC>, 2= <GATED>, 3 = <INFINITE>. | |
![]() |
MODE |
Sets the burst mode (0 = OFF, 1 = NCYC, 2 = GATED, 3 = INFINITE). | |
![]() |
Return |
![]() |
LOLVL |
Sets the amplitude-low-level to <nrf> Volts. (Lower limit: 5.000 V - Upper limit: -0.010 V). | |
[[File:]] - | LowLevel |
Sets the amplitude-low-level in Volts(V) (-5.000 V - -0.010 V). | |
![]() |
Return |
![]() |
SAV |
Saves the complete instrument setup to the setup-file named <nrf> | |
![]() |
StoreLocation |
Memory location of register (0-9) | |
![]() |
Return |
![]() |
TRG |
This command is the same as pressing the TRIGGER key. | |
![]() |
Return |
![]() |
ARBDCOFFS |
Sets the arbritary dc waveform offset to <nrf> volts. | |
[[File:]] - | OffsetVoltage |
Set the offset voltage | |
![]() |
Return |
![]() |
SWPTRGPOL |
Sets the sweep trigger slope to; 0 = POS, 1 = NEG. | |
[[File:]] - | Slope |
Set the sweep trigger slope (0 = POS, 1 = NEG). | |
![]() |
Return |
![]() |
CLKSRC |
Sets the clock source to; 0 = INT, 1 = EXT. | |
[[File:]] - | Source |
Sets the clock source (0 = INT, 1 = EXT). | |
![]() |
Return |
![]() |
ARB1DEFRet |
Returns user specified waveform name, waveform pint interpolation state and waveform length of ARB1. | |
![]() |
Return |
![]() |
BEEP |
Sound one beep. | |
![]() |
Return |
![]() |
SWPCNTFREQ |
Sets the sweep centre frequency to <nrf> Hz. (Lower limit: 1uHz - Upper limit: 50MHz). | |
[[File:]] - | Frequency |
Sets the sweep centre frequency in Hertz(Hz) (1uHz - 50MHz). | |
![]() |
Return |
![]() |
SWP |
Sets the sweep to <ON> or <OFF>. 0 = ON, 1 = OFF. | |
[[File:]] - | Sweep |
Enable or disable the sweep (0 = ON, 1 = OFF). | |
![]() |
Return |
![]() |
BSTTRGSRC |
Sets the burst trigger source to; 0 = INT, 1 = EXT, 2 = MAN. | |
![]() |
Source |
Set the burst trigger source (0 = INT, 1 = EXT, 2 = MAN). | |
![]() |
Return |
![]() |
MODPWMFREQ |
Sets PWM waveform frequency to <nrf> Hz. (Lower limit: 1uHz - Upper limit: 20kHz). | |
[[File:]] - | Frequency |
Sets PWM waveform frequency in Hertz(Hz) (1uHz - 20kHz). | |
![]() |
Return |
![]() |
ARB2Ret |
Returns the binary-data from an existing abbitrary wavefrom memory location. | |
![]() |
Return |
![]() |
RST |
Resets the instrument parameters to their default values. | |
![]() |
Return |
![]() |
RMPSYMM |
Sets the ramp waveform symmetry to <nrf> %. (Lower limit: 0 - Upper limit: 100) | |
[[File:]] - | Symmetry |
Sets the ramp waveform symmetry in percent (0 - 100). | |
![]() |
Return |
![]() |
BSTCOUNT |
Sets the burst count to <nrf> cycles, maximum 1048575 cycles. | |
[[File:]] - | Count |
Sets the burst count in cycles (1 - 1048575). | |
![]() |
Return |
![]() |
SWPMKR |
Sets the sweep marker to <ON> or <OFF>. 0 = ON, 1 = OFF. | |
[[File:]] - | Marker |
Enable or disable the sweep marker (0 = ON, 1 = OFF). | |
![]() |
Return |
![]() |
PULSFREQ |
Sets the pulse waveform frequency to <nrf> Hz (Lower limit: 1uHz - Upper limit: 50MHz). | |
[[File:]] - | Frequency |
Sets the pulse waveform frequency in Hertz(Hz) (1uHz - 50MHz). | |
![]() |
Return |
![]() |
MODFMDEV |
Sets FM waveform deviation to <nrf> Hz. (Lower limit: 1uHz - Upper limit: 25MHz). | |
[[File:]] - | Deviation |
Sets FM waveform deviation in Hertz(Hz) (1uHz - 25MHz). | |
![]() |
Return |
![]() |
RCL |
Recalls the instrument setup contained in store <nrf>. | |
![]() |
StoreLocation |
Memory location (0-9) | |
![]() |
Return |
![]() |
ESESet |
Sets the standard event status enable register to the value of <nrf>. (Lower limit: 0 - Upper limit: 255) | |
![]() |
Value |
Enable the register to this value. (0 - 255) | |
![]() |
Return |
![]() |
LOCAL |
Returns the instrument to local opertion and unlocks the keyboard. | |
![]() |
Return |
![]() |
SWPSPNFREQ |
Sets the sweep frequency span to <nrf> Hz. (Lower limit: 1uHz - Upper limit: 50.25kHz). | |
[[File:]] - | Frequency |
Set the sweep frequency span in Hertz(Hz) (1uHz - 50.25kHz). | |
![]() |
Return |
![]() |
CALSTEP |
Step to the next calibration point. | |
![]() |
Return |
![]() |
SRERet |
Returns the value of the Service Request Enable Register in <nr1> numeric format. | |
![]() |
Return |
![]() |
MODPMFREQ |
Sets PM waveform frequency to <nrf> Hz. (Lower limit: 1uHz - Upper limit: 20kHz). | |
[[File:]] - | Frequency |
Sets FM waveform frequency in Hertz(Hz) (1uHz - 20kHz). | |
![]() |
Return |
![]() |
ARBRESIZE |
Changes the size of arbritary waveform <cpd> to <nrf>. | |
[[File:]] - | Size |
Size of waveform | |
![]() |
Waveform |
Arbritary Waveform | |
![]() |
Return |
![]() |
LRN |
Intall data from a previous *LRN? command. | |
![]() |
Return |
![]() |
ARB4 |
Loads the binary-data to an existing arbitrary waveform memory location ARB4. | |
![]() |
Waveform |
![]() |
Return |
![]() |
CLKSRRet |
Returns the clock source <INT> or <EXT>. | |
[[File:]] - | Return |
![]() |
MODPMDEV |
Sets PM waveform deviation to <nrf> degrees. (Lower limit: -360° - Upper limit: 360°). | |
[[File:]] - | Degrees |
Sets PM waveform deviation in degrees (-360 - 360). | |
![]() |
Return |
![]() |
MSTLOCK |
Sends signal to SLAVE generator to get synchronised | |
![]() |
Return |
![]() |
HILVL |
Sets the amplitude-high-level to <nrf> Volts. (Lower limit: -0.490 V - Upper limit: 5.000 V). | |
[[File:]] - | HighLevel |
Sets the amplitude-high-level in Volts(V) (-0.490 V - 5.000 V). | |
![]() |
Return |
![]() |
ARB3 |
Loads the binary-data to an existing arbitrary waveform memory location ARB3. | |
![]() |
Waveform |
![]() |
Return |
![]() |
CALADJ |
Adjust the selected calibration value by <nrf> (Lower limit: -100 - Upper limit: 100). | |
[[File:]] - | Calibrate |
Adjust the selected calibration value (-100 - 100). | |
![]() |
Return |
![]() |
STBRet |
Returns the value of the Status Byte Register in <nr1> numeric format. | |
![]() |
Return |
![]() |
ARB2 |
Loads the binary-data to an existing arbitrary waveform memory location ARB2. | |
![]() |
Waveform |
![]() |
Return |
![]() |
EERRet |
Query and clear execution error number register. | |
![]() |
Return |
![]() |
MODFMSRC |
Sets FM waveform source to; 0 INT, 1 = EXT. | |
[[File:]] - | Source |
Sets FM waveform source (0 = INT, 1 = EXT). | |
![]() |
Return |
![]() |
MODAMFREQ |
Sets AM waveform frequency to <nrf> Hz. (Lower limit: 1uHz - Upper limit: 20kHz). | |
[[File:]] - | Frequency |
Sets AM waveform frequency in Hertz(Hz) (1uHz - 20kHz). | |
![]() |
Return |
![]() |
ESE |
Sets the Standard Event Status Enable Register to the value of <nrf>. | |
![]() |
Value |
Value of register 0-255 | |
![]() |
Return |
![]() |
ARB1 |
Loads the binary-data to an existing arbitrary waveform memory location ARB1. | |
![]() |
Waveform |
16 Bit binary number for arbitrary waveform. | |
![]() |
Return |
![]() |
ARB4DEFRet |
Returns user specified waveform name, waveform pint interpolation state and waveform length of ARB4. | |
![]() |
Return |
![]() |
CLS |
Clears status byte register of the interface. | |
![]() |
Return |
![]() |
MSTRELOCK |
Resynchronises the two generators in MASTER-SLAVE mode. | |
![]() |
Return |
![]() |
NOISLVL |
Sets the output noise level to <nr1> %. (Lower limit: 0% - Upper limit: 50%) | |
![]() |
Percent |
Sets the output noise level in percent. (0 - 50) | |
![]() |
Return |
![]() |
LOCKMODE |
Sets the synchronising mode to; 0 = MASTER, 1 = SLAVE, 2 = INDEP. | |
![]() |
Mode |
Sets the synchronising mode (0 = MASTER, 1 = SLAVE, 2 = INDEP). | |
![]() |
Return |
![]() |
ADDRESSRet |
Returns the instruments address | |
[[File:]] - | Return |
![]() |
MODPMSRC |
Sets PM waveform source to; 0 INT, 1 = EXT. | |
[[File:]] - | Source |
Sets PM waveform source (0 = INT, 1 = EXT). | |
![]() |
Return |
![]() |
MODPWMSRC |
Sets PWM waveform source to; 0 = INT, 1 = EXT. | |
[[File:]] - | Source |
Sets PWM waveform source (0 = INT, 1 = EXT). | |
![]() |
Return |
![]() |
MOD |
Sets modulation to; 0 = OFF, 1 = AM, 2 = FM, 3 = PM, 4 = FSK, 5 = PWM. | |
![]() |
Modulation |
Sets modulation (0 = OFF, 1 = AM, 2 = FM, 3 = PM, 4 = FSK, 5 = PWM). | |
![]() |
Return |
![]() |
ISTRet |
Returns IST local message as defined by IEEE Std. 488.2. The syntax of the response is 0<rmt>, if the local message is false, or 1<rmt>, if the local message is true. | |
[[File:]] - | Return |
![]() |
LRNRet |
Returns the complete setup of the instrument as a binary data block | |
[[File:]] - | Return |
![]() |
OPCRet |
Query Operation Complete status. The response is always 1<rmt> and will be available immediately the command is executed because all commands are sequential. | |
[[File:]] - | Return |
![]() |
PULSRANGE |
Sets PWM waveform source to <1>, <2> or <3>; 1 = 1, 2 = 2, 3 = 3. | |
![]() |
Range |
Sets the pulse rise and fall range. (1, 2 or 3) | |
![]() |
Return |
![]() |
TSTRet |
The generator has no self test capability and the response is always 0 <rmt>. | |
[[File:]] - | Return |
![]() |
BSTTRGPOL |
Sets the burst trigger slope to; 0 = POS, 1 = NEG. | |
[[File:]] - | Slope |
Set the burst trigger slope (0 = POS, 1 = NEG). | |
![]() |
Return |
![]() |
ARB3Ret |
Returns the binary-data from an existing abbitrary wavefrom memory location. | |
![]() |
Return |
![]() |
BSTPHASE |
Sets the burst phase to <nrf> degrees. (Lower limit: -360 - Upper limit: 360) | |
[[File:]] - | Degrees |
Sets the burst phase in degrees (-360 - 360) | |
![]() |
Return |
![]() |
SWPTRGPER |
Sets the sweep trigger period to <nrf> seconds | |
[[File:]] - | Seconds |
Set the sweep trigger period in seconds. | |
![]() |
Return |
![]() |
PULSDLY |
Sets the waveform delay to <nrf> sec | |
[[File:]] - | Sec |
![]() |
Return |
![]() |
Initialise |
Opens the COM port ready for communications. | |
![]() |
Return |