• 方案介绍
  • 相关推荐
申请入驻 产业图谱

【代码库】FreeMASTER 的 ML 通用数据记录器

4小时前
181
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

FreeMASTER 的 ML 通用数据记录器

该软件允许用户通过在 MCU 端自动运行用户实现的场景,在任何支持 FreeMASTER 的 MCU 上执行测试并记录数据。

框图

ML Universal Datalogger 是一款自动化数据记录器应用程序,以 JavaScript 语言实现,作为 FreeMASTER 中的控制页面。其工作原理是,FreeMASTER 应用程序控制用户在 MCU 板上用 C 语言实现的测量场景。测量状态由进度变量报告,该变量由用户通过 C 代码控制。它允许用户通过简单的单页 GUI 和 C 项目中的几行代码自动执行耗时的测量或软件测试。

应用领域

  • 获取时间序列数据
  • 耗时的测量/测试需要多次重复
    • 场景自动化(无需收集数据)
  • 快节奏的应用程序,保存数据的时间非常有限
    • 实时应用程序没有时间传输数据

输出文件和支持的变量

基本上,任何可以序列化为字节的数据都支持。您可以下载多个不同长度的变量(单个变量或数组),它们将被自动识别、下载并导出为 CSV 文件。长度较短的变量行将保留为空白。数据将保存到扩展名为 CSV 的文件中,但以 TAB 字符分隔。

电路板:FRDM-MCXN947,定制电路板

类别:AI/ML、工具

外设:UART

工具链:MCUXpresso IDE

目录

  1. 软件
  2. 硬件
  3. 设置
  4. 结果
  5. 常见问题解答
  6. 支持
  7. 发行说明

1.软件

  • 此软件包提供的 FreeMASTER 应用程序 - FreeMASTER 项目(JavaScript 应用程序),用于用户在 MCU 上实现场景的自动化
    • 文件夹freemaster_project
      • ml_universal_datalogger_pdbdm.pmpx- FreeMASTER 项目,具有 PD-BDM 就绪连接
      • ml_universal_datalogger_uart.pmpx- 具有 UART 就绪连接的 FreeMASTER 项目
      • configuration.xml- 数据记录器的示例配置文件
  • 此软件包提供的 MCU 应用程序 - MCUXpresso 示例项目,带有 UART 和 PD-BDM 就绪 FreeMASTER 通信(均适用于 FRDM-MCXN947)
    • 文件夹frdmmcxn947_mlud_cproject_pdbdm- 带有 PD-BDM 就绪连接的 MCUXpresso C 项目
    • 文件夹frdmmcxn947_mlud_cproject_uart- 带有 UART 就绪连接的 MCUXpresso C 项目
  • 用于从头开始实现 MCUXpresso 项目的 C 文件
    • 文件夹c_files_only

工具链:

  • MCUXpresso SDK(版本MCUX_2.14.0
  • MCUXpresso IDE
  • FreeMASTER(已使用 3.2.3 版本测试)

2.硬件

必需的:

  • 个人电脑
  • 任何支持 FreeMASTER 的开发板,配有相应的 USB 线缆

3. 设置

此设置用于从头开始实现 MCUXpresso 项目(使用文件夹中的文件c_files_only)并将其与文件夹中的 FreeMASTER 项目连接起来freemaster_project

木板

  • 从 SDK 安装 FreeMASTER 组件
    • 确保已启用与传输模式(UART、PDBDM)相关的所有必要引脚、时钟和外围设备
  • ml_universal_datalogger.hml_universal_datalogger.c包含到您的项目中
  • 实施场景时要考虑数据记录器
    • 可选择从 SDK 安装 RTCESL(用于支持 MLIB 数据类型,特别是分数数据类型,以节省内存消耗)
  • 构建并将项目加载到开发板上(由于通信被阻止,请不要忘记在调试项目时继续运行)
    • 可能的问题解决方案
      • 你的BOARD_Init函数被调用了吗?
      • 你的freemaster_cfg.h文件正确吗?

用户场景

1)包含头文件

```

include "mluniversaldatalogger.h"

```

2)初始化数据记录器

使用总进度值初始化数据记录器。如果将数据收集到缓冲区,则可以使用缓冲区大小初始化数据记录器会很方便。

