【WCH以太网接口系列芯片】STM32+CH390+Lwip协议栈简单应用测试
本篇文章基于STM32F103和CH390H芯片进行例程移植及相关注意事项,简单验证TCP\UDP\Ping基础功能。
硬件:STM32F103开发板+沁恒CH390H的评估版图一示,SPI使用接口为:INT->PA0,RST->PA1,CS->PA2,SCK->PA5,MISO->PA6,MOSI->PA7,WOL->PA8。

图一
软件移植:采用的沁恒官方提供的CH390EVT中的Lwip例程进行移植,主要为CH390的驱动和Lwip协议栈部分,移植过程中注意有一个文件名为slipif.c文件会在编译过程中报错(图二),该文件可以删除,正常情况下用不到,如果需要可以重新自定义下。

图二
移植完成后,注意main函数中lwip初始化函数,IP地址为192.168.1.120,子网掩码255.255.255.0,网关为192.168.1.1。
void init_lwip_netif(void)
{
struct ip4_addr ipaddr, netmask, gateway; IP4_ADDR(&ipaddr, 192, 168, 1, 120);
IP4_ADDR(&netmask, 255, 255, 255, 0);
IP4_ADDR(&gateway, 192, 168, 1, 1);
/* Initialize the LwIP stack without RTOS */
lwip_init();
/* add the network interface (IPv4/IPv6) without RTOS */
netif_add(&ch390_netif, &ipaddr, &netmask, &gateway, NULL,
ðernetif_init, ðernet_input); /* Registers the default network interface */
netif_set_default(&ch390_netif);
netif_set_up(&ch390_netif);
}
------------------------------------------------------------------------------------------------------------------------------------------------
一、Ping测试:
CH390正常初始化后,用网线将CH390和电脑直连,PHY连接正常后D1灯会亮起,若未正常初始化评估版灯微亮,检查SPI接口时序和打印信息是否异常,图三打印信息。

图三
使用电脑CMD命令,ping192.168.1.120地址,图四示:

图四
正常ping通,说明网络连接正常,若出现ping不通,但网口灯已经常亮,建议关闭电脑防火墙,重新复位测试。
------------------------------------------------------------------------------------------------------------------------------------------------
二、TCP连接测试
(1)TCP Client:main函数注意修改tcp_clinet_int函数中的服务器IP地址,即电脑的IP地址为192.168.1.21,服务器端口为1000,本地端口是随机的。
void tcp_client_init(void)
{
ip4_addr_t server_ip;
IP4_ADDR(&server_ip, 192, 168, 1, 21); tcp_client_pcb = tcp_new(); tcp_connect(tcp_client_pcb, (const ip_addr_t *)&server_ip,
1000, tcp_client_connected);
tcp_err(tcp_client_pcb, tcp_client_error);
}
采用网络测试工具建立TCP服务器,注意IP地址和端口号,建立成功后,会建立连接。程序中是回环测试,通过软件向CH390发送数据后,会进行数据回传,图五示。

图五
(2)TCP Server:注意本地端口为2300,图五示,创建一个TCP客户端连接,目标IP为192.168.1.120,目标端口为2300。
void tcp_server_init(void)
{
tcp_server_pcb = tcp_new_ip_type(IPADDR_TYPE_ANY);
tcp_bind(tcp_server_pcb, IP_ANY_TYPE, 2300);
tcp_server_pcb = tcp_listen(tcp_server_pcb);
tcp_accept(tcp_server_pcb, tcp_server_accept);
}

------------------------------------------------------------------------------------------------------------------------------------------------
三、UDP连接测试
UDP模式中:注意本地端口为2300,对端UDP端口为1000。
void udpecho_init(void)
{
struct udp_pcb *udp_echo_pcb;
udp_echo_pcb = udp_new(); udp_bind(udp_echo_pcb, IP_ADDR_ANY, 2300);
udp_connect(udp_echo_pcb, IP_ADDR_ANY, 1000);
udp_recv(udp_echo_pcb, udpecho_recv, NULL);
}
通过软件建立UDP连接,图六示,注意目标端口和本地端口是否和程序设置对应。

