first commit

This commit is contained in:
Lazarewicz Julien
2025-07-22 15:27:00 +02:00
commit 6c6451c92c
205 changed files with 44418 additions and 0 deletions

49
MGOSCompat/HardwareSPI.h Normal file
View File

@@ -0,0 +1,49 @@
// ArduinoCompat/HardwareSPI.h
// STM32 implementattion of Arduino compatible SPI class
#ifndef _HardwareSPI_h
#define _HardwareSPI_h
#include <mgos.h>
#include <mgos_spi.h>
#include <stdint.h>
extern "C"
{
struct mgos_spi *mgos_spi_get_global(void);
bool mgos_spi_run_txn(struct mgos_spi *spi, bool full_duplex, const struct mgos_spi_txn *txn);
}
//Not used on MGOS as SPI config is set in mos.yml
#define SPI_MODE0 0x00
#define SPI_MODE1 0x01
#define SPI_MODE2 0x03
#define SPI_MODE3 0x02
#define SPI_TX_BUFFER_SIZE 64
#define SPI_RX_BUFFER_SIZE 64
class HardwareSPI
{
public:
HardwareSPI(uint32_t spiPortNumber); // Only port SPI1 is currently supported
void begin(int frequency, uint32_t bitOrder, uint32_t mode);
void end(void);
uint8_t reverseBits(uint8_t value);
int8_t getCSGpio();
uint8_t transfer(uint8_t data);
uint8_t transfer2B(uint8_t byte0, uint8_t byte1);
uint8_t spiBurstRead(uint8_t reg, uint8_t* dest, uint8_t len);
uint8_t spiBurstWrite(uint8_t reg, const uint8_t* src, uint8_t len);
private:
uint32_t spiPortNumber; // Not used
struct mgos_spi_txn txn;
uint32_t bitOrder;
//Define spi TX and RX buffers.This is a little wasteful of memory
//but no dynamic memory allocation fits with the RadioHead library.
uint8_t spiTXBuf[SPI_TX_BUFFER_SIZE];
uint8_t spiRXBuf[SPI_RX_BUFFER_SIZE];
};
extern HardwareSPI SPI;
#endif