This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP430FR6989 ESI模块状态机地址移动问题

Other Parts Discussed in Thread: TIDM-LC-WATERMTR

请问在ESI模块启动之后,如果有状态切换,存储ESI Memory里面的PSM state table是如何移位的?每次移位的地址长度又是如何计算的?谢谢支持

下面的文档里面有描述在某一状态里面计算偏移地址,这个可以理解:

不能理解的地方是:如果我采用两个LC sensor,切换状态之后,“current address of PSM State Table ”这个地址是怎么得到的?

  • 你可以参考这个demo:http://www.ti.com.cn/tool/cn/tidm-lc-watermtr

  • 针对这个问题,我是按照自己猜测的流程重新写的状态机,目前运行起来似乎没有问题。

    我这边采用的3个LC,状态转移过程理论上有64个(2^3 * 2^3),如果两个LC就是16个状态切换过程(2^2 * 2^2)。下面说一下3LC状态机地址的问题:

    1。当前状态对应于8个未来状态,未来状态是由PPUS1, PPUS2,PPUS3确定下来的,比如当前状态为010,这时候PPUS1, PPUS2,PPUS3捕获值为101,那么state table就要基于当前的状态地址加上0x101,并取出其值填入(Q7…Q1)。

    2。第一步取出的(Q7…Q1)做各种判断,比如Q7为1则代表错误,Q6为1则代表向前爬了一步。然后就是当前状态010如何切换到101状态,这一点是我猜测的,state table直接从基址加上(2^3 * 0x101)

    所以在重新写状态机的时候,建议按照这个顺序(000,001,010,011,100,101,110,111)来编写,经过验证这样是没有问题的,状态机可以正确跳转。

    如果有特殊需求,我认为状态机的顺序其实也可以打乱的,这个时候Q3,Q4,Q5就要派上用场了,Q3,Q4,Q5代表下一状态,如果状态机的顺序是错乱的,这里Q3,Q4,Q5也要做相应的改变,状态机才能正确跳转。不过这个想法我没有验证。

    以上是我对这个问题的总结,希望对后面遇到类似问题的人有帮助吧