23 SPIDevice(ENCODER_SPI_PORT, ENCODER_SPI_PORT.getCsPins()[0]),
54 buf |= ((this->
spiSpeed) & 0x3) << 5;
56 buf |= (((uint16_t)this->
mode) & 0xf) << 8;
66 prescale = SPI_BAUDRATEPRESCALER_32;
69 prescale = SPI_BAUDRATEPRESCALER_16;
72 prescale = SPI_BAUDRATEPRESCALER_8;
75 prescale = SPI_BAUDRATEPRESCALER_32;
81 config->
peripheral.BaudRatePrescaler = prescale;
82 config->
peripheral.FirstBit = SPI_FIRSTBIT_MSB;
84 config->
peripheral.CLKPolarity = SPI_POLARITY_LOW;
85 config->
peripheral.DataSize = SPI_DATASIZE_8BIT;
106 uint8_t parity = (
spi_buf[0] >> 6) & 0x3;
107 for(uint8_t i = 0;i<7;i++){
108 parity ^= (
newPos >> (2*i)) & 0x3;
123 for(uint8_t i = 0;i<
bytes;i++){
202 for(uint8_t i = 0; i<3;i++){
204 reply+= std::to_string(khz) +
"kHz:" + std::to_string(i)+
"\n";
218 replies.emplace_back(
errors);
236 replies.emplace_back((uint8_t)this->
mode);
void registerCommand(const char *cmd, const ID cmdid, const char *help=nullptr, uint32_t flags=0)
static CommandStatus handleGetSet(const ParsedCommand &cmd, std::vector< CommandReply > &replies, TVal &value)
static ClassIdentifier info
static constexpr std::array< const char *, 2 > mode_names
void endSpiTransfer(SPIPort *port)
CommandStatus command(const ParsedCommand &cmd, std::vector< CommandReply > &replies)
std::string printSpeeds()
const ClassIdentifier getInfo()
Command handlers always have class infos. Works well with ChoosableClass.
static bool isCreatable()
void setMode(EncoderSSI_modes mode)
static const uint8_t bytes
std::string printModes(const std::array< const char *, N > &names)
void beginSpiTransfer(SPIPort *port)
void spiRxCompleted(SPIPort *port) override
EncoderType getEncoderType()
virtual SPIConfig * getSpiConfig()
virtual void setSpiConfig(SPIConfig config)
void takeExclusive(bool exclusive)
void receive_DMA(uint8_t *buf, uint16_t size, SPIDevice *device)
void configurePort(SPI_InitTypeDef *config)
TVal Flash_ReadDefault(uint16_t adr, TVal def)
bool Flash_Write(uint16_t adr, uint16_t dat)
bool Flash_Read(uint16_t adr, uint16_t *buf, bool checkempty=true)
SPI_InitTypeDef peripheral
bool cspol
CSPOL=true === active low.