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 eCan + MCP2515 board

Other Parts Discussed in Thread: TMS320F28335

I have 2 boards with MCP2515 trancievers and want to connect TMS320F28335 board in CAN network.

I am using MAX3053 as level shifter for DSC.

 

On this graph - self test (CanH and CanL is terminated by 120 Ohm resistor) of tranciever.

Green line - TMS28335.

Yellow line - MCP 2515.

IMHO Time diagrams looks similar.

 

This is RX line for TMS28335.

 

This is TX line (transfered packet) of DSC.

 

================================

My program is similar with Example_2833xEcanAtoB_Xmit

 

EcanBtc:

        ECanbShadow.CANBTC.bit.TSEG2REG = 3;
        ECanbShadow.CANBTC.bit.TSEG1REG = 7;
        ECanbShadow.CANBTC.bit.BRPREG = 30;
        ECanbShadow.CANBTC.bit.SJWREG = 2;
        ECanbShadow.CANBTC.bit.SAM = 1;

 

Program:

    ECanbShadow.CANGAM.all = ECanbRegs.CANGAM.all;
    ECanbShadow.CANGAM.bit.AMI = 0; //standart identifier
    ECanbRegs.CANGAM.all = ECanbShadow.CANGAM.all;

    ECanbShadow.CANMD.all = ECanbRegs.CANMD.all;
    ECanbShadow.CANMD.all = 0xFFFF0000;     // Configure Mailboxes 0-15 as Tx, 16-31 as Rx
    ECanbRegs.CANMD.all = ECanbShadow.CANMD.all;

    ECanbMboxes.MBOX15.MSGID.bit.AME = 0;
    ECanbMboxes.MBOX15.MSGID.bit.IDE = 0;
    ECanbMboxes.MBOX15.MSGID.bit.AAM = 0;
    ECanbMboxes.MBOX15.MSGID.bit.STDMSGID = 0xFFFF;

    ECanbMboxes.MBOX15.MSGCTRL.bit.DLC = 1; //Message byte counter

    ECanbShadow.CANMD.all = ECanbRegs.CANMD.all;
    ECanbShadow.CANMD.bit.MD15 = 0; //set MD15a as transieve mailbox
    ECanbRegs.CANMD.all = ECanbShadow.CANMD.all;
 
    ECanbShadow.CANME.all = ECanbRegs.CANME.all;
    ECanbShadow.CANME.bit.ME15 = 1; //Mailbox (ME15a - enabled)
    ECanbRegs.CANME.all = ECanbShadow.CANME.all;

    ECanbMboxes.MBOX15.MDL.all = 0xF0F0F0F0; //MBOX15 message
    ECanbMboxes.MBOX15.MDH.all = 0xF0F0F0F0;

 

    for(;;) //infinite loop: send message from CANB to CANA
    {
       ECanbShadow.CANTRS.all = 0;
       ECanbShadow.CANTRS.bit.TRS15 = 1;             // Set TRS for mailbox under test
       ECanbRegs.CANTRS.all = ECanbShadow.CANTRS.all;

       do
        {
          ECanbShadow.CANTA.all = ECanbRegs.CANTA.all;
        } while(ECanbShadow.CANTA.bit.TA15 == 1);   // Wait for TA5 bit to be set..

       ECanbShadow.CANTA.all = 0;
       ECanbShadow.CANTA.bit.TA15 = 1;                  // Clear TA5
       ECanbRegs.CANTA.all = ECanbShadow.CANTA.all;

    }

==================================================

MCP2515 communicates well.

When I try to send message  from DSC to MCP board - ACKE error (CANES register) is occured.
What is the problem?