This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F280049C: about CLA

Part Number: TMS320F280049C

在配置好CLA后发现调用EPWM4时会报错,因此更改了CMD文件中地址的大小,发现将CLA所用的地址范围加大后调用EPWM4不再报错,但是这个时候通过在线仿真可以看到duty值不再变化。在没修改CMD文件之前duty值是在变化的,修改之后虽然duty值没有变一直为0,但是我在CLA里将GPIO12拉高,通过示波器观察GPIO12确实为高电平,因此可以认为此时CLA在运行,只不过CLA中的变量duty值不变。

应该是我修改CMD文件的地址范围导致的,这个怎么解决?duty值不变是为什么?

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
MEMORY
{
PAGE 0 :
/* BEGIN is used for the "boot to SARAM" bootloader mode */
BEGIN : origin = 0x000000, length = 0x000002
RAMM0 : origin = 0x0000F4, length = 0x000100C
RAMLS0 : origin = 0x008000, length = 0x000800
RAMLS1 : origin = 0x008800, length = 0x000800
RAMLS2 : origin = 0x009000, length = 0x000800
RAMLS3 : origin = 0x009800, length = 0x000800
RAMLS4 : origin = 0x00A000, length = 0x001800
RESET : origin = 0x3FFFC0, length = 0x000002
/* Flash sectors: you can use FLASH for program memory when the RAM is filled up*/
/* BANK 0 */
FLASH_BANK0_SEC0 : origin = 0x080000, length = 0x001000 /* on-chip Flash */
FLASH_BANK0_SEC1 : origin = 0x081000, length = 0x001000 /* on-chip Flash */
FLASH_BANK0_SEC2 : origin = 0x082000, length = 0x001000 /* on-chip Flash */
FLASH_BANK0_SEC3 : origin = 0x083000, length = 0x001000 /* on-chip Flash */
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  • 没想到ram大小跟PWM寄存器的值之间有什么关系。

    你更新的是cmd文件中哪个值的范围?

    另外,能否单步调试看一下程序具体如何运行的?

  • 就是这个地址的长度,之前长度是0x000800,我把他的长度加大为0x001800,后面地址顺序往后移动了一下。这样更改之后程序可以争产运行,但是就duty值不变了。

    另外想问您一下,我现在程序有时候报错,我将这个RAMLS的地址长度增大后有时候程序就正常运行了。这个地址的长度一般怎么取?可以尽可能的往大取吗?这个地址随意增大长度会有什么后果呢?

  • 1、报错的内容是什么?

    2、每段ram在芯片中都有固定的长度,你可以看一下芯片datasheet中的表 8-1. C28x Memory Map。加大RAMLS4的话影响到后面RAMLS5甚至RAMLS6的大小了,由此可能影响了duty的内存部分。

    我看到cmd文件中只有.test段是用到RAMLS4的,可以试一下通过几个内存段合并使用的方式来加大总的ram内存。

  • 感谢您的回复,我尝试一下,后期再遇到问题再请教您。