-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Welcome to the Monarch_Firmware wiki!
There are some common parameters and rules applied to both the sending part and receiving part, a.k.a, the communication specification.
915 MHZ
This code makes use of Forwarding Error Correction (FEC) to improve the decoding result. Specifically, the team makes use of Hamming code to design the encoded data. The generated data packet format is the same as the one in wikipedia. For example, given a data packet [1011], the encoded data should be [0110011].
We encoded each original bit of data into a pseudo-random number (PRN) consisting of 512 bits (64 B). Normally there are three PRNs, corresponding to bit 0, bit 1, and preamble bit, respectively. The detail about how to generate PRNs is elaborated in the receiving part.
The CC1310 microcontroller has an RF core module in its architecture. The programmer could make use of the corresponding API exposed by the RF core. The major one used in the project is "runCmd". Each time the library wants to send some data, it needs to pass a command structure into this interface and call the corresponding function. According to the encoding algorithm, each original raw bit would be expanded into 512 bits (a pseudo-random number, a.k.a, PRN), including the redundant bits generated by the FEC algorithm. After that, the team uses the data pointer in the command structure to point to the generated PRNs and then passes the command structure to the interface of the RF core. The RF core will send out the encoded data pointed by the passed command.
Furthermore, to improve the data transmission rate, the team uses the chained command approach. Therefore, the command we pass into the interface is actually the beginning address of an array, which contains several chained commands. In this way, the microcontroller could transmit the data continuously.