generated from LailaTheElf/rp2040_c
add driver for W5500
This commit is contained in:
40
src/w5500_rp.cpp
Normal file
40
src/w5500_rp.cpp
Normal file
@@ -0,0 +1,40 @@
|
||||
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
#include <wizchip_conf.h>
|
||||
#include "hardware/spi.h"
|
||||
#include <pico/stdlib.h>
|
||||
|
||||
#include "config.h"
|
||||
#include "w5500_rp.h"
|
||||
|
||||
void w5500_rp_spi_write_byte(uint8_t byte) {
|
||||
spi_write_blocking(W5500_SPI_DRIVER, &byte, 1);
|
||||
}
|
||||
uint8_t w5500_rp_spi_read_byte() {
|
||||
uint8_t byte;
|
||||
spi_read_blocking(W5500_SPI_DRIVER, 0, &byte, 1);
|
||||
return byte;
|
||||
}
|
||||
|
||||
void w5500_rp_spi_write_burst(uint8_t *buffer, uint16_t size) {
|
||||
spi_write_blocking(W5500_SPI_DRIVER, buffer, size);
|
||||
}
|
||||
void w5500_rp_spi_read_burst(uint8_t *buffer, uint16_t size) {
|
||||
uint8_t byte;
|
||||
spi_read_blocking(W5500_SPI_DRIVER, 0, buffer, size);
|
||||
}
|
||||
|
||||
void w5500_rp_spi_cs_select() {
|
||||
gpio_put(PIN_W5500_CS, 0);
|
||||
}
|
||||
void w5500_rp_spi_cs_deselect() {
|
||||
gpio_put(PIN_W5500_CS, 1);
|
||||
}
|
||||
|
||||
void w5500_rp_init() {
|
||||
reg_wizchip_spi_cbfunc(&w5500_rp_spi_read_byte, &w5500_rp_spi_write_byte);
|
||||
reg_wizchip_spiburst_cbfunc(&w5500_rp_spi_read_burst, &w5500_rp_spi_write_burst);
|
||||
reg_wizchip_cs_cbfunc(w5500_rp_spi_cs_select, w5500_rp_spi_cs_deselect);
|
||||
reg_wizchip_cris_cbfunc(NULL, NULL);
|
||||
}
|
||||
Reference in New Issue
Block a user