EFM8SB10 芯科单片机 电容触控调试记录

版权声明:谁想转载随便转载吧,反正多写这一句“未经允许不得转载” 然并卵!!! https://blog.csdn.net/code_style/article/details/82977212

开发IDE

Simplicity Studio v4.0

注意事项: 我们以SB1_capsense_overlay_eval_no_overlay示例工程来作为基础开发,由于flash空间限制,所以cslib电容触控支持库,只能在4KB flash及以上的MCU上运行,比如EFM8SB10F2G-A-QFN20根本就烧不进去,不明白既然不能支持电容cslib库,还生产2Gbit的芯片有何用?

  • 网上关于silicon labs的EFM8SB1系列单片机怎样调试电容触控的中文资料,非常少。

  • 如果想在4G 容量的EFM8SB1上支持电容触控库,就必须注释掉UART调试的两个API,以及低功耗库API的调用,否则最终编译的firmwre size一定大于4KB导致烧写不完整,最终电容触摸功能不能使用。

// Initializes the UART interface
//CSLIB_commInit();

//CSLIB_commUpdate();
//CSLIB_lowPowerUpdate();

注意事项

  • SB1_capsense_overlay_eval_no_overlay 在Simplicity Studio已经可以实现可视化的代码修改,比如修改NoOverlay.hwconf文件的引脚功能,在保存之后,就可以动态修改引脚的输入输出以及是作为模拟IO还是数字IO。

关于触摸灵敏度调整

  • 参考各种文档,我们知道,电容触摸的灵敏度是通过修改ACTIVE_THRESHOLD_ARRAY、INACTIVE_THRESHOLD_ARRAY、AVERAGE_TOUCH_DELTA_ARRAY这三个宏参数来修改的,这里Slicon labs的资料太老了,所以这几个宏前后不一致,以我这里的为准。
  • 这几个参数具体怎么修改呢,和什么有关?其实就是和PCB板的厚度(overlay)密切相关,注意,在cslib_hwconfig.h文件里面,这三个宏前面被定义了一遍,文件最终又重新定义了一遍(这里是hardware configuration在用户点击保存之后,根据NoOverlay.hwconf自动生成的),我们知道,编译器在处理宏重复定义的时候会发出warning,只有第一次定义的宏有效,后面再次重复定义的是无效的,所以后面自动生成的是无效的,那我们就修改前面这三个宏。
  • 具体修改多少可以参考UART调试口输出的数据,比如不触摸的时候,Baseline的值我们记录下来,然后给硬件触摸外壳加上,然后再次触摸,查看Exp.Averaged的值,此时的值减去Baseline的值,就是宏AVERAGE_TOUCH_DELTA_ARRAY的值,然后ACTIVE_THRESHOLD_ARRAY的值按照AVERAGE_TOUCH_DELTA_ARRAY的50%计算,INACTIVE_THRESHOLD_ARRAY的值按照AVERAGE_TOUCH_DELTA_ARRAY的30%计算,最终得出值。
#define ACTIVE_THRESHOLD_ARRAY 100,
#define INACTIVE_THRESHOLD_ARRAY 60,
#define AVERAGE_TOUCH_DELTA_ARRAY 200>>4,  //, 200>>4

关于firmware的烧写

  • 可以利用脚本来烧写,把.hex firmware和脚本放在同一个目录下,连接上硬件,直接运行脚本即可完成烧写
@rem programmer EFM8SB10 series MCU use the bat script

@rem 440099466 is J-Link device Number,please connect with J-Link hardware and get from Simplicity Studio
set sn=440099466
set firmware=SB1_capsense_overlay_eval_no_overlay.hex

@echo erase the flash...
@C:\SiliconLabs\SimplicityStudio\v4\developer\adapter_packs\efm8\flashefm8.exe -sn %sn% -tif c2 -part EFM8SB10F4G -erase

@echo flash the %firmware% to EFM8SB10...
@C:\SiliconLabs\SimplicityStudio\v4\developer\adapter_packs\efm8\flashefm8.exe -sn %sn% -tif c2 -part EFM8SB10F4G -upload "%cd%\%firmware%"


猜你喜欢

转载自blog.csdn.net/code_style/article/details/82977212