Skip to content
james edited this page May 20, 2022 · 11 revisions

Welcome to the Monarch_Firmware wiki!

Communication Specification

There are some common parameters and rules applied to both the sending part and receiving part, a.k.a, the communication specification.

Communication Frequency

915 MHZ

FEC

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].

Design

Encoding

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.

Sending strategy

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.

Clone this wiki locally