MLUD_Initialize(ML_READ_BUFFER_TOTAL_SIZE);

3)调用采样函数

在需要采样的地方调用数据记录器采样函数,该MLUD_UserScenario函数随后会在内部被调用。例如在定时器中断中。

```
void LPTMR0IRQHandler(void)
{
// Clear timer interrupt flag
LPTMR
ClearStatusFlags(LPTMR0, kLPTMR_TimerCompareFlag);

// Handle timer event internally and let user know via callback functions
MLUD_HandleSamplingEvent();

}
```

4)定义清理函数

实现/定义用户清理功能(在数据记录器库中外部声明)以在新测量开始之前重置所有变量。

void MLUD_UserCleanUp(void)
{
// Clear buffer by setting index to zero
ml_bufferIndex = 0;
}

5)定义用户场景功能

实现/定义每次测量时执行的用户场景函数(在数据记录器库中外部声明)。该函数的返回值是测量的实际进度值。当返回值等于或高于初始化的总进度值(在本示例代码中为ML_READ_BUFFER_TOTAL_SIZE)时,测量将完成并启动数据下载。

```
uint32t MLUDUserScenario(void)
{
// If app is enabled
if (mlmyAppState == MLMYAPPSTATEON)
{
// If buffer is not full
if(mlbufferIndex < MLREADBUFFERTOTALSIZE)
{
// Save data to buffers
ml
xBuffer[mlbufferIndex] = mlmyAppSpeed;
mlyBuffer[mlbufferIndex] = MLIBConvScF16ffFAsmi(mlmyAppSpeed, 1000.0F);

        // Increment buffer (and update progress)
        ml_bufferIndex++;
    }
}

// Return current progress value (in this case it is buffer size)
return ml_bufferIndex;

}
```

您可以使用标志变量来指示需要测量的特定情况,例如电机的特定转速、信号峰值等。在本例中,应用程序的状态用作标志(ml_myAppState)。您还可以保存单个变量,例如状态、时间戳或指向数组中特定样本的索引等。否则,您根本不需要保存数据,而是将数据记录器用作自动化工具,但MLUD_UserScenario每次都必须将进度作为函数的返回值报告!

6)MCU端场景已准备好

其余所有操作均由数据记录器库通过 FreeMASTER 应用程序处理。您只需构建项目,将其加载到开发板上,并将 AXF/MAP 文件链接到 FreeMASTER(如果您不更改 C 项目和 FreeMASTER 项目的位置,则只需执行一次)。

