记一次WiFi芯片W600上的一个浮点运算
最近将部分在应用程序上验证通过的代码移植到bootloader上,发现与预期结果不同,比较奇怪;
应用端代码如下:
static float inputVolt1 = 1.240; //set at first
static float inputVolt2 = 2.313; //set at first
static void calculateReferVolt(u16 reg1, u16 reg2)
{
float k=0.000;
float b=0.000;
u32 u32_k = 0;
u32 u32_b = 0;
k = (inputVolt2 - inputVolt1)*8192*1.2/(reg2-reg1);
b = (inputVolt1 - (reg1 - 8192)*(inputVolt2 - inputVolt1)/(reg2 - reg1));
printf("k: %.4f\r\n", k);
printf("b: %.4f\r\n", b);
u32_k = k*10000;
u32_b = b*10000;
tls_fls_write(ADDR_K, (char*)&u32_k, 4);
tls_fls_write(ADDR_B, (char*)&u32_b, 4);
}
以上代码在应用代码中验证可用,计算出来的k & b的值也与预期相符,但是将其移植到bootloader中以后,发现计算出来的k & b的值不对,也很奇怪,没找到原因。最后通过将两个全局变量修改成宏,才得出正确的k & b的值。定义成宏以后,编译阶段会完成一部分计算,应该与此有关,具体的没去深究。移植并修改后的代码如下:
#define INPUT_VOLTAGE_1 0.4
#define INPUT_VOLTAGE_2 3.0
static void calculateReferVolt(u16 reg1, u16 reg2)
{
float k=0.000;
float b=0.000;
u32 refer_k = 0;
u32 offset_b = 0;
u32 adc_k_b = 0;
k = (INPUT_VOLTAGE_2 - INPUT_VOLTAGE_1)*8192*1.2/(reg2-reg1);
b = (INPUT_VOLTAGE_1 - (reg1 - 8192)*(INPUT_VOLTAGE_2 - INPUT_VOLTAGE_1)/(reg2 - reg1));
refer_k = k*10000;
offset_b = b*10000;
( refer_k<20000 || refer_k>25000 )?( refer_k=22500 ):( refer_k=refer_k );
( offset_b<14000 || offset_b>18000 )?( offset_b=15840 ):( offset_b=offset_b );
adc_k_b = (refer_k<<16);
adc_k_b = adc_k_b+offset_b;
ft_param_set(CMD_ADC_K_B, &adc_k_b, 4);
adc_k_b = 0;
ft_param_get(CMD_ADC_K_B, &adc_k_b, 4);
uart0PutsCom("adc_k_b:");
printint(adc_k_b);
uart0PutsCom("\r\n");
uart0PutsCom("adc write done\r\n");
}
若有过往能者,还望指点迷津。
记一次WiFi芯片W600上的一个浮点运算相关推荐
- 记一次WiFi芯片W600上串口只能回显的问题
最近调试芯片时,出现一个奇怪的问题.设备在运行过程中,突然串口无日志输出,云端也掉线. 通过串口工具向其发送命令,它却是发什么回什么,之前支持的指令全部无效了! 最后,硬件的同事量了量电压,发现电源电 ...
- WiFi连不上的一个原因
家里面的WIFI,个别手机可以连上啊,个别手机又连不上,这个应该你设置了中文之类的SSID,手机不能识别中文SSID,你可以改为英文数字SSID.
- 关于智能家居、360wifi、wifi开关,以及wifi芯片的选择
智能家居的愿景很早之前就有了,梦想着我们在打完球回家的路上就提前打开热水器,烧好水,到家就可以洗澡了:在回家的路上就可以打开空调,到家就可以乘凉了... 但智能家居这种愿景要想实现需要太多技术上的进步 ...
- 芯片验证漫游指南_博通Wi-Fi芯片被曝安全漏洞,超10亿台终端或受影响,苹果、谷歌、小米、华为等大厂在列...
知名电脑安全软件公司 ESET 的研究人员在 Wi-Fi 芯片中发现了一个先前未知的漏洞,并将其命名为 Kr00k.保守估计,这一漏洞将涉及超过 10 亿台支持 Wi-Fi 的设备和接入点. 据科技媒 ...
- 【上电即上华为云】(视频演示)语音识别、RISC-V架构WiFi芯片、LCD显示屏融合案例
[摘要] [上电即上华为云](视频演示)语音识别.RISC-V架构WiFi芯片.LCD显示屏融合案例 语音识别芯片,RISC-V架构WiFi芯片,LCD显示屏,华为云融合案 语音识别将改变我们的生活! ...
- 记一次windows10电脑连上wifi无法上网的解决问题
前言 今天下午同学的电脑能连上wifi,但是却上不了互联网 开始思考 首先想到的肯定是WiFi驱动问题,但是wifi能连上大部分的原因可能就不是驱动问题了,为了彻底排除这个因素,我用到了我的usb网卡 ...
- [OpenHarmony RK3568](四)WIFI芯片适配
文章目录 一.概述 1.1 WLAN固件 1.2 nvram.txt 二.内核部分 2.1 修改设备树 2.2 内核配置部分 三.系统适配部分 一.概述 本文讲述RK3568上移植OpenHarm ...
- 苹果iOS 10.3.1修复博通Wi-Fi芯片重大安全漏洞
如果你还没有将设备升级到 iOS 10.3.1 的话,那么现在是个机会了.因为不久前发布的 iOS 10.3.1,修复了 iPhone 中博通 Wi-Fi 芯片的一个重大安全漏洞,该安全漏洞可能会使在 ...
- 嵌入式WiFi芯片价格战已经打响 MCU企业该醒悟了
在物联网万物互联的驱动下,无可厚非,嵌入式WiFi芯片市场成为了"引爆点",预计2016年的总出货量将达到1亿颗.面对如此巨大的"诱惑",国内外WiFi芯片企业 ...
最新文章
- 【SmartJob】【隔离】每天定时掉线问题解决:隔离定期重启脚本更新
- JS使png背景图片透明
- 8后淡入淡出没有了_8·30广州岑村ufo事件,人为制作的造假视频
- 微服务架构设计模式~根据业务能力进行服务拆分
- Mvvm、第一个Vue程序、Vue基本语法
- [转]Microsoft SQL Server 自定义函数整理大全
- linux修改py内容,python中修改文件行内容
- pythonfromlxml导入html_Python爬虫日记二:使用lxml解析HTML输出对应值
- C++安全方向(二):2.5 Base58_比特币钱包地址_算法分析
- MongDB之shard_主从,副本集,分片的理解
- WEB测试—功能测试
- SQL Server job突然不工作了
- linux 清除mysql relay_MySQL 小版本升级
- mysql死锁抛出异常_如何排查和处理 MySQL 死锁异常?详细分析及解决方法步骤
- vue3 main.js引入 axios_Vue3.0新特性探索
- bl系列刀片(blade)服务器,HPE Integrity BL870c i6 刀片服务器
- HTTP长连接和短连接
- 无线网卡驱动正常却搜索不到无线信号
- EDUCoder编程练习题解(结构体)
- jitpack.io 无法访问或下载依赖库
热门文章
- 结构体成员地址获得结构体起始地址
- [算法]——归并排序(Merge Sort)
- [LintCode] Wildcard Matching
- @清晰掉 GNU C __attribute__
- 前端性能优化:使用媒体查询加载指定大小的背景图片
- 标准模板库(STL)学习指南之List链表
- 上证所Level-2在信息内容和传送方式方面的比较优势[逐笔数据与分笔数据的根本区别]...
- 同软件多个线程设置不同ip_中学校园广播-中学IP网络广播系统解决方案
- 是否可能有一台算力无穷大的计算机?
- 用于计算机视觉领域的python第三方库是什么_大量Python开源第三方库资源分类整理,含菜鸟教程章节级别链接...