ksz8851snl_spi.c File Reference

SPI interface API for KSZ8851SNL Ethernet controller. More...

#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"
Include dependency graph for ksz8851snl_spi.c:

Go to the source code of this file.

Defines

#define BOGUS_BYTE   0xFF
 Bogus byte used for receiving via SPI.
#define REG_MASK   0x03
 Register mask.
#define OPCODE_REG_READ   0x00
 Opcode for reading a register.
#define OPCODE_REG_WRITE   0x40
 Opcode for writing a register.
#define OPCODE_FIFO_READ   0x80
 Opcode for reading from FIFO.
#define OPCODE_FIFO_WRITE   0xC0
 Opcode for writing to FIFO.
#define ADDRESS_MS2B_POS   0x06
 Most significant 2 Bytes of the address position.
#define ADDRESS_SHIFT   0x02
 Number of positions to shift the register address.
#define BYTE_ENABLE   0x03
 Enable 2 byte register read/write.
#define BYTE_ENABLE_SHIFT   0x02
 Number of positions to shitf the byte enable bits.
#define ETH_CS_PIN   3
 SPI CHIP SELECT Pin.
#define ETH_CS_PORT   gpioPortD
 SPI CHIP SELECT Port.

Functions

void KSZ8851SNL_SPI_Init (void)
 KSZ8851SNL_SPI_Init Initialize SPI interface to Ethernet controller.
static void KSZ8851SNL_SPI_Transmit (int numBytes, const uint8_t *data)
 Transmits a series of bytes over the spi link.
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.
uint16_t KSZ8851SNL_SPI_ReadRegister (uint8_t reg)
 Read ethernet controller register.
void KSZ8851SNL_SPI_WriteRegister (uint8_t reg, uint16_t value)
 Write ethernet controller register.
void KSZ8851SNL_SPI_ReadFifo (int numBytes, uint8_t *data)
 Read data from the ethernet controller RX FIFO.
void KSZ8851SNL_SPI_WriteFifoBegin (void)
 Start writing to the ethernet controller FIFO.
void KSZ8851SNL_SPI_WriteFifo (int numBytes, const uint8_t *data)
 Continue writing ethernet controller FIFO.
void KSZ8851SNL_SPI_WriteFifoEnd (void)
 Stop read/write the ethernet controller FIFO.

Detailed Description

SPI interface API for KSZ8851SNL Ethernet controller.

Version:
4.0.0

License

(C) Copyright 2015 Silicon Labs, 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.


Define 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 void KSZ8851SNL_SPI_Receive ( int  numBytes,
uint8_t *  buffer 
) [static]

Receive a series of bytes over the spi link.

Parameters:
[in] numBytes the number of data bytes to be received
[in] buffer the destination buffer

Definition at line 115 of file ksz8851snl_spi.c.

Referenced by KSZ8851SNL_SPI_ReadFifo().

Here is the caller graph for this function:

static void KSZ8851SNL_SPI_SetChipSelect ( bool  enable  )  [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] value true will select the ksz8851snl chip false will deselect the ksz8851snl chip.

Definition at line 144 of file ksz8851snl_spi.c.

References ETH_CS_PIN, and ETH_CS_PORT.

Referenced by KSZ8851SNL_SPI_ReadFifo(), KSZ8851SNL_SPI_ReadRegister(), KSZ8851SNL_SPI_WriteFifoBegin(), KSZ8851SNL_SPI_WriteFifoEnd(), and KSZ8851SNL_SPI_WriteRegister().

Here is the caller graph for this function:

static void KSZ8851SNL_SPI_Transmit ( int  numBytes,
const uint8_t *  data 
) [static]

Transmits a series of bytes over the spi link.

Parameters:
[in] numBytes the number of data bytes to be transmitted
[in] data actual data to be transmitted

Definition at line 85 of file ksz8851snl_spi.c.

Referenced by KSZ8851SNL_SPI_ReadFifo(), KSZ8851SNL_SPI_WriteFifo(), KSZ8851SNL_SPI_WriteFifoBegin(), and KSZ8851SNL_SPI_WriteRegister().

Here is the caller graph for this function: