ZHCUBZ5A September 2021 – April 2024
DATALOG 模块将两个用户可选软件变量的实时值存储在 C2000 MCU 上提供的数据 RAM 中,如图 3-23 所示。通过将模块输入 iptr[0] 和 iptr[1] 配置为两个变量的地址来选择这两个变量。两个 RAM 缓冲区位置(其中存储了数据值)的起始地址存储在 datalogBuff1[0] 和 datalogBuff1[1] 中。这些 Datalog 缓冲区是包含值触发数据的大型数组,这些数据随后可以显示在图形中。DATALOG 预分频器是可配置的,这使得 dlog 函数只能从每个预分频样本中记录一个。默认预分频器设置为 10,但可以通过修改 datalogIF.h 文件中 DATA_LOG_SCALE_FACTOR 定义的值进行更改。直接存储器存取 (DMA) 用于将所选软件变量的值传输到 RAM 中的 DATALOG 缓冲区。
要启用 DATALOG 功能,必须在工程属性中添加预定义符号 DATALOGF2_EN,如图 3-19 所示。
以下代码演示了一个 DATALOG 对象和句柄的声明。此代码位于 datalogIF.c 文件中。
DATALOG_Obj datalog;
DATALOG_Handle datalogHandle; //!< the handle for the Datalog object
下面的代码演示了 DATALOG 对象、句柄和参数的初始化和设置。此代码位于 sys_main.c 文件中。
// Initialize Datalog
datalogHandle = DATALOGIF_init(&datalog, sizeof(datalog));
DATALOG_Obj *datalogObj = (DATALOG_Obj *)datalogHandle;
HAL_setupDMAforDLOG(halHandle, 0, &datalogBuff1[0], &datalogBuff1[1]);
HAL_setupDMAforDLOG(halHandle, 1, &datalogBuff2[0], &datalogBuff2[1]);
下面的代码演示了两个模块输入 iptr[0] 和 iptr[1] 的配置,以指向两个变量的地址。datalog 模块输入指向不同的系统变量,具体取决于构建级别。此代码位于 sys_main.c 文件中:
datalogObj->iptr[0] = &motorVars_M1.adcData.I_A.value[0];
datalogObj->iptr[1] = &motorVars_M1.adcData.I_A.value[1];
以下代码演示了在 motor1ctrlISR() 中断执行期间使用新数据定期更新 datalog 缓冲区。此代码位于 motor1_drive.c 文件中。
if(DATALOGIF_enable(datalogHandle) == true)
{
DATALOGIF_updateWithDMA(datalogHandle);
// Force trig DMA channel to save the data
HAL_trigDMAforDLOG(halHandle, 0);
HAL_trigDMAforDLOG(halHandle, 1);
}
datalog 模块与图形工具一同使用,该工具提供了一种直观检查变量并判断系统性能的方法。CCS 中提供了图形工具,可以各种图形类型显示数据数组。数据数组以各种格式存储在器件的存储器中。
当工程处于调试模式时,打开并设置时间图窗口来绘制数据日志缓冲区,如图 3-24 中所示。或者,用户可以导入位于工程文件夹中的图形配置文件。要导入这些文件,请点击:Tools -> Graph -> DualTime…,选择“import”并通过浏览找到以下位置 <install_location>\solutions\universal_motorcontrol_lab\common\debug,然后选择 motor_datalog_fp2.graphProp 文件。点击“OK”,这样会将 Graphs 添加到调试视图中。点击图形选项卡左上角的“Continuous Refresh”按钮 。