当前位置:网站首页>CH32V307 LwIP移植使用
CH32V307 LwIP移植使用
2022-08-05 05:15:00 【偶可不乖呢】
CH32V307是沁恒推出的通用单片机系列,功能很强,集成片上的10M以太网PHY芯片,官方提供的以太网并没有公开源码,只是以一个SOCKET以太网库的形式提供。目前也没有多少移植LWIP的例程公布。
LWIP版本为2.1.3,contrib包版本依旧为2.1.0。
本移植例程使用了raw api方式,移植过程过于复杂,所以直接放GITHUB下载链接
lwip-study-examples
https://github.com/smartmx/lwip-study-examples
例程中修改了官方提供的my_eth_driver.c,改用lwip_task.c。
其中使用了tiny-macro-os进行任务调度,可以实现异步处理以太网,把lwip作为一个线程在运行。
tiny-macro-os
https://github.com/smartmx/tiny-macro-os自行修改时需要注意tiny-macro-os的任务调度api。
虽然手册上说CH32V307支持硬件校验和,但目前本人还未使用成功,所以不启用,使用软件计算。
2022年4月22日更新:可以实现硬件校验和。
网口灯是需要软件实现的,本人目前还没做处理,所以网口灯不亮。
2022年4月23日更新:增加网口灯,修改了lwip中的timeouts.c,增加网口灯的常驻定时器。
我自己手上的CH32V307的EVT电路板版本为CH32V307V-R1-1V0,该板子上网口灯并未连线,只引出来插针ELED1和ELED2,需要用杜邦线接上。例程里使用的是PB8和PB9引脚作为网口灯控制引脚。
移植例程支持DHCP和自己设置IP。通过lwipopt.h更改,设置LWIP_DHCP为1即启用dhcp服务,自动获取ip。

如果LWIP_DHCP设置为0,默认IP地址修改在lwip_task.c中:

例程中带有一个野火编写的tcpecho.c提供的tcp服务器和lwip提供的lwiperf.c,用于测试。
测试如下图:

2022年4月22日更新:速度达到双向1m/s,基本跑满10M PHY的速度。
jperf测试结果如下:

边栏推荐
猜你喜欢

MSRA提出学习实例和分布式视觉表示的极端掩蔽模型ExtreMA

BFC详解(Block Formmating Context)
![[After a 12] No record for a whole week](/img/05/df9aeb04274e308e1341020f836821.jpg)
[After a 12] No record for a whole week

SQL(1) - Add, delete, modify and search
![[Go through 10] sklearn usage record](/img/70/60783c7d16000c6e9d753d8db9a330.png)
[Go through 10] sklearn usage record

Calling Matlab configuration in pycharm: No module named 'matlab.engine'; 'matlab' is not a package

My 的第一篇博客!!!

CVPR best paper winner Huang Gao's team from Tsinghua University presented the first dynamic network review

Thread handler handle IntentServvice handlerThread

服务网格istio 1.12.x安装
随机推荐
2022年中总结关键词:裁员、年终奖、晋升、涨薪、疫情
AIDL详解
Flink Distributed Cache 分布式缓存
flink中文文档-目录v1.4
HQL statement execution process
解决端口占用问题
CAP+BASE
MySql之索引
【论文精读】R-CNN 之预测框回归(Bounding box regression)问题详述
The University of Göttingen proposed CLIPSeg, a model that can perform three segmentation tasks at the same time
如何编写一个优雅的Shell脚本(二)
el-pagination左右箭头替换成文字上一页和下一页
[Go through 4] 09-10_Classic network analysis
读论文 - Unpaired Portrait Drawing Generation via Asymmetric Cycle Mapping
flink部署操作-flink on yarn集群安装部署
Tensorflow steps on the pit notes and records various errors and solutions
flink on yarn 集群模式启动报错及解决方案汇总
学习总结week2_5
Thread handler handle IntentServvice handlerThread
es6迭代协议