当前位置:网站首页>Lianshengde W801 series 1-flash save data routine: save wifi distribution network information
Lianshengde W801 series 1-flash save data routine: save wifi distribution network information
2022-08-07 14:36:00 【hwd00001】
文章目录
1.W801内部flash资料
1.1 W801内部flashUse partition
W801的内部flash大小是2M 字节,物理地址是0x08000000-0x081FFFFF.
在CDK的例程中,flashEach internal address segment has a specific purpose,看看这种《内部flash分区表》:
Which is reserved for the user to use the scope“User Area”【0x081C0000 ~ (0x081FC000-1)】.
1.2 内部flasherase-write characteristics
- 擦除的最小单位是扇区,每个扇区4k 字节;The contents of the same sector will be erased at the same time,So when changing part of the content of the same sector,Other content must be temporarily saved later,rewrite together.
这一点,库函数 int tls_fls_write(u32 addr, u8 *buf, u32 len) 已经帮我们做好,We can directly write less than4k字节的内容,Don't care whether to erase other contents of the same sector.
2.利用SDK的demo快速测试flash相关函数
2.1 打开宏 DEMO_FLASH
在文件wm_demo.h中打开DEMO_FLASH
#define DEMO_ON 1
#define DEMO_OFF 0
//demo console
#define DEMO_CONSOLE DEMO_ON
.........
//flash demo
#define DEMO_FLASH (DEMO_ON && DEMO_CONSOLE)

2.2 Serial command testflash
编译下载后,Serial command addedt-flash,如下图:
在串口输入“t-flash"You can enter the test.
3.保存用户参数
我在实际应用中,一共用了 8个字节的用户数据 + 33字节的wifi SSID + 65字节的wifi密码,共106字节.So the selected address range is 【0x081FB000 ~ 0x081FBFFF】,The size is one sector,4k 字节.
extern u8 airkiss_pwd[65];
#define wifiCfgByte airkiss_pwd[64] // 使用密码数组最后一个字节作为配网标记
extern u8 airkiss_ssid[33];
#define PARAM_FLASH_ADDR_BASE 0x1fb000 // 0x08200000 - 0x1000 最后4k,一个扇区
#define PARAM_FLASH_DATA_LEN 8
///============ 开启配网需要相应的保存函数
#if TLS_CONFIG_AIRKISS_MODE_ONESHOT
#define PARAM_FLASH_ADDR_WIFI_ID_LEN 33
#define PARAM_FLASH_ADDR_WIFI_PWD_LEN 65
#define PARAM_FLASH_ADDR_WIFI_ID_OFFSET (PARAM_FLASH_DATA_LEN)
#define PARAM_FLASH_ADDR_WIFI_PWD_OFFSET (PARAM_FLASH_ADDR_WIFI_ID_OFFSET+PARAM_FLASH_ADDR_WIFI_ID_LEN)
#define PARAM_FLASH_ADDR_WIFI_CFG_OFFSET (PARAM_FLASH_ADDR_WIFI_PWD_OFFSET+PARAM_FLASH_ADDR_WIFI_PWD_LEN-1)
///==========传入参数为 wifi_info_storage_t ================
void WriteWifiParam(unsigned char configByte)
{
unsigned char write_buf[PARAM_FLASH_ADDR_WIFI_ID_LEN+PARAM_FLASH_ADDR_WIFI_PWD_LEN];
wifiCfgByte = configByte;
memcpy(write_buf,airkiss_ssid,sizeof(airkiss_ssid));
memcpy(write_buf+PARAM_FLASH_ADDR_WIFI_ID_LEN,airkiss_pwd,sizeof(airkiss_pwd));
tls_fls_write(PARAM_FLASH_ADDR_BASE+PARAM_FLASH_ADDR_WIFI_ID_OFFSET, write_buf, sizeof(write_buf));
}
//
unsigned char ReadWifiParam(void)
{
tls_fls_read(PARAM_FLASH_ADDR_BASE+PARAM_FLASH_ADDR_WIFI_ID_OFFSET, airkiss_ssid, sizeof(airkiss_ssid));
tls_fls_read(PARAM_FLASH_ADDR_BASE+PARAM_FLASH_ADDR_WIFI_PWD_OFFSET, airkiss_pwd, sizeof(airkiss_pwd));
return wifiCfgByte;
}
#endif // TLS_CONFIG_AIRKISS_MODE_ONESHOT
上面的代码中,airkiss_ssid和airkiss_pwd是全局变量,See the source screenshot below:
This article is written here,The practical operation of one-key distribution network is described below,题目《联盛德W801系列2-WIFI一键配网,信息保存》.
边栏推荐
猜你喜欢
随机推荐
使用通达信软件买股票安全吗?
手工测试转自动化,学习路线必不可少,更有【117页】测开面试题,欢迎来预测
我,一个软件测试工程师,谈谈我每天的日常工作...
初始百度地图API
HJ6 prime factor
测开面经汇总
MySQL: Calculate shortest distance between latitude and longitude using custom function
国内软件测试岗,可以卷到什么程度?
002_认识微服务
注销/撤销/吊销
基于RK3566中RTL8201F网口百兆调试笔记
[YOLOv5] Combined with GradCAM heat map visualization
LinkedList 底层学习
QT—状态机框架
【YOLOv7_0.1】网络结构与源码解析
mysql连接WARN: Establishing SSL connection without server‘s identity verification is not recommended.
dotnet 将文件删除到回收站
一、Flink 处理IOT数据
联盛德W801系列2-WIFI一键配网,信息保存
嵌入式开发:嵌入式基础–了解微控制器引导过程







![[YOLOv5] Combined with GradCAM heat map visualization](/img/94/b2b3b48c57ee4a1288c3aa906de32b.jpg)
![[Leetcode]21. 合并两个有序链表](/img/86/e3a14a64dafece194e44aec91cea44.png)

