1.电路配置
- 在 SPI TX 和 RX 之间连接一个 470 欧姆的电阻。
2. 硬件配置
1) 使用 wiznet 以太网 HAT 连接到 pico 板。
2) 使用 W5100S-EVB-Pico 板进行配置。
3. SPI信号检查
4.代码
源网址:https ://github.com/TeddyWiz/RP2040-HAT-C_test.git
1)GPIO初始化
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写函数
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 读取功能
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)更改wizchip_write、read函数
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.结果
环回(echo server)测试成功
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !