收藏官网首页
查看: 3995|回复: 0

[经验分享] 了解机智云GoKit3开发板及通讯过程

106

主题

107

帖子

7264

积分

论坛元老

Rank: 8Rank: 8

积分
7264
跳转到指定楼层
楼主
 楼主| 发表于 2023-7-20 17:31:44 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
免费使用STM32、APP自动代码生成工具
    gokit3是机智云开发的一款物联网开发板,主要由模组,拓展板和底板组成。
这篇文章,主要是想了解底板到拓展板的通讯过程,结构就简单过一下。
    esp8266模块通过两个双排19孔插排连接到拓展板,在PCB上标明了MCU连接方式和SOC连接方式。(MCU连接方式:ESP8266只作WIFI通讯,主要负责与其他单片机例如stm进行数据传输。SOC连接方式:ESP8266可独立工作,不仅负责WIFI通讯,还负责了外部传感器的控制)
我们可以从电路图看到MCU和SOC连接方式不同,插排的定义也不同,例如:SOC连接方式电机的pwmio由ESP8266控制,而MCU方式则是转接到底板由STM32控制。
拓展板和底板均使用了CP2102作为USB转串口进行数据通讯,无需使用usb转ttl。各个模块的UART0连接着CP2102作为串口使用。当然能不能直接使用此串口作为固件烧录,文档并没有说明,有待尝试。
    我们使用的Gokit3开发板,主要是使用MCU方式进行开发。ESP8266烧录的是机智云GAgent固件,Stm32则是烧录由设备生成的MCU代码。

    至此,简单介绍了开发板的结构,接下来我们讲一讲通讯过程。
机智云的Gokti3开发板,STM32负责数据获取和外设控制,由ESP8266负责进行与云端通讯。
所有数据通过UART进行传输,对于STM32来说,看着像是UART1,但是实际上是UART2,因为从代码可以看出UART2的波特率是9600与协议一致,而UART1是115200作为调试用。
使用串口工具看一下就知道了。
但是对于ESP8266,由于UART1被SPI占用,复用的话也只能作为调试信息输出使用。因此,实际连接的是ESP8266的UART0,从电路图上也可以看出。
现在我们知道了在电路层面上是通过串口进行数据传输的,那么代码层面上呢?

我们分别打开平台生成的STM32和ESP8266源码,虽然ESP8266的与agent固件不同,但大同小异。
首先是STM32的代码。
我们可以看出,数据发送由机智云编写的uartwirte发送,再经由hal层发送到uart2端口,最终发送给ESP8266接收。
数据接收则是由gizPutData函数处理
接下来我们看一看ESP8266的通讯代码

从此函数入手
转到了另一个函数
此函数包含在静态库里,具体的代码我们暂时无从得知。

再看另一个数据接收函数
非常明显,数据交给了PF_ReceiveDataformMCU函数处理,定位到此函数同样是一个静态库。
静态库我们无从得知具体的代码执行流程,那我们就无法在数据通讯的时候多一些自定义的功能吗?
其实不然,机智云的gagent固件也是遵循一定的协议开发的。
其中MCU协议就是我们要了解ESP8266内部数据处理需要的。

很可惜,这三份协议个人暂时无法获取到,只能从网络上找到一些蛛丝马迹。但是机智云还是为我们留下了后路,我们只要与机智云的商务联系,签约就有机会获得这三份协议,具体可以联系机智云咨询。



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表