自由大师

  • 打开 FreeMASTER 项目(ml_universal_datalogger_pdbdm.pmpxml_universal_datalogger_uart.pmpx
    • 这里有适用于 FRDM-MCXN947 开发板的 UART 和 PDBDM 示例 C 项目
  • 设置与电路板的通信
    • UART 项目与电路板无关,只需更改 AXF/MAP 文件路径
    • PDBDM 项目是针对特定电路板的,必须针对每个电路板专门设置通信
  • 将 AXF/MAP 文件的路径设置为当前项目
  • 连接到开发板并重新加载页面
    • 可能的问题解决方案
      • 确保您已在 FreeMASTER 项目中链接了正确的 AXF/MAP 文件!
      • 使用串行连接时,所有波特率都包含在搜索范围内吗?默认情况下,使用 115200 波特率。
      • 使用 PD-BDM 连接,您是否设置了正确的板和地址?

用法

如果您已在开发板上准备好场景,则可以打开 FreeMASTER 项目并从那里继续。建立通信后,需要准备配置文件。

配置文件

配置文件包含导出文件、测量和应用程序的相关信息。您可以使用freemaster_project/configuration.xml示例项目中的配置文件 ()。

结构概述

| 传奇: | [t]= 标签 | [a]= 属性 | [o]= 可选标签 |
| :------: | :---------------: | :---------------: | :-------------------: |

  • [t] ?配置?- 主配置标签
    • [t] ?文件?- 有关测量进度的信息(也由数据记录器应用程序更新)
      • [t] 文件夹
        • [a] ??- 测量文件的目标文件夹(该文件夹必须存在)
      • [t] 前缀
      • [t] 抵消
        • [a] value - 文件计数器的偏移值
    • [t] app - MCU 上应用程序的信息
      • [t][o] stateVariable - 表示应用程序状态的变量
        • [a] symbol - MCU 上的变量名称
        • [a] faultValue - 表示应用程序故障的值
      • [t][o] controlVariable - 表示应用程序控制值的变量
        • [a] symbol - MCU 上的变量名称
        • [a] unit - 变量的单位
      • [t] startSequence - 启动应用程序的变量及其值的列表
        • [t][o] ?变量?- 为了启动应用程序而需要更改的变量(您可以添加多个)
          • [a] ?符号?- MCU 或 FreeMASTER 上的变量名称
          • [a] ??- 变量的值
      • [t] stopSequence - 用于停止应用程序的变量及其值的列表
        • [t][o] ?变量?- 为了停止应用程序而需要更改的变量(您可以添加多个)
          • [a] ?符号?- MCU 或 FreeMASTER 上的变量名称
          • [a] ??- 变量的值
      • [t] 开始延迟毫秒
        • [a] ??- 启动序列后测量开始前的延迟(以毫秒为单位)
    • [t] ?测量?- 有关测量变量的信息
      • [t] ?变量?——要下载和保存的变量列表
        • [t][o] ?变量?- 要下载并保存在 CSV 文件中的变量
          • [a] symbol - MCU 上的变量名称
          • [a] name - CSV 文件中变量的标题名称

示例配置文件

```
<!--File export-->

<!--Application control-->

<!--Variable containing the application status-->

<!--Variable containing the actual control value (e.g. speed of motor)-->

<!--Variables and their values to be executed in order to start application-->

<!--Variables and their values to be executed in order to stop application-->

<!--Delay between application start and beginning of measurement-->

<!--Measurement control-->

<!--Variables to be downloaded and their name in CSV file-->

```

4.结果

下方预览展示了一个演示场景,其中应用程序在 MCU 上启动后,记录了 2 秒的信号(2000 个样本,采样率为 1kHz)。数据记录器还会在应用程序启动后等待 2 秒,然后才开始测量(例如,在信号稳定后,电机启动后)。您还可以查看配置预览,检查所有内容是否已正确加载。此外,还预览了紧急停止按钮功能,该功能允许用户在发生意外情况(例如电机卡住)时立即启动停止序列。紧急停止按钮会触发数据记录器的故障状态,导致当前测量的数据无法保存!

应用程序预览

5. 常见问题解答

没有总进度值

  • 确保在设备连接后重新加载页面!

当 FreeMASTER 应用程序未连接到开发板或通信超时时,会显示以下错误

  • 确保您不在 MCUXpresso 项目中的调试会话中。
  • 确保启用所有引脚、外围设备和时钟,并通过 BOARD_Init 函数调用它们的初始化。

通信错误

当您的配置文件中有不正确的变量时,会显示以下错误

  • 确保您的变量拼写正确并在您的项目中使用(编译器可以在优化期间删除未使用的变量)。

通信错误

  • 您可以在下面的配置预览中看到哪里出了问题。

通信错误

6. 支持

请参阅以下资源列表以获得扩展支持:

  • FreeMASTER - FreeMASTER 应用程序的官方页面
  • MCUXpresso SDK - 完整的 SDK 交付,提供对其他 SDK 示例和组件的访问

项目元数据

董事会徽章

类别徽章 类别徽章

周边徽章

工具链徽章

来源:恩智浦appcodehub

恩智浦

恩智浦

恩智浦半导体创立于2006年,其前身为荷兰飞利浦公司于1953年成立的半导体事业部,总部位于荷兰埃因霍温。恩智浦2010年在美国纳斯达克上市。恩智浦2010年在美国纳斯达克上市。恩智浦半导体致力于打造全球化解决方案,实现智慧生活,安全连结。

恩智浦半导体创立于2006年,其前身为荷兰飞利浦公司于1953年成立的半导体事业部,总部位于荷兰埃因霍温。恩智浦2010年在美国纳斯达克上市。恩智浦2010年在美国纳斯达克上市。恩智浦半导体致力于打造全球化解决方案,实现智慧生活,安全连结。收起

查看更多

相关推荐