Part Number: MSP-SA430-SUB1GHZ
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Part Number: MSP-SA430-SUB1GHZ
rab boud,
Hold on for a day, we have been working on a new solution for implementing a spectrum analyzer. This new solution is going to release in Q1-2018 and will be based on the standard CC1310 and CC1350 LaunchPAD's. This will also give you a development system in addition to just a spectrum analyzer demo.
Regards,
/TA
HI,
Thanks for the reply.
It seems the Launch PAD is suitable for 868MHz. I want to record any signal between 860Mhz and 900Mhz and this is to see if there is any interference round 865.6Hmz and 867.6Mhz which are RFID tags frequencies used in Europe. So that data also is geo-location so after analyzing the data we can say that the RFID will not work because there are these signals which will interfere with the RFID own frequencies.
Although we don't have a simpler host application example for interfacing with the SA430, I can share some notes on the data format between the host and SA430 that may help you in this effort.
Here is the basic command format between the host and SA430:
A valid UART host command is a variable byte-length message with the following format:
Valid SA430 Host Command Format
* (byte 0) : 0x2A Valid command prefix
* (byte 1) : N Payload length in bytes
* (byte 2) : 0xXX Command number
* (byte 3 - N+2) : Payload
* (byte N + 3) : CRC High byte
* (byte N + 4) : CRC Low byte
When a valid host command is received by the SA430 the UART task responds with a mandatory acknowledgment message of the same format with a 0 length payload. The resulting 5 byte message has the following format:
Valid SA430 Host Command Acknowledgment Format
* (byte 0) : 0x2A Valid command prefix
* (byte 1) : 0 Payload length
* (byte 2) : Command number (echo of command being acknowledged)
* (byte 3) : CRC High byte
* (byte 4) : CRC Low byte
In addition to the five byte ACK message, the SA430 must send subsequent response message(s) to some host commands that require additional information. For example, when the host application needs to update its spectrum display, it sends a command to SA430 requesting new measurement results, and the SA430 must respond with one or more messages containing the updated measurement values. The response from the SA430 uses the same host command format, with the command number set to the same value as the command it responds to.
Here are specific examples of two commands:
* Commands cheat sheet
* -------------------------------------------------------------------------
* - General Commands
* + #CMD_CONNECT = 1, Request connection with the SA430. No
* additional response required after ACK.
* Bytes from host: [0x2A, 0x0, 0x1, 0x95, 0x09]
* + #CMD_DISCONNECT = 2, Disconnect from the SA430. No additional
* response required after ACK.
* Bytes from host: [0x2A, 0x00, 0x02, 0xA5, 0x6A]
Also, In the past we have experimented with a Windows PC program called "DockLight" to mimic the host application in sending and receiving commands from SA430. I am attaching a screen capture from this showing all the commands from host connection, through RF samples being read out of SA430. This may also be helpful to you in this effort.
Regards
Hi rperezti,
Thanks for the useful information.
The information, you provided, seems what I am looking for.
Some other modules I worked with you need to send a special string such $$$ or *** to put the device in a command mode. Does this device require such a things.
How to calculate the CRC High byte and CRC low byte?
Do you have the list of all commands and the responses and their description?
Do you have to connect/disconnect to the device using a Command? I though the connection/disconnection procedure is established by the serial port through for example Hercules in my case.
I will be using Hercules as hyper-terminal.
I think we are going into the right direction:)
Hi rab,
Connect/Disconnect
You can think of the SA430 always in command mode waiting for the 'connect' procedure outlined in the above UART capture. This will allow the host, Hercules in your case, to connect to the SA430 and begin capturing data and configuring spectrum values such as start frequency and stop frequency.
Without first doing the 'connect' sequence, the SA430 will not respond with RF values even if a command is sent to request RF values be provided to the host.
Command List
I would recommend finding a UART monitoring program similar to the one rperezti mentioned above in order to 'sniff' the connection between the SA430 and the SA430 GUI to generate a command list table. The full list of commands, and more importantly how to interpret their payloads, is not available in the format provided above.
CRC
You can use the following two functions for calculating the CRC (HDR_PREFIX = 0x2AU).
static uint16_t calcCrc16(void *data, uint8_t dataLength) { uint8_t crcIndex; uint16_t crc = HDR_PREFIX; uint8_t *bytes = data; for (crcIndex = 1U; crcIndex < dataLength; crcIndex++) { crc16AddByte(&crc, bytes[crcIndex]); } return crc; } static void crc16AddByte(uint16_t *addb, uint8_t u8) { *addb = (*addb>>8U)|(*addb<<8U); *addb ^= u8; *addb ^= (*addb & 0xff)>>4U; *addb ^= (*addb<<8U)<<4U; *addb ^= ((*addb & 0xff) << 4U)<<1U; }
Best Regards
Good morning Mark,
Thank you for the reply.
I got the files you mentioned in your reply. I tried piece back a ' demo project' by adding correspondent files but I was stopped in my track as the software use graphical API which cost round $230 per month for licence.
I think the easy and quick way if someone can tell me the commands and their descriptions.
"values for CMD_CONNECT and CMD_DISCONNECT were incorrect" : do you know the correct value?
Hi rab,
Commands
All command values are outlined in the sa430Cmd.h file as mentioned in my post. enum SA30Cmd contains the commands and their associated values.
To clarify my comment regarding CMD_CONNECT and CMD_DISCONNECT, these are not actual commands (as you can see in enum SA30Cmd) and should be disregarded.
Even if you choose not to rebuild/develop with the original GUI software and the library/API it is based upon, and I encourage you to read their FAQ for options, you can still recreate the overall folder structure and code navigation with a multitude of free text editor programs, such as Notepad++. These programs will allow you to navigate the original GUI source code and see what is being sent/received by the GUI.
Example - GUI Connects to SA430
This is just an example of the process I recommend taking to figure out how to interface a host application (Hercules) with the SA430 hardware. I did the above by reading the files listed in my previous post and following the series of calls with Notepad++ and the TagsJump plugin.
This will certainly be a fair bit of effort, but I can think of no other references or resources currently available which we have that could help expedite the process.
Sweep Time
Sweep time will be determined by the span and FSW settings, in this case 100MHz and 50kHz, with the number of samples taken equal to (span/FSW) + 1.
I would recommend trying out your desired frequency ranges and FSWs and seeing the sweep time for each, as an empirical result will seem to be much more helpful than a theoretical one in this case (writing a host application) due to the delays introduced from sending data over UART etc. versus the theoretical best-case RSSI-to-RSSI reading time.
I unfortunately do not currently have an SA430 on hand to perform this testing.
Best Regards
Hi rab,
Back to the source code we go!
Nearly all of the commands sent/received are (pre-)processed by drvSA430.cpp. Likewise, nearly all command data is processed for display to the user in mainwindow.cpp.
Core Version
For example, the CoreVersion is retrieved by drvSA430::cmdGetCoreVersion in drvSA430.cpp, but no processing appears to happen there (just reading out a U16 value) so we check mainwindow.cpp for how it gets displayed.
Searching for CoreVersion puts us inside MainWindow::guiDisplayHwDevInfo where CoreVersion gets put into the strHwDevInfoList with a QString() call with two arguments separated by a '.' - (CoreVersion >> 8) and (CoreVersion &0xff). Checking your payload example, I see CoreVersion is 0x020A which will end up as 2.10 when converted!
Start/Stop Frequency
Similar analysis can be performed for Start/End frequency commands with drvSA430::cmdSetFrq as a starting point. FrqData holds all of the values which actually get sent to the SA430 hardware so make sure to check out the various _calcFrq* helpers.
Best Regards,
Mark-
Hi Rab,
According to the LICENSE.txt file within the SA430 installation folder, the SA430 was developed with Qt 4.7.4.
Qt also offers quite a few resources for migrating between versions which a quick search should reveal.
Best Regards,
Mark-
Hi Mark,
Thank you for the quick reply.
There is a Qt version for Visual Studio and another one for Mingw.
Do you know which one has been used?
HI Mark,
Thank you for the info.
I can open the project in QtCreator 2.5.0. However when I compile it, there were errors. I think, because it is so old (2011), it uses header (*.h) files that are not supported such
#include "QtGui/qprinter.h"
#include "QtGui/qprintengine.h"
#include "QtGui/qpaintengine.h"
#include "QtCore/qt_windows.h"
#include "private/qpaintengine_alpha_p.h"
which, I believe that, are not supported or not built in QtCreator 2.5.0. I started searching for the files then copy and past but it seemed it was an endless task so I stopped.
I was thinking if I use the same QtCreator version that was use to create the project then these error may disappear.
Do you have an idea which version was used?
Many thanks