打印
[单片机芯片]

【CH32V307评估板测评】开发环境+MQTT网络测试

[复制链接]
651|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
#申请原创#
CH32V307开发板是去年买的,买了很长一段时间了,最近才想到拿出来测试一下子.

首先还是上图吧.
板子还是很威武的,全黑.

个人比较禧欢这个板子的, 因为符合本人对开发板的期待: 一就是自带调试器,省去了很多插线的工夫, 二就是资源开放度高. 基本上所有引脚都有排针排母.

最近几年买了很多开发板子, 当初买这块板子的原因就是想看看RISCV内核的一些特点, 但是一直也没有打开包装测试. 最近终於下决心测试了一把. 下面就是一些测试的过程记录.

首先这个芯片是WCH自己根据开源项目打造的RISCV内核的MCU. 比较难得的是还带上了FPU, 对标ARM的话大约Cortex M4F的水平了.

第一步就是下载开发工具:


有一个正式版本有一个社区版,暂时没有发现两者区别. 估计是正式版本商用的话要收费吧. 不过本人只是用来学习研究, 所以就直接正式版本了.
一路Next安装即可, 这是个Eclipse改来的IDE,大多数软件开发者很快就可以上手.


第二步就是下载开发板子相应的例程, 都在WCH官网上有.

第三步就是打开一个基础工程,LED,串口之类.测试一下子工程构建/下载的过程.

基本上不用什么配置,体验过程很顺畅.

下面就开始基于其中一个例子开始修改.

使用的例子是MQTT的客户端工程.

顺便说一句,CH32V307芯片上除了自带ETHMAC,还带一个10Mbps速率的PHY.在大多数工控场景,其实10Mbps够用了.


MQTT是一个IoT/工控场景常见的协议.
该协议有两个脚色:
1. Broker
类似于服务器, 作为一个中间人转发客户端之间的通信, 一般设定于车间或者边缘云端.
本文测试环境中使用开发机搭建了一个broker

2. Client
Client可以收可以发, 可以订阅. 本文测试环境中, 开发板作为一个Client,另外还有一个软件测试Client.

下面来安装测试的Broker:

这个页面中根据自己系统选择相应的软件.

本文的开发机器是Windows11, 基本上也是一路next.


准备一个简单的broker配置文件,因为想简单测试一下子,所以把认证关闭了.

listener 1883
allow_anonymous true
存为mosquitto_anonymous.conf


启动broker:
PS D:\Program Files\mosquitto> .\mosquitto.exe -c .\mosquitto_anonymous.conf -v
1694850426: mosquitto version 2.0.17 starting
1694850426: Config loaded from .\mosquitto_anonymous.conf.
1694850426: Opening ipv6 listen socket on port 1883.
1694850426: Opening ipv4 listen socket on port 1883.
1694850426: mosquitto version 2.0.17 running
起一个软件测试的订阅者Client:
PS D:\Program Files\mosquitto> .\mosquitto_sub -h localhost -t "topic/1"

再起一个测试的发布者Client发送一条消息:
PS D:\Program Files\mosquitto> .\mosquitto_pub -h 127.0.0.1 -t "topic/1" -m "abcd"
订阅者Client即可收到消息:
PS D:\Program Files\mosquitto> .\mosquitto_sub -h localhost -t "topic/1"
abcd
至此软件Broker,订阅者都已经配置好了.接下来就是连接开发板,配置固定的IP.
其中板子的IP:
u8 IPAddr[4] = { 192, 168, 1, 10 };                 //IP address
因此把开发机的IP也固定到这个网段:
主要代码都是使用官方例程中的MQTT代码,主循环里改了一点点:
 while(1) {
        /*Ethernet library main task function,
         * which needs to be called cyclically*/
        WCHNET_MainTask();
        /*Query the Ethernet global interrupt,
         * if there is an interrupt, call the global interrupt handler*/
        if(WCHNET_QueryGlobalInt()) {
            WCHNET_HandleGlobalInt();
        }

        if (publishValid == 1) {
            if(con_flag) {
                sprintf(payload_buffer, "%d 'C, %d mV, %d mV\n",
                        TempSensor_Volt_To_Temper(VoltTemp),
                        VoltRef,
                        VoltAin2);
                MQTT_Publish(pub_topic, pub_qos, payload_buffer);
            }

//            if(con_flag) MQTT_Pingreq();                                   //heartbeat packet

            publishValid = 0;
        }

        if(0 != g_sample_flag) {
            RawSampleValTemp = Get_ADC_Average(ADC_Channel_TempSensor, 4);
            RawSampleValTemp = Get_ConversionVal(RawSampleValTemp);
            VoltTemp = (RawSampleValTemp*3300/4096);

            RawSampleValRef = Get_ADC_Average(ADC_Channel_Vrefint, 4);
            RawSampleValRef = Get_ConversionVal(RawSampleValRef);
            VoltRef = (RawSampleValRef*3300/4096);

            RawSampleValAin2 = Get_ADC_Average(ADC_Channel_2, 4);
            RawSampleValAin2 = Get_ConversionVal(RawSampleValAin2);
            VoltAin2 = (RawSampleValAin2*3300/4096);

            printf( "Raw Sample:%04d %04d %04d\r\n", RawSampleValTemp, RawSampleValRef, RawSampleValAin2);

            g_sample_flag = 0;
        }
    }
另外要提的一点就是官方例程中的TCPIP协议栈没有开源,是通过静态库的形式提供的.

实验效果:

