1 /**************************************************************************//** 2 * 3 * @copyright (C) 2020 Nuvoton Technology Corp. All rights reserved. 4 * 5 * SPDX-License-Identifier: Apache-2.0 6 * 7 * Change Logs: 8 * Date Author Notes 9 * 2020-6-15 YHKuo First version 10 * 11 ******************************************************************************/ 12 13 #ifndef __DRV_SPI_H__ 14 #define __DRV_SPI_H__ 15 16 #include <rtconfig.h> 17 18 #include <rtdevice.h> 19 #include "NuMicro.h" 20 #include <nu_bitutil.h> 21 22 #if defined(BSP_USING_SPI_PDMA) 23 #include <drv_pdma.h> 24 #endif 25 26 struct nu_spi 27 { 28 struct rt_spi_bus dev; 29 char *name; 30 SPI_T *spi_base; 31 uint32_t rstidx; 32 uint32_t dummy; 33 #if defined(BSP_USING_SPI_PDMA) 34 int16_t pdma_perp_tx; 35 int8_t pdma_chanid_tx; 36 int16_t pdma_perp_rx; 37 int8_t pdma_chanid_rx; 38 rt_sem_t m_psSemBus; 39 #endif 40 struct rt_qspi_configuration configuration; 41 }; 42 43 typedef struct nu_spi *nu_spi_t; 44 45 void nu_spi_drain_rxfifo(SPI_T *spi_base); 46 void nu_spi_transfer(struct nu_spi *spi_bus, uint8_t *tx, uint8_t *rx, int length, uint8_t bytes_per_word); 47 48 #if defined(BSP_USING_SPI_PDMA) 49 rt_err_t nu_hw_spi_pdma_allocate(struct nu_spi *spi_bus); 50 #endif 51 52 #endif // __DRV_SPI_H___ 53