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.

TMS320F28335: Data transmit mismatch with clock, when McBSP is configurated as SPI slave

Part Number: TMS320F28335

Hi expert,

My customer is trying to configurate the McBSP of 28335 as SPI slave.

He meets the issue that the data transmit from McBSP SPI slave cannot meet the rising edge of clock.

the configuration code is as follow:

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
SPIC_COMMU_REGS.SPCR2.all = 0x0000 ;
SPIC_COMMU_REGS.SPCR1.all = 0x0000 ;
SPIC_COMMU_REGS.SPCR2.bit.GRST = 0 ;
SPIC_COMMU_REGS.SPCR1.bit.CLKSTP = 2 ;
SPIC_COMMU_REGS.SPCR1.bit.DLB = 0 ;
SPIC_COMMU_REGS.SPCR1.bit.RINTM = 0 ;
SPIC_COMMU_REGS.PCR.bit.CLKXP = 0 ;
SPIC_COMMU_REGS.PCR.bit.CLKXM = 0 ; //
SPIC_COMMU_REGS.PCR.bit.SCLKME = 0 ;
SPIC_COMMU_REGS.SRGR2.bit.CLKSM= 1 ; //
SPIC_COMMU_REGS.SRGR1.bit.CLKGDV = 1;//2
SPIC_COMMU_REGS.PCR.bit.FSXM = 0; // The FSX pin is an input pin.
SPIC_COMMU_REGS.PCR.bit.FSXP = 1 ; // The FSX pin is active low.
SPIC_COMMU_REGS.PCR.bit.CLKRM = 0 ;
SPIC_COMMU_REGS.PCR.bit.FSRM = 0 ;
SPIC_COMMU_REGS.XCR2.bit.XDATDLY =0 ;
SPIC_COMMU_REGS.RCR2.bit.RDATDLY =0 ;
SPIC_COMMU_REGS.MFFINT.bit.RINT = 1 ;
SPIC_COMMU_REGS.MFFINT.bit.XINT = 0 ;
SPIC_COMMU_REGS.RCR2.bit.RPHASE = 0 ;//
SPIC_COMMU_REGS.XCR2.bit.XPHASE = 0 ;//
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

PS: the SPIC_COMMU_REGS is the rename of McbspXRegs

then he try to fix this issue by changing the SPCR1.bit.CLKSTP to 3 and changing the SRGR1.bit.CLKGDV to 9. But he meet the issue that the data width cannot meet the clock.

the configuration code is as follow:

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
SPIC_COMMU_REGS.SPCR2.all = 0x0000 ;
SPIC_COMMU_REGS.SPCR1.all = 0x0000 ;
SPIC_COMMU_REGS.SPCR2.bit.GRST = 0 ;
SPIC_COMMU_REGS.SPCR1.bit.CLKSTP = 3 ;
SPIC_COMMU_REGS.SPCR1.bit.DLB = 0 ;
SPIC_COMMU_REGS.SPCR1.bit.RINTM = 0 ;
SPIC_COMMU_REGS.PCR.bit.CLKXP = 0 ;
SPIC_COMMU_REGS.PCR.bit.CLKXM = 0 ; //
SPIC_COMMU_REGS.PCR.bit.SCLKME = 0 ;
SPIC_COMMU_REGS.SRGR2.bit.CLKSM= 1 ; //
SPIC_COMMU_REGS.SRGR1.bit.CLKGDV = 9;//,10
SPIC_COMMU_REGS.PCR.bit.FSXM = 0; // The FSX pin is an input pin.
SPIC_COMMU_REGS.PCR.bit.FSXP = 1 ; // The FSX pin is active low.
SPIC_COMMU_REGS.PCR.bit.CLKRM = 0 ;
SPIC_COMMU_REGS.PCR.bit.FSRM = 0 ;
SPIC_COMMU_REGS.XCR2.bit.XDATDLY =0 ;
SPIC_COMMU_REGS.RCR2.bit.RDATDLY =0 ;
SPIC_COMMU_REGS.MFFINT.bit.RINT = 1 ;
SPIC_COMMU_REGS.MFFINT.bit.XINT = 0 ;
SPIC_COMMU_REGS.RCR2.bit.RPHASE = 0 ;//
SPIC_COMMU_REGS.XCR2.bit.XPHASE = 0 ;//
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

PS: the SPIC_COMMU_REGS is the rename of McbspXRegs

Are there any suggestions for this issue?