涂鸦SDK软件移植步骤
1. 简介
sdk软件移植分为以下几个步骤:
步骤1: 编写MCU基础程序,移植SDK文件
步骤2: 确认protocol.h宏定义
步骤3: 移植protocol.c文件及函数调用
步骤4: DP上报下发函数完善调用
2. 软件移植详细说明
2.1 编写MCU基础程序,移植SDK文件
首先在原项目工程中,加入mcu_sdk文件夹中的.c.h文件,添加相应头文件引用路径。完成MCU相关外设初始化,包括:串口、外部中断(按键)、定时器(指示灯闪烁)等。

2.2 确认protocol.h宏定义
2.2.1 确认产品信息
PRODUCT_KEY 为产品PID宏定义,请确保代码与网站所列两者一致,该PID为每个产品的唯一标识。如果不是重新下载最新SDK开发包。
MCU_VER为软件版本,默认1.0.0 。若MCU需要OTA功能,OTA升级后需更新版本号。
CONFIG_MODE为配网方式,通常选择“默认配网”方式。

2.2.2 确认MCU是否需要支固件升级
如需要支持MCU固件OTA升级,请开启该宏(默认关闭)。

2.2.3 定义收发缓存
修改缓冲区大小,根据DP点定义,串口接收和发送缓存大小要大于数据最长的DP数据长度。默认大小24。需要做MCU OTA升级的用户缓存大小建议大于260字节。接收队列大小,若RAM紧张可以适当缩小。

2.2.4 定义模块工作方式(必要)
1)如果配网触发及指示由MCU控制(配网按键和LED接在MCU端),选择“模块和MCU配合处理”工作模式(常用),请保持 define 被注释状态

- 如果wifi指示灯和按键是接在wifi模块上的(模块自处理工作模式),那么请开启
“#ifdef WIFI_CONTROL_SELF_MODE”
然后根据实际的硬件连接,将指示灯和按键所连接的GPIO脚位填入下面两行

2.2.5 确认MCU是否需要支持校时功能
如需要支持校时功能,请开启该宏

并在Protocol.c文件内mcu_write_rtctime实现代码,mcu在wifi模块正确联网后可调用mcu_get_system_time()函数发起校时功能
2.2.6 确认是否开启WiFi产测功能(开启)
为保证最终量产效率及品质,建议开启该宏。具体产测功能实现,见步骤六产测部分。

2.3 移植protocol.c文件及函数调用
1、在需要使用到wifi相关文件的文件中include "wifi.h"文件。如main.c
2、在MCU外设初始化后调用mcu_api.c文件中的wifi_protocol_init()函数
3、将MCU串口单字节发送函数填入protocol.c文件中uart_transmit_output函数内,并删除#error。例如:

4、在串口接收中断服务函数里面调用mcu_api.c文件内的uart_receive_input函数,并将接收到的字符作为参数传入。例如:
5、单片机进入while循环后调用mcu_api.c文件内的wifi_uart_service()函数。
main.c中示例代码结构如下:
include “wifi.h”
…
void main(void)
{
wifi_protocol_init();
…
while(1)
{
wifi_uart_service();
…
}
}
注意:
MCU必须在while中直接调用mcu_api.c 内的wifi_uart_service()函数程序正常初始化完成后,建议不进行关串口中断,如必须关中断,关中断时间必须短,关中断会引起串口数据包丢失,请勿在中断内调用上报函数。
2.4 DP点数据上报和下发函数处理
2.4.1 所有DP数据上报
在模块重启或者重新配网后,WiFi模块主动下发状态查询指令,此时需要MCU上报设备所有DP状态给WiFi模块进行同步
- 打开protocol.c 找到函数all_data_update(void)
- 把所有需要上报的DP点初值填入相应上报函数,为面板提供开机显示初值。
注意:用户请勿随意调用all_data_update()函数,该函数会在特定时间主动调用

2.4.2 单个DP数据上报
在某DP点状态发生变化时,mcu需要主动上报,APP会更新显示。上报格式为 mcu_dp_xxxx_updata(DPID_X,n),DPID_X为状态改变的DP点。all_data_update()内的函数,均可单独调用。
例如:
mcu_dp_bool_update(DPID_SWITCH,1); //BOOL型数据上报
mcu_dp_value_update(DPID_TEMPER_SET,25); //VALUE型数据上报
mcu_dp_string_update(DPID_DAY,“1234”,4); //STRING型数据上报
2.4.3 DP数据下发处理函数
在protocol.c文件中,每个可下发的DP点,都有一个单独下发数据处理函数。格式为dp_download_xxx_handle(),xxx为可下发DP点。函数解析功能点之后,MCU需在相应位置完成逻辑控制。
以接收到开关DP数据为例:

MCU_ON_switch1()和MCU_OFF_switch1()为MCU控制开关函数,完成具体动作。当设备状态在非APP控制下发生变化,MCU中需要调用mcu_dp_bool_update(DPID_SWITCH_1,switch_1);上传功能点(开关)状态实时状态,形成反馈,一般接收处理函数已经自动调用该函数;