Part Number: TMS320F28033
Hi Expert,
Customer meets an issue that "CPU write" data lost when "CPU write" and "CLA read" access to CPUtoCLARam area simultaneously.
As below figure shown, "CPU write" action is in dcdcCpu_isr loop, while "CLA read" action is in Cla1Task3 loop. Both loops are triggered by PWM_CTR_ZERO interrupt with 120kHz, and the CPU and CLA bandwidth is enough for code to use.
The test steps are
- firstly jump from "MdlCurrLoadSwitch>2048L" to "MdlCurrLoadSwitch<1024L" condition, the value of "uiDcdcVoltK3/4/5" variables will be changed;
- in "MdlCurrLoadSwitch<1024L" condition, if the variables value is equal to one group of below test results, such as(17168/426/3130), the system would jump to "1024L<MdlCurrLoadSwitch<2048L" condition.
- then, in "1024L<MdlCurrLoadSwitch<2048L" condition, the variables value keep unchanged and same with the value in step2.
In step 2, the variable value not same with which in dcdcCpu_isr loop, could be acceptable if "CPU write" and "CLA read" access simultaneously.
However in step 3, the variables still keep unchanged, it means that "CPU write" is ignored or lost after "CLA read". Is this behavior right?
Nevertheless, it seems inconsistent with the below E2E link, which "CPU reads are not ignored but stalled and access is given after CLA access is done."
Test Results:
A:
uiDcdcVoltK3_CpuToCla = 17168;
uiDcdcVoltK4_CpuToCla = 426;
uiDcdcVoltK5_CpuToCla = 3130;
B:
uiDcdcVoltK3_CpuToCla = 17168;
uiDcdcVoltK4_CpuToCla = 168;
uiDcdcVoltK5_CpuToCla = 3130;
C:
uiDcdcVoltK3_CpuToCla = 3298;
uiDcdcVoltK4_CpuToCla = 168;
uiDcdcVoltK5_CpuToCla = 16742;
D:
uiDcdcVoltK3_CpuToCla = 3298;
uiDcdcVoltK4_CpuToCla = 426;
uiDcdcVoltK5_CpuToCla = 16742;
Best Regards
Rayna

