TMS320F28379D: TMS320F28379D

Part Number: TMS320F28379D


 

core1.pngFlash1cmd.pngFlash2cmd.pngFlash1cmd1.pngFlash2cmd2.pngThe picture shows the configurations of Core 1 and Core 2. When using the TMS320F28379D chip, after I completed the program 固化 (program burning/flash programming) for Core 1 and Core 2, Core 1 was designed to handle status control-related processing, while Core 2 was responsible for generating motor waveform data points and outputting them through the DAC interface. However, it was found that after the program was burned into the flash, no waveform was output when sending commands via the serial port; nevertheless, the lighting test program burned into Core 1 functioned normally.
 
Subsequently, I wrote a simplified test program for burn verification: Core 2 was tasked with generating waveform data points, and Core 1 was responsible for command control. Under this setup, when control commands were sent via the serial port, Core 2 could output waveforms normally, and Core 1 could receive the commands and stop the waveform output.
 
By checking the Flash address 0x082000 of both Core 1 and Core 2 using the MemoryBrowser tool, it was found that data was stored at this address for both cores, indicating that the program had been written into the Flash. However, the waveform generation program of Core 2 did not execute after the chip was powered on. What could be the possible causes of this phenomenon?
  • Hello, we have received your case and the investigation will take some time. Thank you for your patience.

  • In your first function SelectCPUForPeripheral(), you also need to assign the serial port to CPU2 in order for it to read from it directly.  The reason that CPU1 can access with no code change it is that by default CPU1 is the selected CPU for all peripherals so if no action is taken it will have control/access.

    Since the CPU1 controlled version works correctly, we can assume the pinmux selection is handled correctly elsewhere in the code.

    So you would need to add this line of code:

    SysCtl_selectCPUForPeripheral(SYSCTL_CPUSEL6_SPI, 1, SYSCTL_CPUSEL_CPU2);

    assuming this was for SPIA.