Files
hm fc10ef2e10 Initial commit: LSPi (LiangShanPi) project
GD32F470ZGT6 based project with full peripheral support:
- SDRAM (W9825G6KH) via EXMC
- LCD NT35510 (480x800) via EXMC NOR/PSRAM
- Flash (W25Q64) via SPI
- UART (USART0) debug console
- LED indicators
- CMSIS-DAP debug interface
- CMake + ARM GCC toolchain build system
2026-04-26 16:24:42 +08:00

52 lines
887 B
C++

#ifndef __SPI_DRIVER_H__
#define __SPI_DRIVER_H__
#include <cstdint>
#include "bus_core.h"
enum class SpiPort : uint8_t {
_0 = 0,
_1, _2, _3, _4, _5,
MAX
};
struct SpiConfig {
uint32_t speed_hz = 1000000;
uint8_t data_width = 8;
uint8_t mode = 0;
};
class SpiBus;
class SpiDevice {
public:
SpiDevice(uint32_t cs_port, uint32_t cs_pin);
RetCode init();
private:
friend class SpiBus;
uint32_t cs_port_;
uint32_t cs_pin_;
bool initialized_ = false;
};
class SpiBus {
public:
explicit SpiBus(SpiPort port);
~SpiBus();
SpiBus(const SpiBus &) = delete;
SpiBus &operator=(const SpiBus &) = delete;
RetCode init(const SpiConfig &config);
RetCode deinit();
RetCode transfer(SpiDevice *device, BusTransfer *transfer);
private:
SpiPort port_;
SpiConfig config_;
bool initialized_ = false;
};
#endif