开发版端打印:
MQTT Test
SystemClk:96000000
ChipID:30700518
net version:18
mac addr:38 3b 26 62 30 1
WCHNET_LibInit Success
CalibrattionValue:7
PHY Link Success
34 bytes uploaded!
TCP Connect Success
CONNACK
14 bytes uploaded!
SUBACK
Raw Sample:1741 1491 0007
Raw Sample:1741 1491 0007
Raw Sample:1741 1491 0007
Raw Sample:1741 1491 0007
32 bytes uploaded!
Raw Sample:1740 1491 0007
payload len: 21
服务端Broker打印:
PS D:\Program Files\mosquitto> .\mosquitto_sub -h localhost -t "topic/1"
abcd
22 'C, 1201 mV, 5 mV

22 'C, 1201 mV, 5 mV

23 'C, 1201 mV, 5 mV

23 'C, 1201 mV, 5 mV
测试代码都在这个仓库:
git@gitee.com:zhanzr/CH32V307EVT.git

谢谢阅读.

使用特权

评论回复
沙发
timfordlare| | 2023-10-5 18:55 | 只看该作者
在研究CH32V307单片机的MQTT网络测试啊。

使用特权

评论回复
板凳
biechedan| | 2023-10-5 19:34 | 只看该作者
需要安装一个支持MQTT协议的物联网平台,如阿里云物联网平台、腾讯云物联网平台等。你还需要安装一个IDE,如Keil MDK-ARM,用于编写和烧录程序。

使用特权

评论回复
地板
mollylawrence| | 2023-10-5 19:49 | 只看该作者
在 CH32V307 单片机上,您需要使用 MQTT 客户端库(如 Paho MQTT)初始化 MQTT 客户端。首先,您需要设置 MQTT 服务器的 URL、端口号、用户名和密码。然后,初始化 MQTT 客户端并连接到服务器。

使用特权

评论回复
5
kkzz| | 2023-10-5 19:54 | 只看该作者
请参考CH32V307的技术文档、MQTT库的文档以及MQTT协议的规范

使用特权

评论回复
6
fengm| | 2023-10-5 20:03 | 只看该作者
MQTT协议和服务器相关知识的学习和掌握程度,需要了解协议规范和使用方法。

使用特权

评论回复
7
uptown| | 2023-10-5 20:15 | 只看该作者
在程序中,可以实现发布和订阅主题的功能。发布主题时,需要指定主题名称和要发布的消息内容;订阅主题时,需要指定主题名称和一个回调函数,用于处理接收到的消息。

使用特权

评论回复
8
youtome| | 2023-10-5 20:44 | 只看该作者
使用MQTT客户端发布消息到指定的主题。你可以发送自定义的消息内容,以便在测试过程中进行验证。

使用特权

评论回复
9
robertesth| | 2023-10-5 21:15 | 只看该作者
单片机的处理能力和资源限制,需要合理安排程序结构和资源分配。

使用特权

评论回复
10
earlmax| | 2023-10-5 21:45 | 只看该作者
在MQTT服务器上编写MQTT服务器端程序,用于处理客户端的连接请求和发布消息。具体实现方法可以参考相关的MQTT服务器端库或文档。

使用特权

评论回复
11
biechedan| | 2023-10-5 22:14 | 只看该作者
使用MQTT库提供的函数创建MQTT客户端,设置客户端参数,例如客户端ID、服务器地址、端口号等。

使用特权

评论回复
12
jackcat| | 2023-10-6 22:56 | 只看该作者
使用选定的MQTT库,初始化MQTT客户端。这通常涉及设置MQTT服务器的地址、端口和其他连接参数,以及设置回调函数来处理接收到的消息。

使用特权

评论回复
13
kmzuaz| | 2023-10-8 13:40 | 只看该作者
在单片机上安装MQTT库,例如uMQTT库。安装完成后,可以使用库提供的函数来实现MQTT网络测试。

使用特权

评论回复
14
geraldbetty| | 2023-10-8 13:48 | 只看该作者
使用CH32V307单片机支持的编程语言和开发环境,编写一个用于实现MQTT网络测试的程序。程序中需要包含MQTT库和相关的网络库。

使用特权

评论回复
15
pentruman| | 2023-10-8 13:55 | 只看该作者
在单片机中编写MQTT客户端程序,用于连接MQTT服务器并订阅相关主题。具体实现方法可以参考相关的MQTT客户端库或文档。

使用特权

评论回复
16
1988020566| | 2023-10-8 14:08 | 只看该作者
选择适合自己需求的MQTT协议栈,比如Eclipse Paho MQTT C、TinCanTools MQTT协议栈等。

使用特权

评论回复
17
maqianqu| | 2023-10-8 14:36 | 只看该作者
选择适合CH32V307单片机的MQTT库。你可以搜索适用于该单片机的MQTT库或者参考厂商提供的支持文档和示例代码。

使用特权

评论回复
18
mollylawrence| | 2023-10-8 14:52 | 只看该作者
在进行MQTT网络测试时,需要确保单片机和MQTT服务器之间的通信稳定,并且MQTT服务器的负载均衡、安全性等方面的问题也需要得到充分的考虑和处理。

使用特权

评论回复
19
pmp| | 2023-10-8 15:02 | 只看该作者
当 CH32V307 单片机接收到 MQTT 服务器发送的消息时,需要使用 MQTT 客户端库处理消息。处理消息时,您可以读取消息的主题和内容,并根据需要进行相应的处理。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:每天都進步

91

主题

1011

帖子

34

粉丝