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

[经验分享] MCU代码自动生成之 MSP430平台的移植

562

主题

1222

帖子

8133

积分

版主

Rank: 7Rank: 7Rank: 7

积分
8133
跳转到指定楼层
楼主
发表于 2017-4-19 11:36:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注册成为机智云开发者,手机加虚拟设备快速开发
本帖最后由 Genius 于 2017-4-19 14:02 编辑

通用平台版代码移植说明1.文件介绍
重要文件解读:
  • gizwits_product.c
    该文件为产品相关处理函数,如gizwitsEventProcess()。
  • gizwits_product.h
    该文件为gizwits_product.c的头文件,如HARDWARE_VERSION、SOFTWARE_VERSION。
  • gizwits_protocol.c
    该文件为SDK API接口函数定义文件。
  • gizwits_protocol.h
    该文件为gizwits_protocol.c对应头文件,相关API的接口**均在此文件中。
  • 其他文件
    a) User/main.c
    MCU程序入口函数所在文件,入口函数为main(void)。

2.API介绍
· void giz witsInit (void)
gizwits协议初始化接口。
用户调用该接口可以完成Gizwits协议相关初始化(包括协议相关定时器、串口的初始化)。
· void gizwitsSetMode (uint8_t mode)
参数mode[in]:仅支持0,1和2,其他数据无效。
参数为0,恢复模组出厂配置接口,调用会清空所有配置参数,恢复到出厂默认配置。
参数为1或2,配置模式切换接口,支持SoftAP和AirLink模式。参数为1时配置模组进入SoftAp模式,参数为2配置模组进入AirLink模式。
· void gizwitsHandle(dataPoint_t *dataPoint)
参数dataPoint[in]:用户设备数据点。
该函数中完成了相应协议数据的处理即数据上报的等相关操作。
· int8_t gizwitsEventProcess(eventInfo_t info, uint8_t data, uint32_t len)
参数info[in]:事件队列
参数data[in]:数据
参数len [in]:数据长度
用户数据处理函数,包括wifi状态更新事件和控制事件。
a). Wifi状态更新事件
WIFI_开头的事件为wifi状态更新事件,data参数仅在WIFI_RSSI有效,data值为RSSI值,数据类型为uint8_t,取值范围0~7。
b). 控制事件
与数据点相关,本版本代码会打印相关事件信息,相关数值也一并打印输出,用户只需要做命令的具体执行即可。
3.代码结构说明
自动化代码生成工具已经根据用户定义的产品数据点信息,生成了对应的机智云串口协议层代码,用户需要移植代码到自己的工程中,完成设备的接入工作。如图如下:
代码绿色部分的协议逻辑和程序主流程已经帮用户实现,图中用黄色字体注标的部分待用户实现并完成代码的移植。用户的移植分以下几步进行:
a.搭建最小平台工程(必要)。
b.实现串口驱动(必要):包括通信与打印功能。
c.实现定时器驱动(必要)。
d.实现芯片复位函数(可选)。
e.实现应用层逻辑开发(必要):包括数据上下行、入网配置等。
移植步骤介绍
下面我们以 MSP430平台的移植 为例来介绍移植步骤。
1.搭建最小平台工程(必要)
首先完成目标平台的最小工程搭建,以MSP430为例,我们将通信协议处理的源码文件(Gizwits目录下所有文件)导入到工程中,并将 User目录 下的示例 main.c 文件整合到工程中的主文件中。

2.实现串口驱动(必要)
MCU方案需要用户实现一个串口,用于设备MCU与WIFI模组之间数据通信。用户首先需要实现串口接收中断服务函数接口UART_IRQ_FUN(MSP430平台函数接口为:USCI0RX_ISR),该接口调用gizPutData()函数实现串口数据的接收并且写入协议层数据缓冲区。

3.实现定时器驱动(必要)
协议层使用到了一个系统时间,该事件单位为毫秒,所以要求用户实现一个毫秒定时器(必须是1ms精确定时,若不准确,会影响到超时重发、定时上报等处理),并且实现中断服务函数TIMER_IRQ_FUN(MSP430平台函数接口为:Timer_A),该函数调用gizTimerMs()实现协议层系统时间的维护。

4.实现芯片复位(可选)
根据串口协议文档规定,模组可以发送命令复位设备MCU,所以用户需要实现 gizwits_product.c中的mcuRestart()接口即可

5.应用逻辑开发5.1.数据下行控制
数据点方式将转换成数据点事件,开发者只需要在 gizwits_product. c 文件的gizwitsEventProcess ()相应事件下作具体处理即可。
5.2.数据上行控制
该工程代码默认在userHandle()中实现传感器数据采集,并且该函数在while中循环执行,原则上用户只需要关心如何采集数据。
特别提醒,默认while循环执行速度较快,需要针对不同的需求,用户可调整数据点数据的采集周期和接口实现位置,预防由于传感器数据采集过快引发的不必要的问题(具体可查看STM32 的详解篇)。

5.3.配置入网功能(必要)
根据串口协议文档规定,MCU可以向模组发送命令使其进入相应的配置模式,所以用户可以调用gizwitsSetMode接口(在 gizwits_protocol.c 中)完成相应的操作(例如按键控制)

5.4.实现模组状态处理功能(可选)
开发者可以在 gizwits_product. c 文件的 gizwitsEventProcess()函数内获得WIFI状态,并做相应的逻辑处理。


具体参考:http://docs.gizwits.com/zh-cn/deviceDev/GoKit3%20DEV%20SDK%20Common%E7%89%88%E7%A7%BB%E6%A4%8D%E8%AF%B4%E6%98%8E.html


更多模块化开发工具,提升开发效率:
标准GAgent串口通讯协议
MCU代码自动生成工具
APP代码自动生成工具
自动化产测工具
OTA固件升级
国际版应用邮件模板
产品互联(Echo接入等)
Snoti服务
企业API、OPEN API
RTDB实时大数据统计




1、机智云QQ群: 287087942
机智云爱好者-APP开发群: 599735135
QQ群目前非常活跃,欢迎大家参与进来,交流,讨论,答疑,解惑~~
2、机智云微信公众号: 机智云 gizwits /   机智云智能宠物屋go-kit
关注机智云Gizwits官方公众号随时掌握最新资讯和活动信息
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

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

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