ksz8851snl_spi.c File Reference
SPI interface API for KSZ8851SNL Ethernet controller.
- Version
 - 5.6.0
 
License
Copyright 2015 Silicon Labs, Inc. http://www.silabs.com
This file is licensed under the Silabs License Agreement. See the file "Silabs_License_Agreement.txt" for details. Before using this software for any purpose, you must agree to the terms of that agreement.
       Definition in file
       
        ksz8851snl_spi.c
       
       .
      
       #include <stdio.h>
      
      
       #include <stdint.h>
      
      
       #include "
       
        ksz8851snl_spi.h
       
       "
      
      
       #include "
       
        em_assert.h
       
       "
      
      
       #include "
       
        em_common.h
       
       "
      
      
       #include "
       
        em_gpio.h
       
       "
      
      
       #include "
       
        spidrv.h
       
       "
      
      
         Macros | 
       |
| #define | ADDRESS_MS2B_POS 0x06 | 
| #define | ADDRESS_SHIFT 0x02 | 
| #define | BOGUS_BYTE 0xFF | 
| #define | BYTE_ENABLE 0x03 | 
| #define | BYTE_ENABLE_SHIFT 0x02 | 
| #define | ETH_CS_PIN 3 | 
| #define | ETH_CS_PORT gpioPortD | 
| #define | OPCODE_FIFO_READ 0x80 | 
| #define | OPCODE_FIFO_WRITE 0xC0 | 
| #define | OPCODE_REG_READ 0x00 | 
| #define | OPCODE_REG_WRITE 0x40 | 
| #define | REG_MASK 0x03 | 
         Functions | 
       |
| void | KSZ8851SNL_SPI_Init (void) | 
| 
         KSZ8851SNL_SPI_Init Initialize SPI interface to Ethernet controller.
          | 
       |
| void | KSZ8851SNL_SPI_ReadFifo (int numBytes, uint8_t *data) | 
| 
         Read data from the ethernet controller RX FIFO.
          | 
       |
| uint16_t | KSZ8851SNL_SPI_ReadRegister (uint8_t reg) | 
| 
         Read ethernet controller register.
          | 
       |
| static void | KSZ8851SNL_SPI_Receive (int numBytes, uint8_t *buffer) | 
| 
         Receive a series of bytes over the spi link.
          | 
       |
| static void | KSZ8851SNL_SPI_SetChipSelect (bool enable) | 
| 
         Select/deselect the ksz8851snl chip. This will clear/set the chip select GPIO pin connected to the ksz8851snl. The chip has active low chip select.
          | 
       |
| static void | KSZ8851SNL_SPI_Transmit (int numBytes, const uint8_t *data) | 
| 
         Transmits a series of bytes over the spi link.
          | 
       |
| void | KSZ8851SNL_SPI_WriteFifo (int numBytes, const uint8_t *data) | 
| 
         Continue writing ethernet controller FIFO.
          | 
       |
| void | KSZ8851SNL_SPI_WriteFifoBegin (void) | 
| 
         Start writing to the ethernet controller FIFO.
          | 
       |
| void | KSZ8851SNL_SPI_WriteFifoEnd (void) | 
| 
         Stop read/write the ethernet controller FIFO.
          | 
       |
| void | KSZ8851SNL_SPI_WriteRegister (uint8_t reg, uint16_t value) | 
| 
         Write ethernet controller register.
          | 
       |
Macro Definition Documentation
| #define ADDRESS_MS2B_POS 0x06 | 
Most significant 2 Bytes of the address position
        Definition at line
        
         30
        
        of file
        
         ksz8851snl_spi.c
        
        .
       
Referenced by KSZ8851SNL_SPI_ReadRegister() , and KSZ8851SNL_SPI_WriteRegister() .
| #define ADDRESS_SHIFT 0x02 | 
Number of positions to shift the register address
        Definition at line
        
         31
        
        of file
        
         ksz8851snl_spi.c
        
        .
       
Referenced by KSZ8851SNL_SPI_ReadRegister() , and KSZ8851SNL_SPI_WriteRegister() .
| #define BOGUS_BYTE 0xFF | 
Bogus byte used for receiving via SPI
        Definition at line
        
         24
        
        of file
        
         ksz8851snl_spi.c
        
        .
       
Referenced by KSZ8851SNL_SPI_Init() .
| #define BYTE_ENABLE 0x03 | 
Enable 2 byte register read/write
        Definition at line
        
         32
        
        of file
        
         ksz8851snl_spi.c
        
        .
       
