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.

TMS570LC4357: SWAG奇点齿结束时,APCNT的period count数值异常置0

Part Number: TMS570LC4357

假设SWAG使用的10-2齿,下降沿有效,在SWAG同步后,齿轮转到奇点齿周期结束时,即下降沿到来,APCNT的period count异常变成0,同时会进一步造成下一齿轮周期的SCNT和ACNT的data字段未递增,保持为0。按照手册中伪代码描述,只有3种情况会对period count赋值,如图所示,只有下溢时才可能将其置0,然而在此时我们检查了EXC2寄存器中的没有标志置位。

我们使用的代码如下,LR=128,HR=64,HET1在pin1上产生波形,同时在软件检测到奇点齿后再启用SWAG,硬件上将pin1与pin2相连。

A1   PWCNT { next=A2,hr_lr=LOW,cond_addr=A2,en_pin_action=ON,pin=1,action=PULSEHI,reg=NONE,data=0,hr_data=16};
A2   DJZ { next=B1,cond_addr=A3,reg=NONE,data=0};
A3   MOV32 {remote=A1,z_cond=OFF,init=OFF,type=IMTOREG&REM,reg=NONE,data=5,hr_data=16};
A4   CNT { reg=A,max=7,data=0};
A5   ECMP { en_pin_action=OFF,cond_addr=A7,pin=0,reg=A,data=6};
A6   MOV32 {next=B1,remote=A2,z_cond=OFF,init=OFF,type=IMTOREG&REM,reg=NONE,data=15};
A7   MOV32 {next=B1,remote=A2,z_cond=OFF,init=OFF,type=IMTOREG&REM,reg=NONE,data=47};
B1   PCNT { hr_lr=LOW,type=FALL2FALL,pin=2,control=ON,prv=OFF,data=0};
B2   CNT { reg=B,max=30,data=5};
B3   BR { brk=OFF,next=B4,cond_addr=L1,event=Z};
B4   ECMP { next=A1,en_pin_action=OFF,cond_addr=B5,pin=0,reg=B,data=20};
B5   MOV32 { next=A1,remote=B2,z_cond=OFF,init=OFF,type=IMTOREG&REM,reg=A,data=5};
L1   APCNT { reqnum=4,request=NOREQ,irq=OFF,type=FALL2FALL,prv=OFF,period=0};
L2   SCNT { step=8,gapstart=57,data=0};
L3   ACNT { next=L4,edge=FALLING,irq=ON,gapend=79,data=8};
L4   ECMP { next=A1,en_pin_action=OFF,cond_addr=L5,pin=1,reg=B,data=0x4e};
L5   CNT { next=A1,brk=ON,reg=NONE,max=7,data=0};

调试时,在奇点齿周期结束的下降沿到来时,APCNT的period count异常变成0的截图如下,断点设置在APCNT指令处。

我们已查看论坛中的下列两个问题,发现SWAG的这个问题长期存在且并未解决

TMS570LC4357: N2HET SWAG - SCNT not counting correctly, missing teeth - Arm-based microcontrollers forum - Arm-based microcontrollers - TI E2E support forums

TMS570LC4357: How to properly set up the SWAG? - Arm-based microcontrollers forum - Arm-based microcontrollers - TI E2E support forums