Can't get working FlexCAN

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

Can't get working FlexCAN

1,087 Views
mikhailburakov
Contributor III

Hello everyone!

For the few last days I tried to get working FlexCAN via MQX IO api. Now it looks like i am totally failed. I use custom board with MK20DX256VLK7 CPU and MQX 4.0.1. The problem is, that no data ever leaves mailboxes, it spams errors infinitely instead: CAN0_ECR is changing, code in CAN0_CS0 is stuck on 0xc, no timestamp in CAN0_CS0. The code is simple:

#define CAN_DEVICE   ( 0 )
#define FREQUENCY    ( 1000 )
#define MAILBOX_TX ( 0 )

void canbus_task(uint_32 initial_data)
{
    _bsp_flexcan_io_init(CAN_DEVICE);
    FLEXCAN_Initialize(CAN_DEVICE, 0, 0, FREQUENCY, FLEXCAN_IPBUS_CLK);
    FLEXCAN_Initialize_mailbox(CAN_DEVICE, MAILBOX_TX, 0x111, 8, FLEXCAN_TX, FLEXCAN_STANDARD, FLEXCAN_DISABLE);
    FLEXCAN_Activate_mailbox(CAN_DEVICE, MAILBOX_TX, FLEXCAN_TX_MSG_BUFFER_NOT_ACTIVE);

    FLEXCAN_Select_mode(CAN_DEVICE, FLEXCAN_NORMAL_MODE);

  
    unsigned char data[] = { 0x23, 0x10, 0x19, 0x67, 0x11, 0x22, 0x33, 0x44 };
    FLEXCAN_Tx_mailbox(CAN_DEVICE, MAILBOX_TX, data);

    _task_block();
}

Can some one verify that this is the correct code? The hardware is functional, on the other end i have PCAN-USB. It works for sure, because i was able to receive messages from this board without the use of MQX (another project). The situation is really weird because i even tried to manually configure CAN0 module in exact the same way as in barebone project. I verified that all the registers are totally equal (except CAN0_TIMER of course). But sending data fails anyway. I feel that i miss some obvious tiny detail, but this is my first experience with canbus, and i am out of ideas.

Please help me, dear community :)

Tags (2)
0 Kudos
4 Replies

473 Views
sreevenkedesh
Contributor I

can you please send your barebone project( i mean without os dependency)

0 Kudos

473 Views
mikhailburakov
Contributor III

Hello community!

Everything appeared to be pretty easy. A surprise from our HW guy. One undocumented pin which must be in a defined state to allow CAN transactions. That's all, thanks everyone!

0 Kudos

473 Views
andershørtvedt
Contributor I

Can you please tell me more about your solution? I have a similar problem on a K60.

0 Kudos

473 Views
adt
Contributor III

I can try to communicate FlexCan on k60 120mhz micro controller using MQX,I can try it in processor expert it work pretty but i can try in MQX it doesn't work,plz tell me any configuration in MQX and also if any source code plz help me.

0 Kudos