Robin Mueller
447c4d5c88
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
38 lines
1.8 KiB
C++
38 lines
1.8 KiB
C++
#ifndef BSP_Q7S_RW_SPI_CALLBACK_H_
|
|
#define BSP_Q7S_RW_SPI_CALLBACK_H_
|
|
|
|
#include "fsfw/returnvalues/returnvalue.h"
|
|
#include "fsfw_hal/common/gpio/GpioCookie.h"
|
|
#include "fsfw_hal/linux/spi/SpiComIF.h"
|
|
|
|
namespace rwSpiCallback {
|
|
|
|
//! This is the end and start marker of the frame datalinklayer
|
|
static constexpr uint8_t FLAG_BYTE = 0x7E;
|
|
|
|
/**
|
|
* @brief This is the callback function to send commands to the nano avionics reaction wheels and
|
|
* receive the replies.
|
|
*
|
|
* @details The data to sent are additionally encoded according to the HDLC framing defined in the
|
|
* datasheet of the reaction wheels:
|
|
* https://eive-cloud.irs.uni-stuttgart.de/index.php/apps/files/?dir=/EIVE_IRS/
|
|
* Arbeitsdaten/08_Used%20Components/Nanoavionics_Reactionwheels&fileid=181622
|
|
* Each command entails exactly one reply which will also be read in and decoded by this
|
|
* function.
|
|
* Because the reaction wheels require a spi clock frequency of maximum 300 kHZ and minimum
|
|
* 150 kHz which is not supported by the processing system SPI peripheral an AXI SPI core
|
|
* has been implemented in the programmable logic. This AXI SPI core works with a fixed
|
|
* frequency of 250 kHz.
|
|
* To allow the parallel usage of the same physical SPI bus, a VHDL module has been
|
|
* implemented which is able to disconnect the hard-wired SPI peripheral of the PS and
|
|
* route the AXI SPI to the SPI lines.
|
|
* To switch between the to SPI peripherals, an EMIO is used which will also be controlled
|
|
* by this function.
|
|
*/
|
|
ReturnValue_t spiCallback(SpiComIF* comIf, SpiCookie* cookie, const uint8_t* sendData,
|
|
size_t sendLen, void* args);
|
|
|
|
} // namespace rwSpiCallback
|
|
#endif /* BSP_Q7S_RW_SPI_CALLBACK_H_ */
|