这个问题, 目前已经修复.
这个问题, 目前已经修复.
密码错误或者找不到 WIFI 其实是一个意思, 如果非得去判断的话, 联网前可以先去扫描附近热点, 如果有匹配的 WIFI 再去联网操作.
看官网 W800 SDK 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") ;
}
1. 这个函数接口返回的是蓝牙状态.
2. 目前用的是哪个蓝牙库? 需要对看上面对应的文档资料, SDK 默认用的是 NimBLE 版.
3. 你指的蓝牙参数是什么?
W80X 系列芯片 fls 格式固件只能通过串口 0 烧录, 或者通过 CK-LINK 下载 img 程序.
HSPI 只能做为从机, 最高时钟频率 50MHZ, 跟普通 SPI 用法有些许区别.
LSPI 可以做为主机, 最高时钟频率 20MHZ, 跟普通 SPI 用法完全一致.
我重新弄了一个驱动, 板子自身也有发热的情况, 可能本身硬件精度就不是很好.
/*****************************************************************************
*
* 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_i2c. h"
#include "stdio. h"
#include "wm_gpio_afsel. h"
#define I2C_FREQ (5000)
#define I2C_ADDR (0x80)
u8 buf[4];
void cht8305_iic_init (void)
{
wm_i2c_scl_config (WM_IO_PA_01) ;
wm_i2c_sda_config (WM_IO_PA_04) ;
tls_i2c_init (I2C_FREQ) ;
}
void cht8305_read_reg (u8 reg_addr, u8 len)
{
tls_i2c_write_byte (I2C_ADDR, 1) ;
tls_i2c_wait_ack () ;
tls_i2c_write_byte (reg_addr, 0) ;
tls_i2c_wait_ack () ;
if (reg_addr == 0x00 || reg_addr == 0x01)
{
tls_os_time_delay (5) ; // 10ms delay
}
tls_i2c_write_byte (I2C_ADDR|0x01, 1) ;
for (int i = 0; i " len-1; i++) {
buf[i] = tls_i2c_read_byte (1, 0) ;
}
buf[len - 1] = tls_i2c_read_byte (0, 1) ; //Give NACK
}
void cht8305_get_temp_humi (float *t, float *h)
{
cht8305_read_reg (0x00, 4) ;
unsigned int th, tl, hh, hl;
th = buf[0];
tl = buf[1];
hh = buf[2];
hl = buf[3];
(*t) = (th " " 8 | tl) * 165. 0 / 65535. 0 - 40. 0;
(*h) = (hh " " 8 | hl) * 100. 0 / 65535. 0;
}
void UserMain (void)
{
printf ("\n user task \n") ;
cht8305_iic_init () ;
float ct8305_temp ;
float ct8305_humi;
while (1)
{
cht8305_get_temp_humi (&ct8305_temp, &ct8305_humi) ;
printf ("upload_hygrotherm ct8305_temp %f, ct8305_humi %f\r\n", ct8305_temp, ct8305_humi) ;
tls_os_time_delay (100) ; // delay 200ms
}
#if DEMO_CONSOLE
CreateDemoTask () ;
#endif
//用户自己的 task
}
这不就是 AP+Web 配网功能嘛, 看 WM_W800_SDK 命令行编译指南_V1. 0. pdf
问题需要描述清楚哦, 如果是 BT 经典蓝牙的 API 使用可以看.
WM_W800_蓝牙系统架构以及 API 描述_V1. 2. pdf
1. 主动联网切换 WIFI 时可以先调用 tls_wifi_disconnect () ; 接口断开网络.
2. 我看你现在这个流程不是很合理, 正常情况下, 模块最好通过类似按键的触发机制让模块进入配网模式, 配网成功后打开自动重连功能, 模块断开连接或者重新上电是能够自动重新连接上 WIFI, 而当想切换 WIFI 网络时, 重新通过按键或其他触发机制进入配网模式即可.
目前 W806 不支持 OTA 升级, 如果需要升级, 可以通过下拉芯片 bootloader 脚进入烧录模式, 然后通过串口 xmodem 协议向芯片发送固件升级.
问 AIRKISS ONESHOT 配置网络失败问题