替换一下这个补丁。
WM_SDK_W806_v0.6.0_Patch.zip
替换一下这个补丁。
WM_SDK_W806_v0.6.0_Patch.zip
需要下载oneshot配网apk,但是oneshot配网这种配网方式,成功率不能保证100%,建议用蓝牙辅助配网功能。
这个问题,目前已经修复。
密码错误或者找不到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
问 HAL_UART_Transmit_IT()只打印第一个字符?