diff --git a/.github/workflows/static-analysis.yml b/.github/workflows/static-analysis.yml index 4605601e..4422c4f6 100644 --- a/.github/workflows/static-analysis.yml +++ b/.github/workflows/static-analysis.yml @@ -81,7 +81,9 @@ jobs: run: cppcheck --std=c99 --error-exitcode=-1 --inline-suppr --addon=misra.py firmware/system/ --suppress=misra-c2012-19.2 - name: Execute CppCheck on libraries files - run: cppcheck --std=c99 --error-exitcode=-1 --inline-suppr --addon=misra.py firmware/libs/ + run: | + cppcheck --std=c99 --error-exitcode=-1 --addon=misra.py -I$PWD/firmware/app/libs/ngham-1.0/rsclib/include/ $PWD/firmware/app/libs/ngham-1.0/rsclib/src/* + cppcheck --std=c99 --error-exitcode=-1 --addon=misra.py --inline-suppr -I$PWD/firmware/app/libs/ngham-1.0/include/ngham/ -I$PWD/firmware/app/libs/ngham-1.0/include/ $PWD/firmware/app/libs/ngham-1.0/src/* --suppress=misra-c2012-8.4 - name: Execute CppCheck on main files run: cppcheck --std=c99 --error-exitcode=-1 --addon=misra.py firmware/main.c firmware/version.h diff --git a/.github/workflows/unit-test-ngham.yml b/.github/workflows/unit-test-ngham.yml index 5d54b390..fc4e77f8 100755 --- a/.github/workflows/unit-test-ngham.yml +++ b/.github/workflows/unit-test-ngham.yml @@ -1,32 +1,33 @@ # -# unit-test-ngham.yml +# test.yml # -# Copyright The TTC 2.0 Contributors. +# Copyright The RSCLib Contributors. # -# This file is part of TTC 2.0. +# This file is part of RSCLib. # -# TTC 2.0 is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by +# RSCLib is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # -# TTC 2.0 is distributed in the hope that it will be useful, +# RSCLib is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with TTC 2.0. If not, see . +# You should have received a copy of the GNU Lesser General Public License +# along with RSCLib. If not, see . # # -name: NGHam unit tests +name: NGHam Unit test on: push: - branches: [dev_firmware] + branches: [ dev_firmware ] pull_request: - branches: [master, dev, dev_firmware] + branches: [ master, dev, dev_firmware] + # 'workflow_dispatch' allows manual execution of this workflow under the repository's 'Actions' tab workflow_dispatch: @@ -34,7 +35,7 @@ on: jobs: unit-tests: - name: NGHam unit tests + name: Unit tests runs-on: ubuntu-latest strategy: @@ -42,22 +43,21 @@ jobs: steps: - uses: actions/checkout@v3 + with: + submodules: true + - name: Install dependencies run: | sudo apt install -y cmake libcmocka0 libcmocka-dev - git clone https://github.com/mgm8/rsclib.git - cd rsclib - mkdir build - cd build - cmake .. - make - sudo make install + mkdir firmware/app/libs/ngham-1.0/tests/build_tests + cd firmware/app/libs/ngham-1.0/tests/build_tests + cmake ../ - name: Compile the test run: | - cd firmware/app/libs/ngham-0.1/tests - make + cd firmware/app/libs/ngham-1.0/tests/build_tests + cmake --build . - name: Execute the test - run: ./firmware/app/libs/ngham-0.1/tests/ngham_unit_test + run: ./firmware/app/libs/ngham-1.0/tests/build_tests/ngham_test diff --git a/.github/workflows/unit-test-rsclib.yml b/.github/workflows/unit-test-rsclib.yml index 6d844c2f..934eb624 100644 --- a/.github/workflows/unit-test-rsclib.yml +++ b/.github/workflows/unit-test-rsclib.yml @@ -1,32 +1,33 @@ # -# unit-test-rsclib.yml +# test.yml # -# Copyright The TTC 2.0 Contributors. +# Copyright The RSCLib Contributors. # -# This file is part of TTC 2.0. +# This file is part of RSCLib. # -# TTC 2.0 is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by +# RSCLib is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # -# TTC 2.0 is distributed in the hope that it will be useful, +# RSCLib is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with TTC 2.0. If not, see . +# You should have received a copy of the GNU Lesser General Public License +# along with RSCLib. If not, see . # # -name: RSCLib unit tests +name: RSCLib Unit tests on: push: - branches: [dev_firmware] + branches: [ dev_firmware ] pull_request: - branches: [master, dev, dev_firmware] + branches: [ master, dev, dev_firmware] + # 'workflow_dispatch' allows manual execution of this workflow under the repository's 'Actions' tab workflow_dispatch: @@ -34,7 +35,7 @@ on: jobs: unit-tests: - name: RSCLib unit tests + name: Unit tests runs-on: ubuntu-latest strategy: @@ -48,9 +49,9 @@ jobs: - name: Compile the test run: | - cd firmware/app/libs/rsclib-0.1/tests + cd firmware/app/libs/ngham-1.0/rsclib/tests cmake . make - name: Execute the test - run: ./firmware/app/libs/rsclib-0.1/tests/rsc_test + run: ./firmware/app/libs/ngham-1.0/rsclib/tests/rsc_test \ No newline at end of file diff --git a/doc/user_manual/Makefile b/doc/user_manual/Makefile index 0060b325..1f7a025e 100644 --- a/doc/user_manual/Makefile +++ b/doc/user_manual/Makefile @@ -1,5 +1,5 @@ SRC=main -VERSION=v0.5 +VERSION=v1.0 TARGET=slb-ttc2-doc-$(VERSION) ifndef BUILD_DIR diff --git a/doc/user_manual/chapters/assembly.tex b/doc/user_manual/chapters/assembly.tex new file mode 100644 index 00000000..f9b927e3 --- /dev/null +++ b/doc/user_manual/chapters/assembly.tex @@ -0,0 +1,344 @@ +% +% assembly.tex +% +% Copyright The TTC 2.0 Contributors. +% +% TTC 2.0 Documentation +% +% This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 +% International License. To view a copy of this license, +% visit http://creativecommons.org/licenses/by-sa/4.0/. +% + +% +% \brief Assembly instructions chapter. +% +% \author Gabriel Mariano Marcelino +% +% \version 1.0.0 +% +% \date 2021/01/16 +% + +\chapter{Assembly instructions} \label{ch:assembly} + +This chapter will describe how to customize the radio configuration, power-on the board, import and flash the source code and finally alternatives to encode/decode to be transmitted/received packages from the TTC 2.0 module. + +\section{Radio configuration} \label{sec:wds} + +This section is a tutorial designed to generate a source code file with basic configuration parameters for the radio module. To achieve this, the WDS software from Silicon Labs (version 3.2.11.0), which is only available on Windows, will be used. + +\subsection{Steps} + +After the installation of the software, the procedures to configure the beacon radio are described bellow. + +\subsubsection{Step 1} + +\begin{enumerate} + \item Open the WDS software. + \item The following box will appear in the center of the window. + \item Click in "Simulate radio" and go to the next step. +\end{enumerate} + +\begin{figure}[!h] + \begin{center} + \includegraphics[width=0.5\textwidth]{figures/wds-tutorial/wds-tutorial-1.png} + \caption{Step 1 of the radio configuration.} + \label{fig:wds-tutorial-step-1} + \end{center} +\end{figure} + +\subsubsection{Step 2} + +\begin{enumerate} + \item In the list of radios that appeared on the new window, select the chip type ``Si4463''. + \item In the revision column, select ``B1''. + \item Click on ``Select Radio" to go to the next step. +\end{enumerate} + +\begin{figure}[!h] + \begin{center} + \includegraphics[width=0.75\textwidth]{figures/wds-tutorial/wds-tutorial-2.png} + \caption{Step 2 of the radio configuration.} + \label{fig:wds-tutorial-step-2} + \end{center} +\end{figure} + +\subsubsection{Step 3} + +\begin{enumerate} + \item Select ``Radio Configuration Application''. + \item Click on ``Select Application'' to go to the next step. +\end{enumerate} + +\begin{figure}[!h] + \begin{center} + \includegraphics[width=0.75\textwidth]{figures/wds-tutorial/wds-tutorial-3.png} + \caption{Step 3 of the radio configuration.} + \label{fig:wds-tutorial-step-3} + \end{center} +\end{figure} + +\subsubsection{Step 4} + +\begin{enumerate} + \item In the ``Frequency and power'' tab, change the base frequency to 145.9 MHz. + \item Change the channel spacing to 0 kHz. + \item Change the crystal tolerance to 10.0 ppm (Both RX and TX). + \item Go to the next step. +\end{enumerate} + +\begin{figure}[!h] + \begin{center} + \includegraphics[width=0.75\textwidth]{figures/wds-tutorial/wds-tutorial-4.png} + \caption{Step 4 of the radio configuration.} + \label{fig:wds-tutorial-step-4} + \end{center} +\end{figure} + +\subsubsection{Step 5} + +\begin{enumerate} + \item In the ``RF parameters" tab, change the modulation type to ``2GFSK''. + \item Change the the data rate to 1.2 kbps. + \item Change the deviation to 2.5 kHz. + \item Go to the next step. +\end{enumerate} + +\begin{figure}[!h] + \begin{center} + \includegraphics[width=0.75\textwidth]{figures/wds-tutorial/wds-tutorial-5.png} + \caption{Step 5 of the radio configuration.} + \label{fig:wds-tutorial-step-5} + \end{center} +\end{figure} + +\subsubsection{Step 6} + +\begin{enumerate} + \item In the ``Packet'' tab, many subtabs will appear. In ``Preamble" change the ``Preamble TX length'' to 4 bytes. + \item Again, in ``Preamble'', change the ``Preamble pattern'' to ``Std. 1010 pattern (>= 32 and < 40 bits)''. + \item Go to the next step. +\end{enumerate} + +\begin{figure}[!h] + \begin{center} + \includegraphics[width=0.75\textwidth]{figures/wds-tutorial/wds-tutorial-6.png} + \caption{Step 6 of the radio configuration.} + \label{fig:wds-tutorial-step-6} + \end{center} +\end{figure} + +\subsubsection{Step 7} + +\begin{enumerate} + \item In the ``Sync Word'' tab, change the sync word length field to ``4 bytes''. + \item In the ``Sync Word (on air int.)'', enter the following sequence: 5D E6 2A 7E. This sequence is the sync word used by the NGHam protocol. + \item Go to the next step. +\end{enumerate} + +\begin{figure}[!h] + \begin{center} + \includegraphics[width=0.75\textwidth]{figures/wds-tutorial/wds-tutorial-7.png} + \caption{Step 7 of the radio configuration.} + \label{fig:wds-tutorial-step-7} + \end{center} +\end{figure} + +\subsubsection{Step 8} + +\begin{enumerate} + \item In the ``Field 1'' tab, change the ``Field length'' to 50 bytes. + \item Go to the next step. +\end{enumerate} + +\begin{figure}[!h] + \begin{center} + \includegraphics[width=0.75\textwidth]{figures/wds-tutorial/wds-tutorial-8.png} + \caption{Step 8 of the radio configuration.} + \label{fig:wds-tutorial-step-8} + \end{center} +\end{figure} + +\subsubsection{Step 9} + +\begin{enumerate} + \item In the ``Variable length config'' tab, there is no values to change. + \item Go to the next step. +\end{enumerate} + +\begin{figure}[!h] + \begin{center} + \includegraphics[width=0.75\textwidth]{figures/wds-tutorial/wds-tutorial-9.png} + \caption{Step 9 of the radio configuration.} + \label{fig:wds-tutorial-step-9} + \end{center} +\end{figure} + +\subsubsection{Step 10} + +\begin{enumerate} + \item In the ``CRC config'' tab, choose ``No CRC.'' in ``CRC polynomial''. + \item Go to the next step. +\end{enumerate} + +\begin{figure}[!h] + \begin{center} + \includegraphics[width=0.75\textwidth]{figures/wds-tutorial/wds-tutorial-10.png} + \caption{Step 10 of the radio configuration.} + \label{fig:wds-tutorial-step-10} + \end{center} +\end{figure} + +\subsubsection{Step 11} + +\begin{enumerate} + \item In the ``Whitening config'' tab, there is no values to change. + \item Go to the next step. +\end{enumerate} + +\begin{figure}[!h] + \begin{center} + \includegraphics[width=0.75\textwidth]{figures/wds-tutorial/wds-tutorial-11.png} + \caption{Step 11 of the radio configuration.} + \label{fig:wds-tutorial-step-11} + \end{center} +\end{figure} + +\subsubsection{Step 12} + +\begin{enumerate} + \item In the ``Field config'' tab, there is no values to change. + \item Go to the next step. +\end{enumerate} + +\begin{figure}[!h] + \begin{center} + \includegraphics[width=0.75\textwidth]{figures/wds-tutorial/wds-tutorial-12.png} + \caption{Step 12 of the radio configuration.} + \label{fig:wds-tutorial-step-12} + \end{center} +\end{figure} + +\subsubsection{Step 13} + +\begin{enumerate} + \item In the ``Interrupts'' tab, there is no values to change. + \item Go to the next step. +\end{enumerate} + +\begin{figure}[!h] + \begin{center} + \includegraphics[width=0.75\textwidth]{figures/wds-tutorial/wds-tutorial-13.png} + \caption{Step 13 of the radio configuration.} + \label{fig:wds-tutorial-step-13} + \end{center} +\end{figure} + +\subsubsection{Step 14} + +\begin{enumerate} + \item In the ``GPIO and FRR'' tab, enable pullup in GPIO1 and choose ``TX\_FIFO\_EMPTY - This output is...'' as functionality. + \item Enable pullup in GPIO2 and choose ``RX\_STATE - This output is...'' as functionality. + \item Enable pullup in GPIO3 and choose ``TX\_STATE - This output is...'' as functionality. + \item Enable pullup in NIRQ and choose ``Active low interrupt signal'' as functionality. + \item Enable pullup in SDO and choose ``SDO - Output SPI Serial data out.'' as functionality. + \item Select ``Global status'' for the ``Fast Response Register A''. + \item Select ``Global interrupt pending'' for the ``Fast Response Register B''. + \item Select ``Packet Handler status'' for the ``Fast Response Register C''. + \item Select ``Chip status'' for the ``Fast Response Register D''. + \item Go to the next step. +\end{enumerate} + +\begin{figure}[!h] + \begin{center} + \includegraphics[width=0.75\textwidth]{figures/wds-tutorial/wds-tutorial-14.png} + \caption{Step 14 of the radio configuration.} + \label{fig:wds-tutorial-step-14} + \end{center} +\end{figure} + +\subsubsection{Step 15} + +\begin{enumerate} + \item Click in ``Generate Source'' and select the ``.h'' type of source. + \item The software will ask where to save the generated file. + \item The generated *.h file must be copied to the directory of the rf4463 driver. +\end{enumerate} + +\subsection{Final remarks} + +This tutorial has the objective of generate a basic configuration parameters of the radio, some functionalities of the radio are not covered by the WDS software, and so, must be configured/controlled in the device driver. + +\section{Powering the module} + +The TTC 2.0 has three power supply inputs: one 3V3 supply to power the MCU and all the external components, two 5 V inputs to power the transceivers. + +The 3V3 input voltage rail is accessible at the PC-104 H2-27 and H2-28 pins. You can also supply the 3V3 rail with MSP-FET JTAG connector by connecting the jumper CN9. This last option should only be used for debug as it requires the MSP-430 FET to be connected. + +The transceiver supply rails are only accessible on the PC-104: H1-49 and H1-50 for radio 0 and H1-51 and H1-52 for radio 1. + +The TTC 2.0 module has only one common ground and it can be accessed by multiple pins on the PC-104 (see \autoref {tab:pc104-signals}) + +It is recommended, for safety reasons, to use different supply channels for each supply rail. Also, for extra safety it is recommended to add current cut-off limits: use 30 mA for the 3V3 and 500 mA for the radio 5 V power rails. + +\section{Compiling, building and flashing the source code} + +This tutorial is a reference to compile, build and flash the firmware of the TTC 2.0 module using the Texas Instruments IDE: Code Composer Studio (CCS) version 12. + +%All the software development was made using the Code Composer Studio (CCS) IDE, version 12. To load the code into the TTC 2.0 MCU, the MSP-FET can be used. + +\subsection{Importing the source code in the CCS IDE} + +The TTC 2.0 releases are available to download at the TTC 2.0 Github releases page \cite{ttc2-releases}. The CCS IDE is available at the Texas Instruments website \cite{ccs-studio}. + +The steps bellow describe how to import the source code in the CCS IDE: + +\begin{enumerate} + \item Extract the ttc2-x.x.zip file. + \item Open the CCS IDE. + \item Go to ``Project'' -> ``Import CCS Projects...''. + \item The window from the figure \ref{fig:compiling-tutorial} will appear on the screen. + \item On ``Select search-directory:'' select ``\textit{project\_path/ttc2-x.x/firmware}''. + \item Click on ``Finish''. + + \item After importing the project, select the project on the ``Project Explorer'' and open the ``Properties'' tab (you can use the shortcut \textit{Alt+Enter} or right-click on the project's name). + \item The window from the \autoref{fig:project_properties} will appear on the screen. + \item On ``Variant'', select the MCU partnumber (MSP430F6659 or MSP430F5659). + \item On ``Compiler Version'', select ``TI v21.6.1.LTS'' or higher. + \item Click on ``Apply and Close''. +\end{enumerate} + +\begin{figure}[!h] + \begin{center} + \includegraphics[width=0.75\textwidth]{figures/ccs_project.png} + \caption{New CCS project window.} + \label{fig:compiling-tutorial} + \end{center} +\end{figure} + +\begin{figure}[!h] + \begin{center} + \includegraphics[width=0.75\textwidth]{figures/ccs_properties.png} + \caption{CCS project's properties window.} + \label{fig:project_properties} + \end{center} +\end{figure} + +\subsection{Customize the project} + +Since the TTC 2.0 has two MCU modules it is needed to specific which one you want to target. Access the configuration header file on the ``Project Explorer" at ``\textit{config/config.h}'', change the ``RADIO\_MODULE'' macro between '0' or '1' (The module '1' is the one closest to the PC-104). + +Each MCU module controls a corresponding transceiver, to customize the transceiver configuration (as shown on \autoref{sec:wds}) copy all the code on the header file generated by the WDS software and paste it at the ``config/radio\_x\_config.h''. + +\subsection{Compiling and building} + +To compile and build the firmware, click on ``Project'' -> ``Build Project''. + +\subsection{Flashing} + +With the board turned on and the MSP-FET connected, click on ``Run'' -> ``Load''. If no errors occur, the firmware was loaded successfully to the board. + +\section{Receiving and sending telecommands} + +The structure of the telecommands are described at \autoref{ch:operation}. The standard solution to implement a ground-station is using the SpaceLab transmitter and decoder solutions \cite{sl-transmitter} \cite{sl-decoder} combined with and RTL-SDR. diff --git a/doc/user_manual/chapters/firmware.tex b/doc/user_manual/chapters/firmware.tex index f8b47646..3e966bd1 100644 --- a/doc/user_manual/chapters/firmware.tex +++ b/doc/user_manual/chapters/firmware.tex @@ -15,7 +15,7 @@ % % \author Gabriel Mariano Marcelino % -% \version 0.3.0 +% \version 1.0.0 % % \date 2021/05/12 % @@ -39,54 +39,53 @@ \section{Product tree} \section{Commands} \label{sec:commands} -To externally control and access the TTC module, some commands are available through the serial interfaces of the board. The commands are almost identical for both microcontrollers (except the command answering behavior) and are available on all interfaces. A list with the commands is available in \autoref{tab:commands}. The format of the commands' answers can be seen in \autoref{tab:commands-ans}. +To externally control and access the TTC module, some commands are available through the serial interfaces of the board. The commands are almost identical for both microcontrollers (except the command answering behavior) and are available on all interfaces. A list with the commands is available in \autoref{tab:commands}. The format of the commands answers can be seen in \autoref{tab:commands-ans}. \begin{table}[!ht] \centering + \scriptsize \begin{tabular}{clll} \toprule[1.5pt] \textbf{ID} & \textbf{Name} & \textbf{Content} & \textbf{Interface}\\ \midrule 0 & NOP & None & SPI \\ - 1 & Read parameter & Parameter ID (1B) + Value (4B) + Checksum (2B) & SPI \\ - 2 & Write parameter & Parameter ID (1B) + Value (4B) + Checksum (2B) & SPI \\ - 3 & Transmit packet & Packet data (1-220B) + Checksum (2B) & SPI/UART \\ - 4 & Receive packet & Packet data (1-220B) + Checksum (2B) & SPI \\ + 1 & Read parameter & Command ID (1B) + Parameter ID (1B) & SPI \\ + 2 & Write parameter & Command ID (1B) + Parameter ID (1B) + Value (4B) & SPI \\ + 3 & Transmit packet & Command ID (1B) + Packet length (1B) + Packet (1-220B) & SPI/UART \\ + 4 & Receive packet & Command ID (1B) & SPI \\ \bottomrule[1.5pt] \end{tabular} - \caption{List of commands.} + \caption{List of command's requests.} \label{tab:commands} \end{table} \begin{table}[!ht] \centering + \scriptsize \begin{tabular}{cll} \toprule[1.5pt] \textbf{ID} & \textbf{Name} & \textbf{Content}\\ \midrule - 1 & Read parameter & Parameter ID (1B) + Value (4B) + Checksum (2B) \\ + 1 & Read parameter & Command ID (1B) + Parameter ID (1B) + Value (4B) \\ 2 & Write parameter & None \\ 3 & Transmit packet & None \\ - 4 & Receive packet & Packet data (1-220B) + Checksum (2B) \\ + 4 & Receive packet & Command ID (1B) + Packet(1-220B) \\ \bottomrule[1.5pt] \end{tabular} \caption{Format of the command's answers.} \label{tab:commands-ans} \end{table} -All commands are composed of an ID field (1 byte), the content of the command, and a checksum at the end of the command (2 bytes). The used checksum algorithm is the CRC16-CCITT\nomenclature{\textbf{CRC}}{\textit{Cyclic Redundancy Check.}} \nomenclature{\textbf{CCITT}}{\textit{Comité Consultatif International Téléphonique et Télégraphique.}} (initial value = 0x0000, polynomial = 0x1021). The CRC value is calculated with the entire packet (ID field + command content). - -A description of each command is available below: +A description of each command is available below and the details about the protocol communication are available at \autoref{sec:server_param}. \begin{itemize} - \item NOP (No Operation, ID = 1): This command does nothing on the TTC; it is used for reading operations on the SPI interface when an answer to a telecommand is required. - \item Read parameter/variable (ID = 1): This command is used to read a parameter or variable of the TTC module. It is composed of the command ID (1 byte), the parameter ID (1 byte), and the checksum value (2 bytes). After receiving the command, the answer with the parameter's value can be read with the NOP command (using the SPI interface, with the UART interface, the answer is immediately transmitted). The answer is composed of the command ID (1 byte), the parameter ID (1 byte), the parameter or variable value (4 bytes), and the checksum value (2 bytes). - \item Write parameter/variable (ID = 2): This command is used to write a value to a given parameter or variable when allowed. It is composed of the command ID (1 byte), the parameter ID (1 byte), the new value of the parameter (4 bytes), and the checksum value (2 bytes). This command has no answer. - \item Transmit packet (ID = 3): This command is used to transmit a packet through the radio link of each microcontroller. It is composed of the command ID (1 byte), the payload of the packet (1 to 220 bytes), and the checksum value (2 bytes). After receiving it, the TTC immediately transmits a new NGHam packet if the transmissions are enabled. This command has no answer. - \item Receive packet (ID = 4): This command is used to read a received packet through the radio link (stored in the internal FIFO of the microcontrollers of the TTC). It comprises just the command ID (1 byte) and the checksum value (2 bytes). After receiving it, the TTC immediately allows access to the first available packet. The answer to this command, composed of the command ID (1 byte), the packet content (1 to 220 bytes), and the checksum value (2 bytes) can be read using the NOP command. + \item Read parameter/variable (ID = 1): This command is used to read a parameter or variable of the TTC module (see \autoref{tab:ttc2-variables}). + \item Write parameter/variable (ID = 2): This command is used to write a value to a given parameter or variable when allowed (see \autoref{tab:ttc2-variables}). + \item Transmit packet (ID = 3): This command is used to transmit a packet through the radio link of each microcontroller. + \item Receive packet (ID = 4): This command is used to read a received packet through the radio link (stored in the internal FIFO of the microcontrollers of the TTC). \end{itemize} -\section{Variables and Parameters} \label{sec:variables} +\section{Variables and Parameters}\label{sec:variables} A list of all the variables of TTC with their identification number (ID) and variable type that can be read from the sensors and peripherals can be seen in \autoref{tab:ttc2-variables}. @@ -96,7 +95,7 @@ \section{Variables and Parameters} \label{sec:variables} \midrule 0 & Device ID (0xCC2A or 0xCC2B) & uint16 & R \\ 1 & Hardware version & uint8 & R \\ - 2 & Firmware version (ex.: ``v1.2.3''' = 0x00010203) & uint32 & R \\ + 2 & Firmware version (ex.: ``v1.2.3'' = 0x00010203) & uint32 & R \\ 3 & Time counter in milliseconds & uint32 & R \\ 4 & Reset counter & uint16 & R \\ \multirow{18}{*}{5} & Last reset cause: & \multirow{18}{*}{uint8} & \multirow{18}{*}{R} \\ @@ -151,6 +150,7 @@ \section{Variables and Parameters} \label{sec:variables} 21 & TX packets available in the FIFO buffer & uint8 & R \\ 22 & RX packets available in the FIFO buffer & uint8 & R \\ 23 & Number of bytes of the first available packet in the RX buffer & uint16 & R \\ + 24 & Reset TTC 2.0 Module (1=starts reset sequence) & uint8 & W \\ \bottomrule[1.5pt] \caption{Variables and parameters of the TTC 2.0.} \label{tab:ttc2-variables} @@ -160,9 +160,9 @@ \section{Variables and Parameters} \label{sec:variables} \section{Layers} -The firmware flow of development goes from the low-level implementation (far right), with HA layer being register-level operation, to Tasks Layer with very abstract and high-level code. +The firmware flow of development goes from the low-level implementation (far right), with HAL being register-level operation, to Tasks Layer with very abstract and high-level code. -\subsection{Hardware Abstraction Layer (HAL)} +\subsection{Hardware Abstraction Layer} The HAL layer is the API DriverLib developed by Texas Instruments; it includes register manipulating functions to accelerate development. The TTC 2.0 uses HAL to handle GPIO operations and serial communications such as SPI, UART, and I$^2$C. @@ -185,7 +185,7 @@ \subsection{System} \begin{figure}[!ht] \begin{center} \includegraphics[width=0.65\textwidth]{figures/ttc2-terminal-log.png} - \caption{Example of log feedback received from TTC 2.0 during debug.} + \caption{Example of log feedback received from TTC 2.0} \label{fig:log_info} \end{center} \end{figure} @@ -199,39 +199,42 @@ \subsection{Tasks} \begin{tabular}{lccccc} \toprule[1.5pt] - \textbf{Name} & \textbf{Priority} & \textbf{Initial delay [ms]} & \textbf{Period [ms]} & \textbf{Stack [bytes]} \\ + \textbf{Name} & \textbf{Priority\footnote{The priority follows a quantitative pattern, the higher the most important}} & \textbf{Initial delay [ms]} & \textbf{Period [ms]} & \textbf{Stack [bytes]} \\ \midrule - Automatic Beacon & High & 60000 & 60000 & 300 \\ - Command Processing & Highest & 0 & 100 & 500 \\ - Heartbeat & Lowest & 0 & 500 & 160 \\ - Housekeeping & Medium & 2000 & 10000 & 160 \\ - Radio Reset & High & 60000 & 60000 & 128 \\ - Startup & Medium & 0 & Aperiodic & 128 \\ - System Reset & Medium & 0 & 36000000 & 128 \\ - Time Control & Medium & 1000 & 1000 & 128 \\ - Uplink & Highest & 2000 & 500 & 500 \\ - Watchdog Reset & Lowest & 0 & 100 & 150 \\ + Antenna Deployment & 6 & 3600000 & 100 & 150 \\ + Downlink Manager & 3 & 550 & 150 & 2000 \\ + EPS Server & 3 & 10000 & 750 & 1000 \\ + Heartbeat & 1 & 2000 & 500 & 160 \\ + OBDH Server & 5 & 200 & 100 & 2000 \\ + Radio Reset & 5 & 60000 & 60000 & 128 \\ + Read Antenna & 2 & 2000 & 60000 & 150 \\ + Read Sensors & 3 & 2000 & 60000 & 128 \\ + Startup & 6 & 0 & Aperiodic & 500 \\ + System Reset & 2 & 0 & 36000000 & 128 \\ + Time Control & 3 & 1000 & 1000 & 128 \\ + Uplink Manager & 3 & 500 & 300 & 2000 \\ + Watchdog Reset & 1 & 0 & 100 & 150 \\ \bottomrule[1.5pt] \end{tabular} - \caption{List of TTC 2.0 Tasks with configuration parameters.} + \caption{List of TTC 2.0 tasks with configuration parameters.} \label{tab:firmware-tasks} \end{table} Each of the tasks presented in \autoref{tab:firmware-tasks} is described below: \begin{itemize} - \item \textbf{Automatic Beacon}: Automatically transmits a beacon packet if no transmission command is received within 60 seconds. - \item \textbf{Command Processing}: Process incoming commands (physical interfaces). + \item \textbf{Antenna Deployment}: Initialize the antenna sequence of deploy after + \item \textbf{Downlink Manager}: Monitors for radio request from other tasks and manages downlink FIFO. + \item \textbf{EPS Server}: Read only transmit requests from UART bus. \item \textbf{Heartbeat}: Blinks a status LED at a rate of 1 Hz. Both microcontrollers have a status LED. This LED indicates that the scheduler is up and running. - \item \textbf{Housekeeping}: This task manages the general operation of the TTC. + \item \textbf{OBDH Server}: Read requests and send response from the SPI bus. \item \textbf{Radio Reset}: Resets the radio at 600 seconds. + \item \textbf{Read Antenna}: Reads antenna current status and temperature. + \item \textbf{Read Sensors}: Reads the uC and radio temperature and power consumption. \item \textbf{Startup}: Initializes all the devices and peripherals, and variables of the TTC 2.0 module (boot sequence). \item \textbf{System Reset}: Resets the microcontroller by software every 10 hours. - \item \textbf{Time Control}: Manages the system time by loading the saving the time counter from/to the FRAM memory. + \item \textbf{Time Control}: Manages the system time by loading the saving the time counter from/to the internal flash memory. \item \textbf{Uplink Manager}: Monitors the radio module for upcoming packages and stores it in memory. - \item \textbf{Downlink Manager}: Monitors for radio request from other tasks and manages downlink FIFO. - \item \textbf{OBDH Server}: Read requests and send response from the SPI bus. - \item \textbf{EPS Server}: Read only transmit requests from UART bus. \item \textbf{Watchdog Reset}: Resets both watchdog timers (internal and external) at every 100 milliseconds. \end{itemize} @@ -241,4 +244,4 @@ \subsection{Libraries} \subsection{Tests} -Tests are used to verify and validate the Drivers and Devices' developed functionality. There are three types of tests: the static test uses the MISRA C: 2012 \cite{misrac2012} guidelines to check for C safety standards, the unitary tests use the Cmocka\footnote{\href{https://cmocka.org/}{https://cmocka.org/}} library with mockups of the hardware, to validate the module in an algorithmic level, and the last test verifies the integration between hardware and firmware. +Tests are used to verify and validate the Drivers and Devices' developed functionality. There are three types of tests: the static test uses the MISRA-C: 2012 \cite{misrac2012} guidelines to check for C safety standards, the unitary tests use the Cmocka\footnote{\href{https://cmocka.org/}{https://cmocka.org/}} library with mockups of the hardware, to validate the module in an algorithmic level, and the last test verifies the integration between hardware and firmware. diff --git a/doc/user_manual/chapters/hardware.tex b/doc/user_manual/chapters/hardware.tex index abae6a09..41a4839d 100644 --- a/doc/user_manual/chapters/hardware.tex +++ b/doc/user_manual/chapters/hardware.tex @@ -15,7 +15,7 @@ % % \author Gabriel Mariano Marcelino % -% \version 0.3.0 +% \version 1.0.0 % % \date 2021/04/02 % @@ -35,10 +35,10 @@ \chapter{Hardware} \label{ch:hardware} \begin{figure}[!ht] \begin{center} - \subfigure[Upper surface of the TTC 2.0 PCB.\label{fig:ttc2-pcb-top}]{\includegraphics[width=0.48\textwidth]{figures/ttc2_pcb_top}} + \subfigure[Top side.\label{fig:ttc2-pcb-top}]{\includegraphics[width=0.48\textwidth]{figures/ttc2_pcb_top}} ~ - \subfigure[Lower surface of the TTC 2.0 PCB.\label{fig:ttc2-pcb-bottom}]{\includegraphics[width=0.48\textwidth]{figures/ttc2_pcb_bottom}} - \caption{Surfaces of the 3D model of the TTC 2.0 board.} + \subfigure[Bottom side.\label{fig:ttc2-pcb-bottom}]{\includegraphics[width=0.48\textwidth]{figures/ttc2_pcb_bottom}} + \caption{Top and bottom sides of the TTC 2.0 board.} \label{fig:ttc2-3d-surface} \end{center} \end{figure} @@ -60,7 +60,7 @@ \section{Specifications} \item \textbf{Sensors}: Voltage, current and temperature \item \textbf{Modulation}: (G)FSK and/or (G)MSK \item \textbf{Baudrate}: 1200 to 9600 bps - \item \textbf{Frequency}: 145-146 MHz, 435-438 MHz, and/or 450 MHz bands + \item \textbf{Frequency}: 145-146, 400-402, 435-438, or 468-469 MHz bands \item \textbf{Protocol}: NGHam \item \textbf{Interfaces}: UART, I$^{2}$C and SPI \item \textbf{Mass}: 73 g @@ -73,7 +73,7 @@ \section{Electrical interfaces} \subsection{PC-104 bus} -The connector PC-104 is a junction of two double rows 26 pin headers (\textit{SSW-126-04-G-D} by default). These connectors create a solid 104-pin interconnection across the different satellite modules. \autoref{tab:pc104-pinout} provides the connector pinout\footnote{This pinout is simplified since additional interfaces were omitted.} for the pins that are connected to the module. A reference of the pins' position can also be seen in \autoref{fig:pc104-ref-diagram}, and a description of the signal is available in \autoref{tab:pc104-signals}. +The connector PC-104 is a junction of two double rows 26 pin headers (\textit{SSW-126-04-G-D} by default). These connectors create a solid 104-pin interconnection across the different satellite modules. \autoref{tab:pc104-pinout} provides the connector pinout\footnote{This pinout is simplified since additional interfaces were omitted.} for the pins that are connected to the module. A reference of the pin's position can also be seen in \autoref{fig:pc104-ref-diagram}, and a description of the signal is available in \autoref{tab:pc104-signals}. \begin{figure}[!ht] \begin{center} @@ -190,7 +190,7 @@ \subsection{Dedicated electrical interfaces} \midrule \multirow{10}{*}{CN5} & \multirow{10}{*}{\raisebox{-\totalheight}{\includegraphics[width=4cm]{figures/cn5}}} & \multirow{10}{*}{JTAG} & \multirow{10}{*}{PicoBlade} & \\ & & & & \\ - & & & & 3V3 \\ + & & & & 3V3\_JTAG \\ & & & & TDO\_TDI \\ & & & & TCK \\ & & & & UART\_TX \\ @@ -201,7 +201,7 @@ \subsection{Dedicated electrical interfaces} \midrule \multirow{10}{*}{CN6} & \multirow{10}{*}{\raisebox{-\totalheight}{\includegraphics[width=4cm]{figures/cn6}}} & \multirow{10}{*}{JTAG} & \multirow{10}{*}{PicoBlade} & \\ & & & & \\ - & & & & 3V3 \\ + & & & & 3V3\_JTAG \\ & & & & TDO\_TDI \\ & & & & TCK \\ & & & & UART\_TX \\ @@ -239,15 +239,15 @@ \subsection{Dedicated electrical interfaces} & & & & \\ & & & & \\ & & & & \\ + & & & & 3V3\_JTAG \\ & & & & 3V3 \\ - & & & & - \\ & & & & \\ & & & & \\ & & & & \\ & & & & \\ \midrule \multirow{14}{*}{CN3} & \multirow{14}{*}{\raisebox{-\totalheight}{\includegraphics[width=4cm]{figures/cn3}}} & \multirow{14}{*}{JTAG} & \multirow{14}{*}{Pin Header} & TDO\_TDI \\ - & & & & 3V3 \\ + & & & & 3V3\_JTAG \\ & & & & None \\ & & & & None \\ & & & & None \\ @@ -265,7 +265,7 @@ \subsection{Dedicated electrical interfaces} \pagebreak \midrule \multirow{14}{*}{CN4} & \multirow{14}{*}{\raisebox{-\totalheight}{\includegraphics[width=4cm]{figures/cn4}}} & \multirow{14}{*}{JTAG} & \multirow{14}{*}{Pin Header} & TDO\_TDI \\ - & & & & 3V3 \\ + & & & & 3V3\_JTAG \\ & & & & None \\ & & & & None \\ & & & & None \\ @@ -307,15 +307,15 @@ \subsection{Dedicated electrical interfaces} \section{Mechanical interfaces} -The TTC 2.0 board has four mounting holes to fix the module into the CubeSat mechanical structure. These mounting holes are 3,2 mm in diameter and positioned on each corner of the PCB. These holes can be seen in Figures \ref{fig:ttc2-pcb-top} and \ref{fig:ttc2-pcb-bottom}. +The TTC 2.0 board has four mounting holes to fix the module into the CubeSat mechanical structure. These mounting holes are 3.2 mm in diameter and positioned on each corner of the PCB. These holes can be seen in Figures \ref{fig:ttc2-pcb-top} and \ref{fig:ttc2-pcb-bottom}. -\section{Printed Circuit Board (PCB)} +\section{Printed Circuit Board} This section presents some detailed information about the PCB of the TTC 2.0 module. \subsection{Dimensions} -The TTC PCB dimensions follow the CubeSats industry standards defined by ISISpace and GomSpace, with a size of $89,15$ mm by $92,13$ mm \cite{nasa-handout}. The outline is specifically defined to improve the physical integration of modules and payloads into the mechanical structure. A drawing with the board dimensions is available in \autoref{fig:board-dimensions}. +The TTC PCB dimensions follow the CubeSats industry standards, with a size of $89.15$ mm by $92.13$ mm \cite{nasa-handout}. The outline is specifically defined to improve the physical integration of modules and payloads into the mechanical structure. A drawing with the board dimensions is available in \autoref{fig:board-dimensions}. \begin{figure}[!ht] \begin{center} @@ -327,7 +327,7 @@ \subsection{Dimensions} \subsection{Layout} -The TTC 2.0 module contains only two layers: top and bottom, as presented in Figures \ref{fig:ttc2-pcb-top} and \ref{fig:ttc2-pcb-bottom}. +The TTC 2.0 module contains only two layers: top and bottom, as presented in Figures \ref{fig:ttc2-pcb-top} and \ref{fig:ttc2-pcb-bottom}. To design the layout, the Altium Designer\footnote{\href{https://www.altium.com/}{https://www.altium.com/}} software was used. \begin{figure}[!ht] \begin{center} @@ -345,13 +345,11 @@ \subsection{Layout} \end{center} \end{figure} -To design the layout, the Altium Designer\footnote{\href{https://www.altium.com/}{https://www.altium.com/}} software was used. - -Simple PCBs with common manufacturing specifications were used to test and develop the module. These PCBs were defined as Engineering Models (EM\nomenclature{\textbf{EM}}{\textit{Engineering Model.}}). The Flight Model (FM\nomenclature{\textbf{FM}}{\textit{Flight Model.}}, or the boards that fly with the satellite) of the boards have the following manufacturing specifications: +Simple PCBs with common manufacturing specifications were used to test and develop the module. These PCBs were defined as Engineering Models (EM). The Flight Model (FM, or the boards that can fly with the satellite) of the boards have the following manufacturing specifications: \begin{itemize} \item \textbf{PCB specs.}: IPC 6012 Class 3 - \item \textbf{PCB thickness}: 1,6 mm + \item \textbf{PCB thickness}: 1.6 mm \item \textbf{Material}: TG170 FR-4 \item \textbf{Surface finish}: ENIG \item \textbf{Board finish}: Conformal coating application @@ -363,7 +361,7 @@ \section{Peripherals} \subsection{Power sensor} -The board has power sensors (model INA226AQDGSRQ1 from Texas Instruments) that use an I$^{2}$C interface to communicate with the microcontroller. There are four of these sensors in the module, one for each microcontroller and one for each radio module. It monitors voltage and current from a given bus through a shunt resistor (with a resistance of $0,1$ $\Omega$). The final measurement is continuous and made by an average of 128 measurements with an interval of 588 $\mu$s between each other. +The board has power sensors (model INA226AQDGSRQ1 from Texas Instruments) that use an I$^{2}$C interface to communicate with the microcontroller. There are four of these sensors in the module, one for each microcontroller and one for each radio module. It monitors voltage and current from a given bus through a shunt resistor (with a resistance of $0.1$ $\Omega$). The final measurement is continuous and made by an average of 128 measurements with an interval of 588 $\mu$s between each other. \subsection{External watchdog timer} @@ -371,7 +369,7 @@ \subsection{External watchdog timer} \subsection{Radio module} -One of the main components of the board is the radio module (NiceRF RF4463F30), which uses an SPI interface to be controlled by the microcontroller. The radio has a dedicated power source of 5V directly from the PC-104 bus. The output power of the RF signal generated by the radio is 30 dBm (1 W). The radio is half-duplex and has an integrated power amplifier and an RF switch, as shown in \autoref{fig:rf4463f30-block-diagram}. +One of the main components of the board is the radio module (NiceRF RF4463F30), which uses an SPI interface to be controlled by the microcontroller. The radio has a dedicated power source of 5 V directly from the PC-104 bus. The output power of the RF signal generated by the radio is 30 dBm (1 W). The radio is half-duplex and has an integrated power amplifier and an RF switch, as shown in \autoref{fig:rf4463f30-block-diagram}. \begin{figure}[!ht] \begin{center} @@ -379,4 +377,4 @@ \subsection{Radio module} \caption{Block diagram of the RF4463F30 module.} \label{fig:rf4463f30-block-diagram} \end{center} -\end{figure} \ No newline at end of file +\end{figure} diff --git a/doc/user_manual/chapters/introduction.tex b/doc/user_manual/chapters/introduction.tex index c9a63d01..d028f1e4 100644 --- a/doc/user_manual/chapters/introduction.tex +++ b/doc/user_manual/chapters/introduction.tex @@ -15,7 +15,7 @@ % % \author Gabriel Mariano Marcelino % -% \version 0.3.0 +% \version 1.0.0 % % \date 2021/04/01 % @@ -23,14 +23,14 @@ \chapter{Introduction} \label{ch:introduction} -The TTC 2.0\nomenclature{\textbf{TTC}}{\textit{Telemetry, Tracking and Command.}} is a Telemetry, Tracking and Command module designed for nanosatellites. It is one of the service modules developed for the GOLDS-UFSC CubeSat Mission \cite{floripasat2}. +The TTC 2.0 is a Telemetry, Tracking and Command module designed for nanosatellites. It is one of the service modules developed for the GOLDS-UFSC CubeSat Mission \cite{floripasat2}, and part of the FloripaSat-2 platform \cite{marcelino2023}. The module is a direct upgrade from the TTC of FloripaSat-1 \cite{ttc-fsat}, which grants a flight heritage rating. The improvements focus on providing a cleaner and more generic implementation than the previous version, more reliability in software and hardware implementations, and adaptations for the new mission requirements. All the project, source, and documentation files are available freely on a GitHub repository \cite{ttc2-repo} under the GPLv3 (firmware) and CERN OHLv2 (hardware) licenses. \begin{figure}[!h] \begin{center} \includegraphics[width=0.65\textwidth]{figures/ttc2_pcb_3d.png} - \caption{3D view of the TTC 2.0 PCB\nomenclature{\textbf{PCB}}{\textit{Printed Circuit Board.}}.} + \caption{3D view of the TTC 2.0 PCB.} \label{fig:pcb-3d} \end{center} \end{figure} @@ -45,4 +45,5 @@ \section{Product tree} \caption{Product tree of the TTC 2.0 module.} \label{fig:product-tree} \end{center} -\end{figure} \ No newline at end of file +\end{figure} + diff --git a/doc/user_manual/chapters/operation.tex b/doc/user_manual/chapters/operation.tex index 89ad56f3..2bddf911 100644 --- a/doc/user_manual/chapters/operation.tex +++ b/doc/user_manual/chapters/operation.tex @@ -15,7 +15,7 @@ % % \author Gabriel Mariano Marcelino % -% \version 0.3.0 +% \version 1.0.0 % % \date 2022/10/09 % @@ -27,7 +27,7 @@ \chapter{Operation} \label{ch:operation} \section{Packet transmission} -To transmit a packet, the command ``Transmit Packet'' must be used (\autoref{sec:commands}). When the TTC receives this command through one of its command interfaces, a new NGHam packet is generated with the command content as the packet's payload. After the NGHam packet is generated, it is transmitted immediately through the air using the respective TTC's radio. + To transmit a packet, the command ``Transmit Packet'' must be used (\autoref{sec:commands}). When the TTC receives this command through one of its command interfaces, a new NGHam packet is generated with the command content as the packet's payload. After the NGHam packet is generated, it is transmitted immediately through the air using the respective TTC's radio. \section{Telecommand reception} @@ -35,7 +35,7 @@ \section{Telecommand reception} A telecommand is only stored if it is a valid NGHam packet, and only the payload of the NGHam packet is stored. Each telecommand can be up to 220 bytes long, according to the NGHam protocol definitions. -The received and stored telecommand can be read with the command read packet, as described in \autoref{sec:commands}. After a telecommand is read, it is deleted from the internal queue of the TTC module. The number of available telecommands and the length in bytes of the first queue position can be read using the command ``Read Parameter'', as also described in \autoref{sec:commands} and \ref{sec:variables}. +The received and stored telecommand can be read with the command read packet, as described in \autoref{sec:commands}. After a telecommand is read, it is deleted from the internal queue of the TTC module. The number of available telecommands and the length in bytes of the first queue position can be read using the command ``Read Parameter'', as also described in Sections \ref{sec:commands} and \ref{sec:variables}. \section{Communication protocol} @@ -131,9 +131,7 @@ \subsubsection{Reed-Solomon block} \item \textbf{Final XOR value}: 0xFFFF \end{itemize} -The CRC16 value is computed from the header and the payload fields. - -If the CRC16 value is correct, the Reed-Solomon chain is skipped, and the packet is directly considered valid. This way, the checksum field also allows a performance improvement. +The CRC16 value is computed from the header and the payload fields. If the CRC16 value is correct, the Reed-Solomon chain is skipped, and the packet is directly considered valid. This way, the checksum field also allows a performance improvement. \paragraph{Padding} @@ -158,7 +156,7 @@ \subsubsection{Reed-Solomon block} 7 & RS(255, 233) & 32 \\ \bottomrule[1.5pt] \end{tabular} - \caption{.} + \caption{NGHam parity sizes.} \label{tab:ngham-parity} \end{table} @@ -191,17 +189,18 @@ \section{Flow of execution} \end{center} \end{figure} -\section{Server Paramater} +\section{Server parameter}\label{sec:server_param} There are two main serial ports accessible to communicate with the TTC module a UART that is accessible only for the radio 1 and can only transmit packages. The other port is an SPI and is possible to communicate individually with each microcontroller and you can requisite all the commands and parameters (see Tables \ref{tab:commands} and \ref{tab:ttc2-variables}). The protocol communication is described below. -\subsection{EPS Server} +\subsection{EPS server} + The EPS Server is in RX mode and only the Transmit packet command (ID=3) is available. To transmit a package the first byte shall be the command (0x03) followed by the packet. The UART configuration is resumed on Table \ref{tab:eps_config}. This serial port can be accessed via the pin 5 of the PC104-H2 pin 7 is connected to TX but is not utilized, see Table \ref{tab:pc104-pinout}. \begin{table}[!ht] \centering - \begin{tabular}{clll} + \begin{tabular}{lc} \toprule[1.5pt] \textbf{Configuration Parameter} & \textbf{Value}\\ \midrule @@ -224,9 +223,10 @@ \subsection{EPS Server} \end{center} \end{figure} -\subsection{OBDH Server} -The OBDH Server can be used for full communication and all the commands are implemented for this port. The TTC operates as half-duplex with the commands having a request and a followed by response (except for command Write parameter ID=2 that only uses a request). For commands that need a response it is required to leave a interval of at least 100ms from the request to the response. Each communication part, for both sides, in all commands starts with the preamble byte (0x7E) that can be used to detect and sincronize wrong transactions. When each side is communicating the listening side needs to send 0x00 while the other side transmits. -All the request have seven bytes length including the preamble, the response for command ID=1 also has 7 bytes as fixed size, the response from commands ID=3 and ID=4 have a variable size accordingly to the request. The communication for each case is described in Figure \ref{fig:obdh-server-communication}. The TTC operates in spi mode 0 and was tested with 1 MHz clock. +\subsection{OBDH server} + +The OBDH Server can be used for full communication and all the commands are implemented for this port. The TTC operates as half-duplex with the commands having a request and a followed by response (except for command Write parameter ID=2 that only uses a request). For commands that need a response it is required to leave a interval of at least 100ms from the request to the response. Each communication part, for both sides, in all commands starts with the preamble byte (0x7E) that can be used to detect and synchronize wrong transactions. When each side is communicating the listening side needs to send 0x00 while the other side transmits. +All the request have seven bytes length including the preamble, the response for command ID=1 also has 7 bytes as fixed size, the response from commands ID=3 and ID=4 have a variable size accordingly to the request. The communication for each case is described in Figure \ref{fig:obdh-server-communication}. The TTC operates in SPI mode 0 and was tested with 1 MHz clock. \begin{figure}[!ht] \begin{center} @@ -238,14 +238,14 @@ \subsection{OBDH Server} \begin{table}[!ht] \centering - \begin{tabular}{clll} + \begin{tabular}{lc} \toprule[1.5pt] \textbf{Configuration Parameter} & \textbf{Value}\\ \midrule - Mode & 0 \\ - Clock & 200 kHz to 1 MHz \\ + Mode & 0 \\ + Clock & 200 kHz to 1 MHz \\ \bottomrule[1.5pt] \end{tabular} \caption{OBDH Server configuration parameter.} \label{tab:eps_config} -\end{table} \ No newline at end of file +\end{table} diff --git a/doc/user_manual/chapters/references.tex b/doc/user_manual/chapters/references.tex index c7843d46..c6bfb7bc 100644 --- a/doc/user_manual/chapters/references.tex +++ b/doc/user_manual/chapters/references.tex @@ -15,7 +15,7 @@ % % \author Gabriel Mariano Marcelino % -% \version 0.3.0 +% \version 1.0.0 % % \date 2021/04/01 % @@ -31,6 +31,12 @@ references/ccsds,% references/pyngham-doc,% references/misrac2012,% - references/nasa-handout} + references/nasa-handout,% + references/marcelino2023,% + references/ccs-studio,% + references/ttc2-releases,% + references/sl-transmitter,% + references/sl-decoder,% + references/references} \addcontentsline{toc}{chapter}{References} diff --git a/doc/user_manual/figures/ccs_project.png b/doc/user_manual/figures/ccs_project.png new file mode 100644 index 00000000..bb76eab4 Binary files /dev/null and b/doc/user_manual/figures/ccs_project.png differ diff --git a/doc/user_manual/figures/ccs_properties.png b/doc/user_manual/figures/ccs_properties.png new file mode 100644 index 00000000..1ab602d4 Binary files /dev/null and b/doc/user_manual/figures/ccs_properties.png differ diff --git a/doc/user_manual/figures/product-tree-fw.drawio b/doc/user_manual/figures/product-tree-fw.drawio index 9c5cd2cf..fb3cbe03 100644 --- a/doc/user_manual/figures/product-tree-fw.drawio +++ b/doc/user_manual/figures/product-tree-fw.drawio @@ -1 +1,633 @@ -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 \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/user_manual/figures/product-tree-fw.pdf b/doc/user_manual/figures/product-tree-fw.pdf index 844c3b6c..c07a2d00 100644 Binary files a/doc/user_manual/figures/product-tree-fw.pdf and b/doc/user_manual/figures/product-tree-fw.pdf differ diff --git a/doc/user_manual/figures/ttc2-terminal-log.png b/doc/user_manual/figures/ttc2-terminal-log.png index 7f7aedb8..94aea591 100644 Binary files a/doc/user_manual/figures/ttc2-terminal-log.png and b/doc/user_manual/figures/ttc2-terminal-log.png differ diff --git a/doc/user_manual/figures/wds-tutorial/wds-tutorial-1.png b/doc/user_manual/figures/wds-tutorial/wds-tutorial-1.png new file mode 100644 index 00000000..5b648d60 Binary files /dev/null and b/doc/user_manual/figures/wds-tutorial/wds-tutorial-1.png differ diff --git a/doc/user_manual/figures/wds-tutorial/wds-tutorial-10.png b/doc/user_manual/figures/wds-tutorial/wds-tutorial-10.png new file mode 100644 index 00000000..d10130f9 Binary files /dev/null and b/doc/user_manual/figures/wds-tutorial/wds-tutorial-10.png differ diff --git a/doc/user_manual/figures/wds-tutorial/wds-tutorial-11.png b/doc/user_manual/figures/wds-tutorial/wds-tutorial-11.png new file mode 100644 index 00000000..80fef401 Binary files /dev/null and b/doc/user_manual/figures/wds-tutorial/wds-tutorial-11.png differ diff --git a/doc/user_manual/figures/wds-tutorial/wds-tutorial-12.png b/doc/user_manual/figures/wds-tutorial/wds-tutorial-12.png new file mode 100644 index 00000000..44655ff8 Binary files /dev/null and b/doc/user_manual/figures/wds-tutorial/wds-tutorial-12.png differ diff --git a/doc/user_manual/figures/wds-tutorial/wds-tutorial-13.png b/doc/user_manual/figures/wds-tutorial/wds-tutorial-13.png new file mode 100644 index 00000000..7f500b87 Binary files /dev/null and b/doc/user_manual/figures/wds-tutorial/wds-tutorial-13.png differ diff --git a/doc/user_manual/figures/wds-tutorial/wds-tutorial-14.png b/doc/user_manual/figures/wds-tutorial/wds-tutorial-14.png new file mode 100644 index 00000000..38ded717 Binary files /dev/null and b/doc/user_manual/figures/wds-tutorial/wds-tutorial-14.png differ diff --git a/doc/user_manual/figures/wds-tutorial/wds-tutorial-2.png b/doc/user_manual/figures/wds-tutorial/wds-tutorial-2.png new file mode 100644 index 00000000..136aad8d Binary files /dev/null and b/doc/user_manual/figures/wds-tutorial/wds-tutorial-2.png differ diff --git a/doc/user_manual/figures/wds-tutorial/wds-tutorial-3.png b/doc/user_manual/figures/wds-tutorial/wds-tutorial-3.png new file mode 100644 index 00000000..5c5ee47a Binary files /dev/null and b/doc/user_manual/figures/wds-tutorial/wds-tutorial-3.png differ diff --git a/doc/user_manual/figures/wds-tutorial/wds-tutorial-4.png b/doc/user_manual/figures/wds-tutorial/wds-tutorial-4.png new file mode 100644 index 00000000..b1ac04ad Binary files /dev/null and b/doc/user_manual/figures/wds-tutorial/wds-tutorial-4.png differ diff --git a/doc/user_manual/figures/wds-tutorial/wds-tutorial-5.png b/doc/user_manual/figures/wds-tutorial/wds-tutorial-5.png new file mode 100644 index 00000000..ed418183 Binary files /dev/null and b/doc/user_manual/figures/wds-tutorial/wds-tutorial-5.png differ diff --git a/doc/user_manual/figures/wds-tutorial/wds-tutorial-6.png b/doc/user_manual/figures/wds-tutorial/wds-tutorial-6.png new file mode 100644 index 00000000..9ad52a8d Binary files /dev/null and b/doc/user_manual/figures/wds-tutorial/wds-tutorial-6.png differ diff --git a/doc/user_manual/figures/wds-tutorial/wds-tutorial-7.png b/doc/user_manual/figures/wds-tutorial/wds-tutorial-7.png new file mode 100644 index 00000000..385eae55 Binary files /dev/null and b/doc/user_manual/figures/wds-tutorial/wds-tutorial-7.png differ diff --git a/doc/user_manual/figures/wds-tutorial/wds-tutorial-8.png b/doc/user_manual/figures/wds-tutorial/wds-tutorial-8.png new file mode 100644 index 00000000..863e32ff Binary files /dev/null and b/doc/user_manual/figures/wds-tutorial/wds-tutorial-8.png differ diff --git a/doc/user_manual/figures/wds-tutorial/wds-tutorial-9.png b/doc/user_manual/figures/wds-tutorial/wds-tutorial-9.png new file mode 100644 index 00000000..5704870c Binary files /dev/null and b/doc/user_manual/figures/wds-tutorial/wds-tutorial-9.png differ diff --git a/doc/user_manual/header/authorpage.tex b/doc/user_manual/header/authorpage.tex index 7c862f57..c5c58dd5 100644 --- a/doc/user_manual/header/authorpage.tex +++ b/doc/user_manual/header/authorpage.tex @@ -15,7 +15,7 @@ % % \author Gabriel Mariano Marcelino % -% \version 0.5.0 +% \version 1.0.0 % % \date 2021/04/01 % @@ -26,7 +26,7 @@ \textbf{\thetitle} -\textit{November, 2023} +\textit{September, 2024} \vspace{1cm} @@ -46,6 +46,7 @@ \textbf{Contributing Authors:} +Carlos Augusto Porto Freitas \\ Sara Vega Martinez \\ Vitória Beatriz Bianchin \\ Yan Castro de Azeredo \\ @@ -62,12 +63,14 @@ \toprule[1.5pt] \textbf{Version} & \textbf{Author} & \textbf{Changes} & \textbf{Date} \\ \midrule - 0.0 & G. M. Marcelino & Document creation & 2021/04/01 \\ - 0.1 & G. M. Marcelino & First release & 2021/06/16 \\ - 0.2 & G. M. Marcelino & General improvements and updates & 2022/05/17 \\ - 0.3 & G. M. Marcelino, M. Boing & General improvements and updates & 2022/11/04 \\ - 0.4 & M. Boing & Firmware updates & 2023/03/19 \\ - 0.5 & M. Boing & Serial interfaces & 2023/11/01\\ + v0.0 & G. M. Marcelino & Document creation & 2021/04/01 \\ + v0.1 & G. M. Marcelino & First release & 2021/06/16 \\ + v0.2 & G. M. Marcelino & General improvements and updates & 2022/05/17 \\ + v0.3 & G. M. Marcelino, M. Boing & General improvements and updates & 2022/11/04 \\ + v0.4 & M. Boing & Firmware updates & 2023/03/19 \\ + v0.5 & M. Boing & Firmware updates & 2023/11/01 \\ + v0.6 & M. Boing & Firmware updates & 2024/03/14 \\ + v1.0 & G. M. Marcelino, M. Boing & Stable release & 2024/09/05 \\ \bottomrule[1.5pt] \end{tabular} \end{center} @@ -81,4 +84,4 @@ \end{center} \end{figure} -\textcopyright\ 2023 by SpaceLab. \thetitle. This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. To view a copy of this license, visit \href{http://creativecommons.org/licenses/by-sa/4.0/}{http://creativecommons.org/licenses/by-sa/4.0/}. \ No newline at end of file +\textcopyright\ 2024 by SpaceLab. \thetitle. This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. To view a copy of this license, visit \href{http://creativecommons.org/licenses/by-sa/4.0/}{http://creativecommons.org/licenses/by-sa/4.0/}. diff --git a/doc/user_manual/header/titlepage.tex b/doc/user_manual/header/titlepage.tex index f1f22266..10b6549f 100644 --- a/doc/user_manual/header/titlepage.tex +++ b/doc/user_manual/header/titlepage.tex @@ -15,7 +15,7 @@ % % \author Gabriel Mariano Marcelino % -% \version 0.5.0 +% \version 1.0.0 % % \date 2021/04/01 % @@ -25,7 +25,7 @@ \thispagestyle{empty} \begin{flushleft} -SLB-TTC2-DOC-v0.5 +SLB-TTC2-DOC-v1.0 \end{flushleft} \vspace{1cm} @@ -52,7 +52,7 @@ \vfill \begin{flushright} -November 2023 +September 2024 \end{flushright} -\end{titlepage} \ No newline at end of file +\end{titlepage} diff --git a/doc/user_manual/main.tex b/doc/user_manual/main.tex index 512965f3..e6f961bd 100644 --- a/doc/user_manual/main.tex +++ b/doc/user_manual/main.tex @@ -15,7 +15,7 @@ % % \author Gabriel Mariano Marcelino % -% \version 0.3.0 +% \version 1.0.0 % % \date 2021/04/01 % @@ -54,6 +54,33 @@ \listoftables \addcontentsline{toc}{chapter}{List of Tables} +%----------- Nomenclature List --------------- +\nomenclature{\textbf{PCB}}{\textit{Printed Circuit Board.}} +\nomenclature{\textbf{GOLDS}}{\textit{Global Open coLlecting Data System.}} +\nomenclature{\textbf{UFSC}}{\textit{Universidade Federal de Santa Catarina.}} +\nomenclature{\textbf{RAM}}{\textit{Random Access Memory.}} +\nomenclature{\textbf{RF}}{\textit{Radio Frequency.}} +\nomenclature{\textbf{SRAM}}{\textit{Static Random Access Memory.}} +\nomenclature{\textbf{GFSK}}{\textit{Gaussian Frequency Shift Keying.}} +\nomenclature{\textbf{GMSK}}{\textit{Gaussian Minimum Shift Keying.}} +\nomenclature{\textbf{NGHam}}{\textit{Next Generation Ham Radio.}} +\nomenclature{\textbf{UART}}{\textit{Universal Asynchronous Receiver / Transmitter.}} +\nomenclature{\textbf{SPI}}{\textit{Serial Peripheral Interface.}} +\nomenclature{\textbf{HAL}}{\textit{Hardware Abstraction Layer.}} +\nomenclature{\textbf{I$^2$C}}{\textit{Inter-Integrated Circuit.}} +\nomenclature{\textbf{RTOS}}{\textit{Real Time Operating System.}} +\nomenclature{\textbf{OBDH}}{\textit{On-Board Data Handling.}} +\nomenclature{\textbf{EPS}}{\textit{Electric Power System.}} +\nomenclature{\textbf{uC}}{\textit{MicroController.}} +\nomenclature{\textbf{FEC}}{\textit{Forward Error Correction.}} +\nomenclature{\textbf{RS}}{\textit{Reed-Solomon.}} +\nomenclature{\textbf{JTAG}}{\textit{Joint Test Action Group.}} +\nomenclature{\textbf{SDR}}{\textit{Software-Defined Radio.}} +\nomenclature{\textbf{EM}}{\textit{Engineering Model.}} +\nomenclature{\textbf{FM}}{\textit{Flight Model.}} +\nomenclature{\textbf{TTC}}{\textit{Telemetry, Tracking and Command.}} +%----------------------------------------- + \printnomenclature \addcontentsline{toc}{chapter}{Nomenclature} @@ -67,7 +94,8 @@ \input{chapters/hardware} \input{chapters/firmware} \input{chapters/operation} + \input{chapters/assembly} \input{chapters/references} - \input{appendices/appendices} +% \input{appendices/appendices} -\end{document} \ No newline at end of file +\end{document} diff --git a/doc/user_manual/references/ccs-studio.bib b/doc/user_manual/references/ccs-studio.bib new file mode 100644 index 00000000..f9298db1 --- /dev/null +++ b/doc/user_manual/references/ccs-studio.bib @@ -0,0 +1,6 @@ +@misc{ccs-studio, + author = {{Texas Instruments}}, + title = {{Code Composer Studio™ integrated development environment (IDE)}}, + year = {2024}, + note = {Available at <\url{https://www.ti.com/tool/CCSTUDIO}>} +} diff --git a/doc/user_manual/references/marcelino2023.bib b/doc/user_manual/references/marcelino2023.bib new file mode 100644 index 00000000..179948be --- /dev/null +++ b/doc/user_manual/references/marcelino2023.bib @@ -0,0 +1,11 @@ +@article{marcelino2023, + author = {Marcelino, Gabriel Mariano and de Mattos, André Martins Pio and Barcellos, João Cláudio Elsen and Ribeiro, Brenda Fernandes and Seman, Laio Oriel and Filho, Edemar Morsch and Bezerra, Eduardo Augusto}, + journal = {IEEE Embedded Systems Letters}, + title = {FloripaSat-2: An Open-Source Platform for CubeSats}, + year = {2024}, + volume = {16}, + number = {1}, + pages = {77-80}, + keywords = {Payloads;CubeSat;Protocols;Solar panels;Satellite broadcasting;Earth;Batteries;CubeSat;nanosatellite;open-source;service platform}, + doi = {10.1109/LES.2023.3260066} +} diff --git a/doc/user_manual/references/sl-decoder.bib b/doc/user_manual/references/sl-decoder.bib new file mode 100644 index 00000000..024dbb8b --- /dev/null +++ b/doc/user_manual/references/sl-decoder.bib @@ -0,0 +1,6 @@ +@misc{sl-decoder, + author = {{SpaceLab}}, + title = {{SpaceLab Decoder}}, + year = {2024}, + note = {Available at <\url{https://github.com/spacelab-ufsc/spacelab-decoder}>} +} diff --git a/doc/user_manual/references/sl-transmitter.bib b/doc/user_manual/references/sl-transmitter.bib new file mode 100644 index 00000000..cddc2e30 --- /dev/null +++ b/doc/user_manual/references/sl-transmitter.bib @@ -0,0 +1,6 @@ +@misc{sl-transmitter, + author = {{SpaceLab}}, + title = {{SpaceLab Transmitter}}, + year = {2024}, + note = {Available at <\url{https://github.com/spacelab-ufsc/spacelab-transmitter}>} +} diff --git a/doc/user_manual/references/ttc2-releases.bib b/doc/user_manual/references/ttc2-releases.bib new file mode 100644 index 00000000..f0793531 --- /dev/null +++ b/doc/user_manual/references/ttc2-releases.bib @@ -0,0 +1,6 @@ +@misc{ttc2-releases, + author = {{SpaceLab}}, + title = {{TTC 2.0 - Releases GitHub page}}, + year = {2024}, + note = {Available at <\url{https://github.com/spacelab-ufsc/ttc2/releases}>} +} diff --git a/doc/user_manual/slb-ttc2-doc-v0.5.pdf b/doc/user_manual/slb-ttc2-doc-v0.5.pdf deleted file mode 100644 index c1a74b6c..00000000 Binary files a/doc/user_manual/slb-ttc2-doc-v0.5.pdf and /dev/null differ diff --git a/firmware/.cproject b/firmware/.cproject index cf1dda38..a1b9112e 100644 --- a/firmware/.cproject +++ b/firmware/.cproject @@ -15,38 +15,36 @@ - - + + + - + @@ -127,64 +160,64 @@ -