20 uint16_t sck_pin, GPIO_TypeDef *miso_port, uint16_t miso_pin,
21 GPIO_TypeDef *mosi_port, uint16_t mosi_pin, uint32_t pin_remap = 0,
22 bool master_mode =
true,
bool firstbit_msb =
true,
23 uint16_t prescaler = SPI_BaudRatePrescaler_64, uint32_t dma_enable_min_size = 3,
32 void RxDmaIRQHandler();
33 void TxDmaIRQHandler();
35 ErrorCode PollingTransfer(uint8_t *rx,
const uint8_t *tx, uint32_t len);
37 static CH32SPI *map[CH32_SPI_NUMBER];
40 inline bool DmaBusy()
const
42 return (dma_rx_channel_->CNTR != 0) || (dma_tx_channel_->CNTR != 0) || busy_;
45 void StartDmaDuplex(uint32_t count);
48 void PrepareTxBuffer(
ConstRawData write_data, uint32_t need_len, uint32_t prefix = 0,
49 uint8_t dummy = 0xFF);
54 SPI_TypeDef *instance_;
55 DMA_Channel_TypeDef *dma_rx_channel_;
56 DMA_Channel_TypeDef *dma_tx_channel_;
58 uint32_t dma_enable_min_size_;
63 bool mem_read_ =
false;
71 uint16_t nss_ = SPI_NSS_Soft;
74 GPIO_TypeDef *sck_port_;
76 GPIO_TypeDef *miso_port_;
78 GPIO_TypeDef *mosi_port_;
ErrorCode MemWrite(uint16_t reg, ConstRawData write_data, OperationRW &op) override
向 SPI 设备的寄存器写入数据。 Writes data to a specific register of the SPI device.
ErrorCode MemRead(uint16_t reg, RawData read_data, OperationRW &op) override
从 SPI 设备的寄存器读取数据。 Reads data from a specific register of the SPI device.