【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 ...
随机推荐
- C++ 使用 UTF8 BOM 替换 UTF8 文件
void Utf8ToUtf8Bom(const wchar_t* filename) { std::ifstream infile; std::string strline; std::string ...
- SpringBoot事务注解@Transactional 事物回滚、手动回滚事物
处理springboot 下提交事务异常,数据库没有回滚的问题. spring的文档中说道,spring声明式事务管理默认对非检查型异常和运行时异常进行事务回滚,而对检查型异常则不进行回滚操作. 什么 ...
- 如何在矩池云使用 Poetry 管理项目环境
官网介绍:Poetry is a tool for dependency management and packaging in Python. It allows you to declare th ...
- DataGear 制作支持表单交互和多图表联动的数据可视化看板
对于数据可视化,有时需要根据用户输入的查询条件展示限定范围的数据图表,DataGear的看板表单功能可以快速方便地实现此类需求. 下面的看板示例,包含一个柱状图.一个饼图和一个地图,用户可以通过看板表 ...
- 【Azure Service Bus】使用Spring Cloud integration示例代码,为多个 Service Bus的连接使用 ConnectionString 方式
问题描述 查看Service Bus的Java示例代码,发现使用Spring Cloud Integration,配置 Application.yaml 可以连接到两个Service Bus. 但代码 ...
- C#/.NET/.NET Core优秀项目和框架2024年2月简报
前言 公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的介绍.功能特点.使用方式以及部分功能截图 ...
- hadoop 3.3.5伪分布式集群部署以及遇到的问题解决
hadoop包下载 https://archive.apache.org/dist/hadoop/common/ 安装好jdk并配置环境变量 下载hadoop压缩包并放至 /data/hadoop目录 ...
- CPNtools协议建模安全分析---实例变迁标记(五)
之前的说了库所的标记,现在我们开始加讲变迁标记 1.描述变迁的标记有四种类型,分别是变迁的标记,门卫的标记,世间的标记,代码片段的标记. 咋变迁中限制更严格的输入token,其中Code Segeme ...
- 网络流与各种建模(I)
网络流与各种建模(I) 网络流基础 这里默认读者学习过网络流和MCMF,这里仅作复习 网络流解决的问题是给一个源点和汇点,每个边有最大流量,最大化从源点放水到汇点的速率. 网络流的时间复杂度是 \(O ...
- Servlet中访问路径配置为/*时,使用请求转发造成内存溢出
一.问题由来 最近在测试Servlet的请求转发功能,准备抽取一个公共的PageJumpTestServlet,用来做页面跳转功能. 这样不用每次在测试的时候,都单独写一个Servlet用来做页面跳转 ...