最近一周熟悉了STEVAL-MKI109V3的各种功能,也对创意有了大致的构思,实现方法也有了简单的勾勒。这两日阅读了好多相关的资料,看了网友们相关的分享,对FSM的基本功能进行了简单的调试。
1、官方给的开发板固件为bin可执行文件,是不开源的,其目的是让我们进行传感器配置的快速生成及FSM的配置调试等。所以要实现创意开发需要用unico实现寄存器配置后,导出.h文件导入个人工程中,通过总线直接写入传感器的FSM相关寄存器。
然后在F401 MCU中实现进一步逻辑处理。
对中断的理解有个问题,所谓FSM的INT1与INT2是由传感器输出的吗?是通过IO中断还是软中断的方式,主MCU如何获取这个中断呢?
2、对FSM进行了简单的学习后模拟了一下实际的操作,做了个最简单的逻辑,采集X+轴的数据,然后对数据进行阈值判断,然后计数,连续数据符合计数要求后输出中断,FSM逻辑如下:
观察中断可以发现,只要平移运动触发阈值便可以产生中断。(因为阈值和Time计数设置的比较小,所以触发非常敏感)
3、进一步,调整阈值(加大触发难度)和采样时间(增加持续时间),降低敏感度,配置如下:
中断触发如下:
4、简单总结下:Unico实现FSM功能的配置是十分方便的,也可以把我们想要的动作采集快速实现,然后写入mcu中进行开发。这周剩下的时间对调试环境进行搭建,换了电脑以前的环境还得重新配置,并且对开发板的理解还是有很多欠缺,再仔细阅读下文档。这周只休息一天,下次分享估计要五一了。时间还是挺紧迫的哈哈。希望看到坛友们的更多分享。
嗯,你分析的没错,文档AN5273中的第四章专门讲了FSM中断的问题。
在FSM达到结束状态或执行OUTC / CONT / CONTREL命令时,会产生中断。
中断会被存储在对应状态机模块的中断状态寄存器地址下,从主从设备 交互上来讲可以看做软中断。
通过设置外部中断INT配置寄存器中的INT1_FSM[1:16]、INT2_FSM[1:16]这些位,可以将外部中断INT1/2路由到软中断上,从而产生硬中断。