MPC5745R FlexCAN only one MB can be used for transmit

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

MPC5745R FlexCAN only one MB can be used for transmit

1,196 Views
冠军蔡
Contributor I

HI,

      I  have a problem,MPC5745R FlexCAN only one MB can be used for transmit,the fine  MB is the        CAN_0.MCR.B.MAXMB   definition,other MB can"t be used  transmit.

Example  :

    if   CAN_0.MCR.B.MAXMB=7,only  MB[7]  can  transmit  OK,

          MB[6]  can"t  transmit  ,debug error.

     CAN_0.MB[6].CS.B.CODE = 0xC;  

     Whenever this statement is executed, an error will be reported

     

PE-ERROR: Warning. Can't read registers while part is running.
PE-ERROR: Warning. Can't read memory while part is running. @0 (4 bytes)
PE-ERROR: Warning. Can't read memory while part is running. @0 (4 bytes)
PE-ERROR: Warning. Can't read memory while part is running. @0 (64 bytes)
PE-ERROR: Warning. Can't read memory while part is running. @40 (64 bytes)
PE-ERROR: Warning. Can't read memory while part is running. @ffeb00e0 (4 bytes)

Development environment   is  S32DS 2017.R1

Debugger   tool  is  PE USB Multilink.

Labels (1)
0 Kudos
4 Replies

1,060 Views
冠军蔡
Contributor I

HI  Peter,

      The problem has been solved, and it is related to the clock. The maximum clock of the MCU 841-SPC5743RK1MLU5 can only reach 150MHz.I set it to 200MHz,so it error

0 Kudos

1,059 Views
冠军蔡
Contributor I

Hi Peter,

     As you say ,i called Transmit_Message()  just once ,but the result is same .Buf7I transmit  OK,BUF6I  transmit error.

In IFLAG1 register  BUF7I  bit   is  set  1,the BUF6I bit can"t see ,debugger  is error.   

     CAN_0.MB[6].CS.B.CODE = 0xC;    This code cannot be executed

     Transmit data frame  command can"t  be write.

     But i try  write 0 to CAN_0.MB[6].CS.B.CODE = 0;  ,the code is executed.

    In addition,if  i  change     CAN_0.MCR.B.MAXMB  = 8    ,just  BUF8I  can   transmit ,other  can"t

as same ,if  CAN_0.MCR.B.MAXMB  = 63 , just  BUF63I  can   transmit ,other  can"t


                 

0 Kudos

1,059 Views
PetrS
NXP TechSupport
NXP TechSupport

Hi,

if you call Transmit_Message(); just once (place it before while loop), is both messages transmitted once and do you see BUF6I and BUF7I flags set in IFLAG1 register?

BR, Petr

0 Kudos

1,058 Views
冠军蔡
Contributor I

Hi,Petr

   I try  as you said,but the result not fine .

   i  want to know what"s  effect  other  MB  can"t transmit,only  the   MAXMB   can transmit.

   The latest project is in the attachment

0 Kudos