W80X 芯片 RTC 没有独立电源, 断电 RTC 中数据是会丢的, 保持供电芯片 PMU 可以进入低功耗模式, sleep (功耗 1~2ma) 或 standby (功耗 10ua) , 通过 wakeup 脚唤醒, sleep 模式和 standby 模式, RTC 是保持工作.
W80X 芯片 RTC 没有独立电源, 断电 RTC 中数据是会丢的, 保持供电芯片 PMU 可以进入低功耗模式, sleep (功耗 1~2ma) 或 standby (功耗 10ua) , 通过 wakeup 脚唤醒, sleep 模式和 standby 模式, RTC 是保持工作.
W806 Demo 文件夹中有示例
这个是涂鸦 SDK, 海凌科公众号可以获取.
先看 sdk demo 使用指导, 把 demo 跑通再去改代码.
自动重连建议参考这个 demo, 通过蓝牙配网成功后也会自动打开自动重连功能.
u8 auto_reconnect = 0xff;
tls_wifi_auto_connect_flag (WIFI_AUTO_CNT_FLAG_GET, &auto_reconnect) ;
if (auto_reconnect ! = WIFI_AUTO_CNT_ON)
{
auto_reconnect = WIFI_AUTO_CNT_ON;
tls_wifi_auto_connect_flag (WIFI_AUTO_CNT_FLAG_SET, &auto_reconnect) ;
tls_wifi_connect ( (u8 *) "w600", strlen ("w600") , (u8 *) "12345678", strlen ("12345678") ) ;
printf ("--- WIFI_AUTO_CNT_FLAG_SET ON\n") ;
}
W500 已经停产了, 目前主推是 W80X 系列, 可以支持中文 UTF-8 编码.
可以参考 QQ 群文件里面的串口 OTA, 第一包要 64k (img 头部信息)
QQ 群文件百度云下载链接
不知道这个 demo 对你有没有帮助
/*****************************************************************************
*
* File Name : main. c
*
* Description: main
*
* Copyright (c) 2014 Winner Micro Electronic Design Co. , Ltd.
* All rights reserved.
*
* Author : dave
*
* Date : 2014-6-14
*****************************************************************************/
#include "wm_include. h"
#include "wm_cpu. h"
#include "wm_dma. h"
u8 send_data[8] = {0};
u8 recv_data[8] = {0};
static void gpio_dma_callback (void)
{
printf ("--- %s\r\n", __func__) ;
printf ("recv_data: ") ;
for (int i = 0; i 8; i++) printf ("%02X ", recv_data[i]) ;
printf ("\n") ;
}
void UserMain (void)
{
extern void tls_sys_clk_set () ;
extern u32 tls_mem_get_avail_heapsize (void) ;
tls_sys_clk_set (CPU_CLK_80M) ;
printf ("\n \\\\\\|///\n") ;
printf (" \\\\ . -. - //\n") ;
printf (". ( . @. @ ) \n") ;
printf ("+-------oOOo----- (_) -----oOOo---------+\n\n") ;
printf (" --- Compile "__DATE__", "__TIME__"\n") ;
printf (" --- %s. c\r\n", __func__) ;
printf (" --- GetHeap: %d\n", tls_mem_get_avail_heapsize () ) ;
printf ("\n+---------------------Oooo------------+\n") ;
u8 dmaCh;
struct tls_dma_descriptor DmaDesc;
printf ("send_data: ") ;
for (int i = 0; i 8; i++) printf ("%02X ", send_data[i]) ;
printf ("\n") ;
printf ("recv_data: ") ;
for (int i = 0; i 8; i++) printf ("%02X ", recv_data[i]) ;
printf ("\n") ;
for (int i = 0; i (sizeof (send_data) /sizeof (char) ) ; i++)
{
send_data[i] = i;
}
printf ("send_data: ") ;
for (int i = 0; i 8; i++) printf ("%02X ", send_data[i]) ;
printf ("\n") ;
printf ("recv_data: ") ;
for (int i = 0; i 8; i++) printf ("%02X ", recv_data[i]) ;
printf ("\n") ;
dmaCh = tls_dma_request (1, 0) ;
printf ("send_data: %08X\n", &send_data[0]) ;
DmaDesc. src_addr = send_data;
DmaDesc. dest_addr = recv_data;
printf ("src_addr: %08X\n", DmaDesc. src_addr) ;
printf ("dest_addr: %08X\n", DmaDesc. dest_addr) ;
DmaDesc. dma_ctrl = TLS_DMA_DESC_CTRL_DEST_ADD_INC |TLS_DMA_DESC_CTRL_SRC_ADD_INC | TLS_DMA_DESC_CTRL_BURST_SIZE1 | TLS_DMA_DESC_CTRL_DATA_SIZE_BYTE | TLS_DMA_DESC_CTRL_TOTAL_BYTES (8) ;
DmaDesc. valid = TLS_DMA_DESC_VALID;
DmaDesc. next = NULL;
tls_dma_start (dmaCh, &DmaDesc, 0) ;
tls_dma_irq_register (dmaCh, (void (*) ) gpio_dma_callback, NULL, TLS_DMA_IRQ_TRANSFER_DONE) ;
}
/*****************************************************************************
*
* File Name : main. c
*
* Description: main
*
* Copyright (c) 2014 Winner Micro Electronic Design Co. , Ltd.
* All rights reserved.
*
* Author : dave
*
* Date : 2014-6-14
*****************************************************************************/
#include "wm_include. h"
#include "string. h"
void UserMain (void)
{
printf ("\n user task \n") ;
struct tls_curr_bss_t rssi;
u8 auto_reconnect = 0xff;
if (auto_reconnect ! = WIFI_AUTO_CNT_ON)
{
auto_reconnect = WIFI_AUTO_CNT_ON;
tls_wifi_auto_connect_flag (WIFI_AUTO_CNT_FLAG_SET, &auto_reconnect) ;
tls_wifi_connect ( (u8 *) "w600", strlen ("w600") , (u8 *) "12345678", strlen ("12345678") ) ;
printf ("--- WIFI_AUTO_CNT_FLAG_SET ON\n") ;
}
while (1)
{
tls_os_time_delay (HZ*1) ;
tls_wifi_get_current_bss (&rssi) ;
printf ("--- rssi = -%d\n", rssi. rssi) ;
}
#if DEMO_CONSOLE
CreateDemoTask () ;
#endif
//用户自己的 task
}
目前 W806 SDK 暂时没有串口 DAM 方式驱动.
W80X 系列芯片新出货的都有在工厂产线做 ADC 校准, W800 SDK 和 W806 SDK 需要更新一个补丁包.
这是依据电压和 adc 采集的数据转换来的, 你也可以认为是一个 ax+b 的转换, 也就是相当于通过数据总结的一个线性公式.
IO 唤醒的话只能通过 W806 的 wakeup 脚唤醒, 或者也可以通过定时器唤醒, 可以参考 SDK, PMU demo.
问 W801 的 RTC 时钟怎么掉电保持