当前位置: 首页 > news >正文

esp32开发与应用(esp和wch芯片的配合)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

前面我们写过,esp32可以通过spi的方式,和w5500模块进行通信。但是这样的话,其实浪费了一个spi口,有一点可惜。不仅如此,如果esp32需要通过usb和pc沟通的话,还需要esp32-s3新品,这样其实也不是很方便。这个时候就想,是不是可以通过esp32外扩一个芯片的方式,来解决usb通信、网络互联、蓝牙的问题。这个时候就想到了wch芯片。

1、部分esp芯片不带蓝牙

比如8266,就不带蓝牙功能。但是就目前场景来说,很多都是有蓝牙需求的。

2、wch支持usb、有线网口和蓝牙

wch本身就是专注在连接器方向,usb、网口和蓝牙这些部分都是esp所需要的,特别是前面两个。所以如果有这方面的需求,其实可以通过esp32+wch的方式来解决。

3、wch价格不贵

这一点非常重要。很多时候,如果一个芯片不错,但是价格不厚道,这种情况其实不适合大规模商用。但是性价比高的话,就可以去试一试。

4、wch开发不难

大部分wch都是依赖于riscv处理器,开发的ide不是keil,而是mounriver。但实际代码结构和使用体验几乎和keil一模一样,非常方便。烧录的时候,也需要一个烧录器,一般称之为wch-link,当然也可以用来调试,和swd接口非常类似。有了mounriver和烧录器,基本就可以进行wch开发了,不复杂。

5、推荐一个wch的mcu

个人用的比较多的mcu,还是偏向于usb和网口的,比如ch32v307系列,就具有这方面的优势。搭建好开发环境,购买wch-link,同时采购一两个开发板。这样就可以进行wch的开发流程了。

6、网络部分代码是闭源的

之前谈到的ch32v307内部,内部集成了eth phy,但是这部分都是闭源的。我们看不到里面的代码,只看到头文件和.a文件,但不妨碍我们使用。而且,本身厂家提供了很多的demo code,稍微改改就可以用起来。

7、tcp server的demo

厂家有一个tcp client的demo,可以找到后,修改下demo,即修改下ip和port,

u8 MACAddr[6]; //MAC address u8 IPAddr[4] = {192, 168, 0, 10}; //IP address u8 GWIPAddr[4] = {192, 168, 0, 1}; //Gateway IP address u8 IPMask[4] = {255, 255, 255, 0}; //subnet mask u8 DESIP[4] = {192, 168, 0, 240}; //destination IP address u16 desport = 10000; //destination port u16 srcport = 10000; //source port

编译烧录后,可以pc端也用python写一个server,如下所示。如果觉得麻烦,用ai写也可以,写完就可以launch一下。这个case需要server先发送,写的时候注意下即可。

# -*- coding: utf-8 -*- import socket import threading HOST = "0.0.0.0" PORT = 10000 cnt = 0; def handle_client(conn, addr): global cnt print "[NEW CONNECT]", addr try: while True: cnt += 1 reply = "ACK: " + str(cnt) conn.sendall(reply) data = conn.recv(1024) if not data: print "[DISCONNECT]", addr break # Python2: data already str (bytes) print "[RX %s]" % (addr,), data except Exception as e: print "[ERROR %s]" % (addr,), e finally: conn.close() def main(): server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) server.bind((HOST, PORT)) server.listen(5) print "TCP Server running on %s:%d" % (HOST, PORT) while True: conn, addr = server.accept() t = threading.Thread(target=handle_client, args=(conn, addr)) t.setDaemon(True) t.start() if __name__ == "__main__": main()

启动server后,重启板子,看看是不是可以ping通板子,再看看有没有数据通信。没问题的话,以后其实就可以用ch32v307进行网络通信了。usb接口也是如此,一个道理。

http://www.jsqmd.com/news/1090615/

相关文章:

  • 3种方案彻底解决海外镜像拉取失败:DaoCloud镜像加速服务深度实测
  • 终极游戏存档备份指南:为什么Ludusavi v0.29.0是玩家的必备工具?
  • 暗黑3战斗自动化革命:D3KeyHelper如何让重复操作成为历史
  • AFE5808A超声模拟前端芯片ADC与VCA寄存器配置实战指南
  • OpCore-Simplify:三分钟完成黑苹果EFI配置的终极自动化工具
  • 【小白也能轻松玩转龙虾】虾壳云一键部署私人助理,个人电脑搭建 OpenClaw v2.7.9 智能程序(附最新安装包)
  • 2026年竹笋批发供应商怎么选?长期稳定供货看这几项
  • Nginx从入门到精通:一文搞懂这款高性能Web服务器的核心原理与实战配置
  • Java的JNI调用本地方法:性能优化与内存管理
  • 为什么选择OmenSuperHub?一个免费开源工具彻底解决惠普游戏本性能限制问题
  • 完成发射班的焊接及调试
  • 深入 Claude Code 源码(五):MCP 协议——Claude Code 连接外部世界的方式
  • 【Flutter零基础入门 | Day03】常用功能与滚动组件
  • 【claude code实践】 写好第一条提示词:用清晰目标减少返工
  • 鸿蒙 ArkTS 实战:Study Seat Log 从状态建模到交互闭环完整解析
  • 安全组网建设怎么选
  • 终极指南:如何在Mac上禁用Turbo Boost以降低温度和风扇噪音
  • Burp Suite Repeater实战指南:HTTP请求精细调试与渗透测试技巧
  • 【RuoYi-Vue-Plus】源码探秘:OSS配置从数据库到Redis的缓存同步机制
  • MSP430 Timer_A定时器深度解析:从PWM生成到捕获比较实战
  • 推荐系统基础算法简介
  • Win11Debloat:免费快速的Windows系统优化终极方案
  • ChatGPT Plus订阅取消后仍扣费?:2024年Q2真实案例拆解——Stripe账单延迟同步、OpenAI后台状态不同步、第三方渠道(如微软商店)独立续费链路揭秘
  • 2026嵌入式培训机构怎么选?全国机构对比了7家之后,我为什么只推荐金橙智能
  • Embedding Model(嵌入模型)完整讲解:句子转向量全过程
  • Qt 铁甲阅读器-搜索
  • 魔兽世界玩家必备:免费API查询与智能宏生成工具完全指南
  • Go语言的sync.Map缓存使用
  • AI应用开发平台排行榜:企业选型必看指南
  • 深度解读阿里云百炼 HappyHorse 1.1 视频生成大模型——能力解析与 Python/Java 工程化接入实战