Files
picomap/w6300/wizchip_spi.cpp

53 lines
1.2 KiB
C++

#include <cstdio>
#include "pico/stdlib.h"
#include "pico/critical_section.h"
#include "wizchip_conf.h"
#include "wizchip_spi.h"
#include "wizchip_qspi_pio.h"
static critical_section_t g_cris_sec;
void wizchip_cris_enter() {
critical_section_enter_blocking(&g_cris_sec);
}
void wizchip_cris_exit() {
critical_section_exit(&g_cris_sec);
}
void wizchip_reset() {
gpio_init(PIN_RST);
gpio_set_dir(PIN_RST, GPIO_OUT);
gpio_put(PIN_RST, 0);
sleep_ms(100);
gpio_put(PIN_RST, 1);
sleep_ms(100);
}
void wizchip_spi_initialize() {
wizchip_pio_init();
}
void wizchip_cris_initialize() {
critical_section_init(&g_cris_sec);
}
void wizchip_initialize() {
wizchip_pio_frame_end();
uint8_t memsize[2][8] = {{4, 4, 4, 4, 4, 4, 4, 4}, {4, 4, 4, 4, 4, 4, 4, 4}};
ctlwizchip(CW_INIT_WIZCHIP, (void *)memsize);
}
void wizchip_check() {
if (getCIDR() != 0x6300) {
printf("W6300 ACCESS ERR: CIDR = 0x%04x\n", getCIDR());
while (1);
}
}
void network_initialize(wiz_NetInfo net_info) {
uint8_t syslock = SYS_NET_LOCK;
ctlwizchip(CW_SYS_UNLOCK, &syslock);
ctlnetwork(CN_SET_NETINFO, (void *)&net_info);
}