1. Circuit configuration
- Connect a 470-ohm resistor between the SPI TX and RX.
2. Hardware Configuration
1) Connect to the pico board using wiznet ethernet HAT.
2) Configured using the W5100S-EVB-Pico board.
3. SPI Signal Check
4. code
source url : https://github.com/TeddyWiz/RP2040-HAT-C_test.git
1) GPIO init
uint8_t wizchip_gpio_init(void)
{
gpio_init(PIN_SCK);
gpio_init(PIN_GPIO_SPI_TEST);
gpio_init(PIN_CS);
gpio_init(PIN_MOSI);
gpio_init(PIN_MISO);
gpio_set_dir(PIN_SCK, GPIO_OUT);
gpio_set_dir(PIN_CS, GPIO_OUT);
gpio_set_dir(PIN_MOSI, GPIO_OUT);
gpio_set_dir(PIN_GPIO_SPI_TEST, GPIO_OUT);
gpio_set_dir(PIN_MISO, GPIO_IN);
gpio_pull_up(PIN_MISO);
gpio_put(PIN_CS, 1);
gpio_put(PIN_SCK, 0);
gpio_put(PIN_GPIO_SPI_TEST, 0);
sleep_ms(100);
}
2) SPI Write Function
uint8_t gpio_spi_write(uint8_t send_data)
{
int i = 0;
gpio_set_dir(PIN_MOSI, GPIO_OUT);
gpio_pull_down(PIN_MOSI);
sleep_us(10);
for(i= 7; i>=0; i--)
{
gpio_put(PIN_SCK, 0);
gpio_put(PIN_MOSI, (send_data >> i) & 0x01);
sleep_us(8);
gpio_put(PIN_SCK, 1);
sleep_us(8);
}
gpio_put(PIN_SCK, 0);
sleep_us(10);
return 0;
}
3) SPI Read Function
uint8_t gpio_spi_read(void)
{
int i = 0;
uint8_t recv_data = 0, recv_bit = 0;
gpio_set_dir(PIN_MOSI, GPIO_IN);
gpio_pull_up(PIN_MOSI);
sleep_us(10);
sleep_us(10);
sleep_us(10);
gpio_get(PIN_MOSI);
for(i=7; i>=0; i--)
{
gpio_put(PIN_SCK, 0);
sleep_us(6);
recv_bit = gpio_get(PIN_MOSI);
recv_data = recv_data | ((recv_bit & 0x01) << i);
sleep_us(2);
gpio_put(PIN_SCK, 1);
sleep_us(8);
}
gpio_put(PIN_GPIO_SPI_TEST, 0);
gpio_put(PIN_SCK, 0);
sleep_us(10);
return recv_data;
}
4) change wizchip_write, read function
static uint8_t wizchip_read(void)
{
uint8_t rx_data = 0;
uint8_t tx_data = 0xFF;
//spi_read_blocking(SPI_PORT, tx_data, &rx_data, 1);
sleep_us(10);
rx_data = gpio_spi_read();
sleep_us(10);
sleep_us(10);
return rx_data;
}
static void wizchip_write(uint8_t tx_data)
{
//spi_write_blocking(SPI_PORT, &tx_data, 1);
sleep_us(10);
gpio_spi_write(tx_data);
}
5. Result
loop back(echo server) test success
Comments
Please log in or sign up to comment.