FlexCAN_T4 FD only show 8 bytes data.

dolpals

New member
Hello all,

Currently i'm working CAN FD communication for new car to see data.

So, i use teensy 4.0 and CAN FD transceiver.

Problem is that only 8 data are shown. But i can see 32 data on Computer with Kvaser CAN Analyzer.

I need 13th data...

Is there any wrong parameter setup on my code?

Thanks.


8bytes.jpg


Code:
#include <FlexCAN_T4.h>
FlexCAN_T4FD<CAN3, RX_SIZE_256, TX_SIZE_16> myFD;

#define NUM_TX_MAILBOXES 2
#define NUM_RX_MAILBOXES 6


void setup(void) {
  //Serial.begin(115200); delay(400);
  
   myFD.begin();
  
  CANFD_timings_t config;
  config.clock = CLK_24MHz;
  config.baudrate = 500000;
  config.baudrateFD = 2000000;
  config.propdelay = 190;
  config.bus_length = 2;
  config.sample = 70;
  myFD.setBaudRate(config);

  
/*  myFD.setMaxMB(NUM_TX_MAILBOXES + NUM_RX_MAILBOXES);
  for (int i = 0; i<NUM_RX_MAILBOXES; i++){
    myFD.setMB((FLEXCAN_MAILBOX)i,RX,EXT);
  }
  for (int i = NUM_RX_MAILBOXES; i<(NUM_TX_MAILBOXES + NUM_RX_MAILBOXES); i++){
    myFD.setMB((FLEXCAN_MAILBOX)i,TX,EXT);
  }
  */
  
  myFD.setMBFilter(REJECT_ALL);
  myFD.enableMBInterrupts();
  //myFD.setRegions(8);
  myFD.onReceive(MB0,canSniff);
  //myFD.onReceive(MB1,canSniff);
 // myFD.onReceive(MB2,canSniff);
  myFD.setMBFilter(MB0,0x65);//,0xFF);
 // myFD.setMBUserFilter(MB1,0x03,0xFF);
 // myFD.setMBUserFilter(MB2,0x0B,0xFF);
  myFD.mailboxStatus();
}

void canSniff(const CANFD_message_t &msg) {
  Serial.print("MB "); Serial.print(msg.mb);
  Serial.print("  OVERRUN: "); Serial.print(msg.flags.overrun);
  Serial.print("  LEN: "); Serial.print(msg.len);
  Serial.print(" EXT: "); Serial.print(msg.flags.extended);
  Serial.print(" TS: "); Serial.print(msg.timestamp);
  Serial.print(" ID: "); Serial.print(msg.id, HEX);
  Serial.print(" Buffer: ");
  for ( uint8_t i = 0; i < msg.len; i++ ) {
    Serial.print(msg.buf[i], HEX); Serial.print(" ");
  } Serial.println();
}

void loop() {
  myFD.events();
}
 
I put setRegions(32).

it works!

Code:
myFD.begin();
  myFD.setRegions(32);
  CANFD_timings_t config;
  config.clock = CLK_24MHz;
  config.baudrate = 500000;
  config.baudrateFD = 2000000;
  config.propdelay = 190;
  config.bus_length = 2;
  config.sample = 70;
  myFD.setBaudRate(config);
 
Back
Top