以上为STM32+CH390H的应用测试,代码自取连接:https://files.cnblogs.com/files/blogs/805237/CH390.rar?t=1712129908&download=true
【WCH以太网接口系列芯片】STM32+CH390+Lwip协议栈简单应用测试的更多相关文章
- STM32系列芯片命名规范
1.STM32的基础知识 STM32是意法半导体公司,基于ARM Cortex®-M0,M0+,M3, M4和M7内核生产的系列通用MCU.截止当前时间为止(20190515),STM32有STM32 ...
- STM32入门系列-学习STM32要掌握的内容
STM32芯片架构 STM32F103系列芯片的系统架构如下: STM32芯片基于ARM公司的Cortex-M3内核,由ST公司设计生产,内核与总线矩阵之间有I(指令).S(系统).D(数据)三条信号 ...
- stm32使用LWIP实现DHCP客户端
LWIP是一款开源的嵌入式网络协议栈,支持的功能很多,而且能在多任务环境下和单任务裸机环境下跑,今天说说他的移植过程,芯片为STM32,网卡为ENC28J60,无操作系统 首先下载LWIP的源代码,我 ...
- 以太网接口TCP/IP协议介绍,说的很容易懂了
以太网接口TCP/IP协议介绍,说的很容易懂了 TCP/IP协议,或称为TCP/IP协议栈,或互联网协议系列. TCP/IP协议栈(按TCP/IP参考模型划分) 应用层 FTP SMTP HTT ...
- [转帖]你不曾见过的国产CPU:可能是最全的龙芯系列芯片家谱(下)
你不曾见过的国产CPU:可能是最全的龙芯系列芯片家谱(下) https://www.ijiwei.com/html/news/newsdetail?source=pc&news_id=7177 ...
- 海思3516系列芯片SPI速率慢问题深入分析与优化(基于PL022 SPI 控制器)
海思3516系列芯片SPI速率慢问题深入分析与优化(基于PL022 SPI 控制器) 我在某个海思主控的项目中需要使用SPI接口来驱动一块液晶屏,液晶屏主控为 st7789,分辨率 240x240,图 ...
- 芯片下载相关-CH32系列芯片下载方式汇总及教程
一.CH32Fx系列芯片下载 1.ISP下载: 2.SWD下载 3.脱机烧录器下载: 二.CH32Vx系列芯片下载 1.ISP下载: 2.SWD下载: 3.脱机烧录器下载: 4.CH32V003下载注 ...
- 爱特梅尔ATMEL全系列芯片解密单片机破解
爱特梅尔ATMEL全系列芯片解密单片机破解 ATMEL芯片介绍: ATMEL公司为全球性的业界领先企业,致力于设计和制造各类微控制器.电容式触摸解决方案.先进逻辑.混合信号.非易失性存储器和射频 (R ...
- 在keil 4中添加stc系列芯片的方法--【sky原创】
在keil 4中添加stc系列芯片的方法: 1.从官网下载uv3.cdb的文件网址是:http://www.stcmcu.com/ 2.下载好后把uv3.cdb文件改成STC.cdb:3. 然后将[S ...
- c#中常用集合类和集合接口之接口系列【转】
常用集合接口系列:http://www.cnblogs.com/fengxiaojiu/p/7997704.html 常用集合类系列:http://www.cnblogs.com/fengxiaoji ...
随机推荐
- vue+jsPlumb制成的流程图项目
本项目参考:https://github.com/wangduanduan/visual-ivr 主页面如下:
- 深入理解Go语言(08):sync.WaitGroup源码分析
一.sync.WaitGroup简介 1.1 sync.WaitGroup 解决了什么问题 在编程的时候,有时遇到一个大的任务,为了提高计算速度,会用到并发程序,把一个大的任务拆分成几个小的独立的任务 ...
- 【Azure Web Job】Azure Web Job执行Powershell脚本报错 The term 'Select-AzContext' is not recognized as the name
问题描述 Azure Web Job执行Powershell脚本报错 Select-AzContext : The term 'Select-AzContext' is not recognized ...
- 【Azure API 管理】APIM添加Log-to-eventhub的策略后,一些相关APIM与Event Hub的问题
问题描述 1) APIM 到Event Hub 写入日志是否有数量限制,比如每秒最大写入数量: 2) 是否可以在同一个APIM配置多个Event Hub,如果可以该APIM写入日志的峰值是 ...
- nmcli命令详解(创建热点,连接wifi,管理连接等)
目录 简述 语法 比较有用的选项(OPTION) 对象 general对象(常规信息) 用途 语法 networking对象(整个网络) 用途 语法 命令示例 radio对象(无线开关) 用途 语法 ...
- 2023 年值得一读的技术文章 | NebulaGraph 技术社区
在之前的产品篇,我们了解到了 NebulaGraph 内核及周边工具在 2023 年经历了什么样的变化.伴随着这些特性的变更和上线,在[文章]博客分类中,一篇篇的博文记录下了这些功能背后的设计思考和研 ...
- Java 对象数组题目 + 改进(封装方法)
1 /** 2 * 3 * @Description 4 * @author Bytezero·zhenglei! Email:420498246@qq.com 5 * @version 6 * @d ...
- Codeforces Round 926 (Div. 2)(A~D)
目录 A B C D A 输出最大值减最小值,或者排序算一下答案 #include <bits/stdc++.h> #define int long long #define rep(i, ...
- 为什么defineProps宏函数不需要从vue中import导入?
前言 我们每天写vue代码时都在用defineProps,但是你有没有思考过下面这些问题.为什么defineProps不需要import导入?为什么不能在非setup顶层使用defineProps?d ...
- Apollo3 Blue SoC 和 Apollo3 Blue Plus SoC的区别
一 芯片简介 1.简介 Apollo3 Blue系列SoC解决方案代表了超低功耗设计的巨大飞跃,其运行模式和睡眠模式下的功耗数值均十分出色,并且具有高性能的处理引擎. Apollo3Blue器件提供了 ...