在LSM6DSO16IS/ISM330IS的IMU内部框架中,传感器hub可以通过I2C连接外部磁力计和气压计等设备。ISPU可以通过内部的IMU传感链直接读取外部的传感器(地磁或气压计)和内部的加速度、陀螺仪和温度数据。ISPU支持运行最多30个算法,但由于ISPU是单核,它以串型的方式运行,每一个算法都可以产生一个中断信号,通知主控发生的中断事件。
ISPU可以通过I2C与SPI与主控连接,同时通过多种寄存器跟主控交互。例如,如果主控需要配置参数,可以通过总线将参数写到ISPU的配置寄存器对ISPU进行配置,而标志寄存器可以通过总线实现主控和ISPU的数据交互。此外,ISPU输出数据寄存器可以在中断发生后将数据送出,告知MCU当前发生了什么事件。
ISPU开发流程 首先是基于ISPU代码进行编码,使用工具链将其编译成ISPU二进制文件。然后,将该ISPU二进制文件与传感器配置文件(configureTXT)传感器配置文件一起使用工具生成ISPU.h或者.UCF配置文件。将这些文件复制到MCU的应用程序代码中,加载ISPU程序并读取算法结果,使用ARM工具链进行编译,生成应用.bin文件,最后将应用.bin文件烧录到MCU中运行。
1)基于命令行工具CLI
命令行主要在Windows下使用,通过CMD输入命令来实现编译工作。
采用这种方法,开发之前需要先安装ISPU编译工具链,并在Windows里安装make工具。然后可以基于我们提供ISPU模版开发Norm算法,修改传感器配置,通过json输出文件进行编译,再通过GUI连接板子并连上电脑,使能ISPU。
2)基于Eclipse的IDE
如STM32CubeIDE,可以编辑代码及编译ISPU程序。开发时需要先下载安装Eclipse插件,然后导入工程进行编译。
3)GUI
采用AlgoBuilder,无需编写代码,只需要在软件中拖拽不同模块进行连接,即可自动生成代码。用户需要先在ST官网上下载AlgoBuidler、STM32CubeIDE、STM32CubeProgrammer和Unico-GUI软件并安装,通过设置后即可实现零代码设计,基于模块固件编译和烧写以及调用Unicleo-GUI。 |
|