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.
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.
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();
}