【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 ...
随机推荐
- Kafka集群搭建与SpringBoot项目集成
本篇文章的目的是帮助Kafka初学者快速搭建一个Kafka集群,以及怎么在SpringBoot项目中使用Kafka. kafka集群环境包地址:https://pan.baidu.com/s/1Mar ...
- win32 - 将线程重定向到另一个函数(附带Suspend的解释)
Suspend: 挂起指定的线程 备注:不要永远挂起线程, 因为在Win32中,进程堆是线程安全的对象,并且由于在不访问堆的情况下很难在Win32中完成很多工作,因此在Win32中挂起线程极有可能使进 ...
- python中的泛型使用TypeVar
引入为什么需要TypeVar PEP484的作者希望借助typing模块引入类型提示,不改动语言的其它部分.通过精巧的元编程技术,让类 支持[]运算不成问题.但是方括号内的T变量必须在某处定义,否则要 ...
- centos7安装桌面-GNOME
CENTOS7安装桌面系统 GNOME桌面 # yum安装 # 更新已安装软件 yum upgrade -y # 安装额外yum源 yum install epel-release -y # 安装X ...
- zynq7000 I2C RTC 与 串口使用
RS485 串口 测试 硬件上2路串口,其中UART 1对应PS STD IN/OUT,UART 0对应RS485: 图 ‑1 RS485电路,自动转换输入.输出方向 可参考 https://blog ...
- 【Azure API 管理】APIM不能连接到 App Service (APIM cannot connect to APP service)
问题描述 APIM 无法正确连接到App Service,返回500错误: { "statusCode": 500, "message": "Inte ...
- 【Azure 应用服务】App Service多个部署槽(Slot)之间,设置Traffic百分比后,如何来判断请求是由那一个槽(Slot)来进行处理呢?
问题描述 当我们部署应用到App Service后,为了实现对生成的最小影响,通常是把新版本部署在一个预生产的槽中,然后进行验证.另一方面,为了进行A/B验证,需要把生成槽的流量,切入一部分到预生产槽 ...
- WPF 应用迁移到 Electron 框架过程记录
前一段时间我用 WPF 开发了一个查看 emoji 表情的小工具 https://github.com/he55/EmojiViewer ,由于最近我使用 macOS 系统比较多,我想能在 macOS ...
- ants - 目前开源最优的协程池
ants - 目前开源最优的协程池 目前我们的项目重度使用 ants 协程池,在开启一个 go 的时候并不是用 go 关键字,而是用一个封装的 go 函数来开启协程.框架底层,则是使用 ants 项目 ...
- 我为什么使用Linux做开发
系统选择 目前市面上主流的桌面操作系统在大多数人眼里只有Windows和MacOS,那为什么我没选择它们两呢? 首先,不选MacOS的原因,就是太贵.当然这是我的原因不是苹果的原因,我最早使用Linu ...