This module contains NMC1000 bus wrapper APIs implementation.
Copyright (c) 2018-2019 Microchip Technology Inc. and its subsidiaries.
#include <stdio.h>
#include "bsp/include/nm_bsp.h"
#include "common/include/nm_common.h"
#include "bus_wrapper/include/nm_bus_wrapper.h"
#include "asf.h"
#include "conf_winc.h"
Macros | |
#define | NM_BUS_MAX_TRX_SZ 4096 |
#define | SPI0_XDMAC_RX_CH_NUM 2 |
#define | SPI0_XDMAC_TX_CH_NUM 1 |
XDMAC channel HW Interface number for SPI0,refer to datasheet. More... | |
#define | SPI_ASSERT_CS() do {p_pio->PIO_CODR = 1 << (CONF_WINC_SPI_CS_GPIO & 0x1F);}while(0) |
#define | SPI_DEASSERT_CS() do {p_pio->PIO_SODR = 1 << (CONF_WINC_SPI_CS_GPIO & 0x1F);}while(0) |
#define | XDMAC_RX_CH 1 |
#define | XDMAC_TX_CH 0 |
XDMAC channel used in this example. More... | |
#define | xSPI_ASSERT_CS() {gpio_set_pin_low(CONF_WINC_SPI_CS_GPIO);} |
#define | xSPI_DEASSERT_CS() {gpio_set_pin_high(CONF_WINC_SPI_CS_GPIO);} |
Functions | |
sint8 | nm_bus_deinit (void) |
De-initialize the bus wrapper. More... | |
sint8 | nm_bus_init (uint8_t *pvinit, uint32 req_serial_number) |
sint8 | nm_bus_ioctl (uint8 u8Cmd, void *pvParameter) |
static sint8 | spi_rw (uint8 *pu8Mosi, uint8 *pu8Miso, uint16 u16Sz) |
static sint8 | spi_xdmac_configure (Spi *const pspi, uint8 *u8Mosi, uint8 *u8Miso, uint16 pu16Sz) |
sint8 | spi_xdmac_init () |
void | XDMAC_Handler (void) |
Variables | |
uint16_t | check [100] |
XDMAC interrupt handler. More... | |
uint8_t | dummy [1500] |
tstrNmBusCapabilities | egstrNmBusCapabilities |
Pio * | p_pio |
configure xdmac for spi and ready to transfer/receive. More... | |
Pio * | p_pio_cs |
PIO instance used by CS. More... | |
volatile uint8_t | rx_irq_complete |
volatile uint8_t | tx_irq_complete |
volatile uint8_t | xdma_irq_complete = 0 |
static xdmac_channel_config_t | xdmac_rx_cfg |
static xdmac_channel_config_t | xdmac_tx_cfg |
XDMAC channel configuration. More... | |
#define NM_BUS_MAX_TRX_SZ 4096 |
#define SPI0_XDMAC_RX_CH_NUM 2 |
Referenced by spi_xdmac_init().
#define SPI0_XDMAC_TX_CH_NUM 1 |
XDMAC channel HW Interface number for SPI0,refer to datasheet.
Referenced by spi_xdmac_init().
#define SPI_ASSERT_CS | ( | ) | do {p_pio->PIO_CODR = 1 << (CONF_WINC_SPI_CS_GPIO & 0x1F);}while(0) |
Referenced by spi_rw(), and spi_xdmac_configure().
#define SPI_DEASSERT_CS | ( | ) | do {p_pio->PIO_SODR = 1 << (CONF_WINC_SPI_CS_GPIO & 0x1F);}while(0) |
Referenced by nm_bus_init(), spi_rw(), and spi_xdmac_configure().
#define XDMAC_RX_CH 1 |
Referenced by spi_xdmac_configure(), spi_xdmac_init(), and XDMAC_Handler().
#define XDMAC_TX_CH 0 |
XDMAC channel used in this example.
Referenced by spi_xdmac_configure(), spi_xdmac_init(), and XDMAC_Handler().
#define xSPI_ASSERT_CS | ( | ) | {gpio_set_pin_low(CONF_WINC_SPI_CS_GPIO);} |
#define xSPI_DEASSERT_CS | ( | ) | {gpio_set_pin_high(CONF_WINC_SPI_CS_GPIO);} |
nm_bus_deinit | ( | void | ) |
De-initialize the bus wrapper.
References CONF_WINC_SPI, CONF_WINC_SPI_CLK_GPIO, CONF_WINC_SPI_CS_GPIO, CONF_WINC_SPI_MISO_GPIO, CONF_WINC_SPI_MOSI_GPIO, IOPORT_DIR_INPUT, ioport_set_pin_dir(), M2M_SUCCESS, and spi_disable().
Referenced by nm_bus_iface_deinit().
References CONF_WINC_SPI, CONF_WINC_SPI_CLK_FLAGS, CONF_WINC_SPI_CLK_GPIO, CONF_WINC_SPI_CLOCK, CONF_WINC_SPI_CS_FLAGS, CONF_WINC_SPI_CS_GPIO, CONF_WINC_SPI_DLYBCT, CONF_WINC_SPI_DLYBS, CONF_WINC_SPI_MISO_FLAGS, CONF_WINC_SPI_MISO_GPIO, CONF_WINC_SPI_MOSI_FLAGS, CONF_WINC_SPI_MOSI_GPIO, CONF_WINC_SPI_NPCS, CONF_WINC_SPI_PHA, CONF_WINC_SPI_POL, IOPORT_DIR_OUTPUT, ioport_disable_pin(), ioport_enable_pin(), ioport_set_pin_dir(), ioport_set_pin_mode(), M2M_SUCCESS, nm_bsp_reset(), p_pio_cs, PIO_DELTA, SPI_DEASSERT_CS, spi_disable(), spi_disable_mode_fault_detect(), spi_enable(), spi_enable_clock(), spi_reset(), spi_set_baudrate_div(), spi_set_bits_per_transfer(), spi_set_clock_phase(), spi_set_clock_polarity(), spi_set_master_mode(), spi_set_peripheral_chip_select_value(), spi_set_transfer_delay(), and sysclk_get_peripheral_hz().
Referenced by nm_bus_iface_init().
References M2M_ERR, NM_BUS_IOCTL_R, NM_BUS_IOCTL_RW, NM_BUS_IOCTL_W, NM_BUS_IOCTL_W_SPECIAL, tstrNmI2cDefault::pu8Buf, tstrNmI2cSpecial::pu8Buf1, tstrNmI2cSpecial::pu8Buf2, tstrNmSpiRw::pu8InBuf, tstrNmSpiRw::pu8OutBuf, spi_rw(), spi_xdmac_configure(), tstrNmI2cDefault::u16Sz, tstrNmSpiRw::u16Sz, tstrNmI2cSpecial::u16Sz1, and tstrNmI2cSpecial::u16Sz2.
Referenced by nmi_spi_read(), and nmi_spi_write().
References CONF_WINC_SPI, CONF_WINC_SPI_CS_GPIO, M2M_ERR_BUS_FAIL, M2M_SUCCESS, NULL, p_pio, PIO_DELTA, SPI_ASSERT_CS, SPI_DEASSERT_CS, spi_read(), and spi_write().
Referenced by nm_bus_ioctl().
|
static |
References dummy, M2M_ERR_BUS_FAIL, M2M_SUCCESS, xdmac_channel_config_t::mbr_da, xdmac_channel_config_t::mbr_sa, xdmac_channel_config_t::mbr_ubc, rx_irq_complete, SPI_ASSERT_CS, SPI_DEASSERT_CS, tx_irq_complete, xdmac_channel_enable(), xdmac_configure_transfer(), XDMAC_RX_CH, and XDMAC_TX_CH.
Referenced by nm_bus_ioctl().
sint8 spi_xdmac_init | ( | ) |
References CONF_WINC_SPI, xdmac_channel_config_t::mbr_bc, xdmac_channel_config_t::mbr_cfg, xdmac_channel_config_t::mbr_da, xdmac_channel_config_t::mbr_ds, xdmac_channel_config_t::mbr_dus, xdmac_channel_config_t::mbr_sa, xdmac_channel_config_t::mbr_sus, pmc_enable_periph_clk(), SPI0_XDMAC_RX_CH_NUM, SPI0_XDMAC_TX_CH_NUM, xdmac_channel_enable_interrupt(), xdmac_channel_set_descriptor_control(), xdmac_enable_interrupt(), XDMAC_RX_CH, and XDMAC_TX_CH.
Referenced by main().
void XDMAC_Handler | ( | void | ) |
uint16_t check[100] |
XDMAC interrupt handler.
uint8_t dummy[1500] |
Referenced by spi_xdmac_configure().
tstrNmBusCapabilities egstrNmBusCapabilities |
Referenced by nm_read_block(), and nm_write_block().
Pio* p_pio |
configure xdmac for spi and ready to transfer/receive.
pspi | Base address of the SPI |
Referenced by pio_configure_pin(), pio_disable_pin_interrupt(), pio_enable_pin_interrupt(), pio_get_pin_group(), pio_get_pin_value(), pio_set_pin_high(), pio_set_pin_low(), pio_toggle_pin(), and spi_rw().
Pio* p_pio_cs |
PIO instance used by CS.
Referenced by nm_bus_init().
volatile uint8_t rx_irq_complete |
Referenced by spi_xdmac_configure(), and XDMAC_Handler().
volatile uint8_t tx_irq_complete |
Referenced by spi_xdmac_configure(), and XDMAC_Handler().
volatile uint8_t xdma_irq_complete = 0 |
Referenced by XDMAC_Handler().
|
static |
|
static |
XDMAC channel configuration.