Exemplo n.º 1
0
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();
}
Exemplo n.º 2
0
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();
}
Exemplo n.º 3
0
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;
}
Exemplo n.º 4
0
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;
}