void WDRV_SPI_In(uint8_t * const OutBuf, uint16_t OutSize, uint8_t * const InBuf, uint16_t InSize) { bool intEnabled = SYS_INT_SourceDisable(MRF_INT_SOURCE); WDRV_DISABLE_INTR(); CS_Assert(); IspSpi_TxAndRx(OutBuf, OutSize, InBuf, InSize); CS_Deassert(); WDRV_ENABLE_INTR(); if(intEnabled) WDRV_INTR_SourceEnable(); }
void WDRV_SPI_Out(uint8_t * const bufOut, uint16_t OutSize) { uint8_t rxBuf[4]; bool intEnabled = SYS_INT_SourceDisable(MRF_INT_SOURCE); WDRV_DISABLE_INTR(); CS_Assert(); IspSpi_TxAndRx(bufOut, OutSize, rxBuf, 0); CS_Deassert(); WDRV_ENABLE_INTR(); if(intEnabled) WDRV_INTR_SourceEnable(); }
static bool Spi_Write(unsigned char *p_txBuf, uint32_t txLen) { bool ret = true; int c = 0; CS_Assert(); while (txLen > SPI_DMA_MAX_TX_SIZE) { ret = _Spi_Tx(p_txBuf + c * SPI_DMA_MAX_TX_SIZE, SPI_DMA_MAX_TX_SIZE); txLen -= SPI_DMA_MAX_TX_SIZE; c ++; } if (txLen > 0) ret = _Spi_Tx(p_txBuf + c * SPI_DMA_MAX_TX_SIZE, txLen); CS_Deassert(); WDRV_ASSERT(ret, "Spi_Write failed"); return ret; }
static bool Spi_Read(unsigned char *p_cmd, uint32_t cmdLen, unsigned char *p_rxBuf, uint32_t rxLen) { bool ret = true; int c = 0; CS_Assert(); if (cmdLen > 0) ret = _Spi_Tx(p_cmd, cmdLen); if (ret && rxLen > 0) { while (rxLen > SPI_DMA_MAX_RX_SIZE) { ret = _Spi_Rx(p_rxBuf + c * SPI_DMA_MAX_RX_SIZE, SPI_DMA_MAX_RX_SIZE); rxLen -= SPI_DMA_MAX_RX_SIZE; c ++; } if (rxLen > 0) ret = _Spi_Rx(p_rxBuf + c * SPI_DMA_MAX_RX_SIZE, rxLen); } CS_Deassert(); WDRV_ASSERT(ret, "Spi_Read failed"); return ret; }