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"
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. |
SPI interface API for KSZ8851SNL Ethernet controller.
(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 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().
static void KSZ8851SNL_SPI_Receive | ( | int | numBytes, | |
uint8_t * | buffer | |||
) | [static] |
Receive a series of bytes over the spi link.
[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().
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.
[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().
static void KSZ8851SNL_SPI_Transmit | ( | int | numBytes, | |
const uint8_t * | data | |||
) | [static] |
Transmits a series of bytes over the spi link.
[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().