add driver for W5500

This commit is contained in:
2025-11-25 12:54:13 +01:00
parent 9e771ba4fc
commit 6a8cab04bf
8 changed files with 120 additions and 26 deletions

40
src/w5500_rp.cpp Normal file
View 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);
}