Referenced by KSZ8851SNL_SPI_ReadRegister() , and KSZ8851SNL_SPI_WriteRegister() .
| #define BYTE_ENABLE_SHIFT 0x02 | 
Number of positions to shitf the byte enable bits
        Definition at line
        
         33
        
        of file
        
         ksz8851snl_spi.c
        
        .
       
Referenced by KSZ8851SNL_SPI_ReadRegister() , and KSZ8851SNL_SPI_WriteRegister() .
| #define ETH_CS_PIN 3 | 
SPI CHIP SELECT Pin
        Definition at line
        
         37
        
        of file
        
         ksz8851snl_spi.c
        
        .
       
Referenced by KSZ8851SNL_SPI_Init() , and KSZ8851SNL_SPI_SetChipSelect() .
| #define ETH_CS_PORT gpioPortD | 
SPI CHIP SELECT Port
        Definition at line
        
         38
        
        of file
        
         ksz8851snl_spi.c
        
        .
       
Referenced by KSZ8851SNL_SPI_Init() , and KSZ8851SNL_SPI_SetChipSelect() .
| #define OPCODE_FIFO_READ 0x80 | 
Opcode for reading from FIFO
        Definition at line
        
         28
        
        of file
        
         ksz8851snl_spi.c
        
        .
       
Referenced by KSZ8851SNL_SPI_ReadFifo() .
| #define OPCODE_FIFO_WRITE 0xC0 | 
Opcode for writing to FIFO
        Definition at line
        
         29
        
        of file
        
         ksz8851snl_spi.c
        
        .
       
Referenced by KSZ8851SNL_SPI_WriteFifoBegin() .
| #define OPCODE_REG_READ 0x00 | 
Opcode for reading a register
        Definition at line
        
         26
        
        of file
        
         ksz8851snl_spi.c
        
        .
       
Referenced by KSZ8851SNL_SPI_ReadRegister() .
| #define OPCODE_REG_WRITE 0x40 | 
Opcode for writing a register
        Definition at line
        
         27
        
        of file
        
         ksz8851snl_spi.c
        
        .
       
Referenced by KSZ8851SNL_SPI_WriteRegister() .
| #define REG_MASK 0x03 | 
Register mask
        Definition at line
        
         25
        
        of file
        
         ksz8851snl_spi.c
        
        .
       
Referenced by KSZ8851SNL_SPI_ReadRegister() , and KSZ8851SNL_SPI_WriteRegister() .
Function Documentation
           
  | 
          static | 
Receive a series of bytes over the spi link.
- Parameters
 - 
         
[in] numBytesthe number of data bytes to be received [in] bufferthe destination buffer  
        Definition at line
        
         111
        
        of file
        
         ksz8851snl_spi.c
        
        .
       
References DMADRV_MAX_XFER_COUNT , ECODE_EMDRV_SPIDRV_OK , SL_MIN , and SPIDRV_MReceiveB() .
Referenced by KSZ8851SNL_SPI_ReadFifo() .
           
  | 
          static | 
Select/deselect the ksz8851snl chip. This will clear/set the chip select GPIO pin connected to the ksz8851snl. The chip has active low chip select.
- Parameters
 - 
         
[in] enabletrue will select the ksz8851snl chip false will deselect the ksz8851snl chip.  
        Definition at line
        
         139
        
        of file
        
         ksz8851snl_spi.c
        
        .
       
References ETH_CS_PIN , ETH_CS_PORT , GPIO_PinOutClear() , and GPIO_PinOutSet() .
Referenced by KSZ8851SNL_SPI_ReadFifo() , KSZ8851SNL_SPI_ReadRegister() , KSZ8851SNL_SPI_WriteFifoBegin() , KSZ8851SNL_SPI_WriteFifoEnd() , and KSZ8851SNL_SPI_WriteRegister() .
           
  | 
          static | 
Transmits a series of bytes over the spi link.
- Parameters
 - 
         
[in] numBytesthe number of data bytes to be transmitted [in] dataactual data to be transmitted  
        Definition at line
        
         82
        
        of file
        
         ksz8851snl_spi.c
        
        .
       
References DMADRV_MAX_XFER_COUNT , ECODE_EMDRV_SPIDRV_OK , SL_MIN , and SPIDRV_MTransmitB() .
Referenced by KSZ8851SNL_SPI_ReadFifo() , KSZ8851SNL_SPI_WriteFifo() , KSZ8851SNL_SPI_WriteFifoBegin() , and KSZ8851SNL_SPI_WriteRegister() .