Part Number: TCAN4550
Tool/software:
Hello,
I am working on QNX800/QNX710 TCAN4550 driver on i.MX8MM target board. target board has uboot and can load linux and QNX IFS using uboot.
nINT pin connected to a GPIO line.
The following tests are performed.
1. sending CAN msg from Komodo to target board.
2. on target board, print out TCAN4550 regs every 1000ms.
When I load linux first, then do shutdown now, target board goes back to uboot, then using uboot to load QNX800 IFS, perform above tests, I can see both RFON and M_CAN_INT bits are set when receiving CAN msg.
If I do power cycle the target board (turn off the power and turn on again), then use uboot to load QNX800 IFS, perform above test, Those 2 bits never got set when receiving CAN msg.
If I do power cycle the target board, then use uboot to load QNX710, perform above test, I can see both RFON and M_CAN_INT bits are set when receiving CAN msg.
All pinmux are setup the same. I do receive interrupt on the nINT/gpio pin in both cases.
The reg printout
#define TCAN4550_REVISION (0x008)
#define TCAN4550_STATUS (0x00C)
#define TCAN4550_MODE_CONFIG (0x800)
#define TCAN4550_CONTROL (0x1018)
#define TCAN4550_DEVICE_INTERRUPT (0x820)
#define TCAN4550_INTERRUPT_LINE_ENABLE (0x105c)
#define TCAN4550_DEVICE_INTERRUPT_ENABLE (0x830)
#define TCAN4550_MCAN_INTERRUPT (0x1050)
#define TCAN4550_MCAN_INTERRUPT_ENABLE (0x1054)
#define TCAN4550_PROTOCOL_STATUS (0x1044)
#define TCAN4550_RXFIFO0_CONFIG (0x10a0)
#define TCAN4550_RXFIFO0_STATUS (0x10a4)
#define TCAN4550_ERRCNT (0x1040)
#define TCAN4550_TIMESTAMP_CONFIG (0x1020)
#define TCAN4550_TIMESTAMP_CV (0x1024)
**********************************After TCAN4550 configured**************************************************
TCAN4550_NAME = 0x4E414354
TCAN4550_REVISION = 0x00110201
TCAN4550_STATUS = 0x00000008
TCAN4550_MODE_CONFIG = 0x080000A0
TCAN4550_CONTROL = 0x00000000
TCAN4550_DEVICE_INTERRUPT = 0x000004A0
TCAN4550_INTERRUPT_LINE_ENABLE = 0x00000001
TCAN4550_MCAN_INTERRUPT = 0x00010000
TCAN4550_DEVICE_INTERRUPT_ENABLE = 0x809628FF
TCAN4550_MCAN_INTERRUPT_ENABLE = 0x1B860203
TCAN4550_TXFIFO_STATUS = 0x00000000
TCAN4550_RXFIFO0_CONFIG = 0x10200380
TCAN4550_RXFIFO0_STATUS = 0x00000000
TCAN4550_PROTOCOL_STATUS = 0x0000070F
TCAN4550_ERRCNT = 0x00000000
TCAN4550_TIMESTAMP_CV = 0x0000530E
TCAN4550_TIMESTAMP_CONFIG = 0x00000002
************************Good Case, when receiving CAN Msg************************************************************
TCAN4550_NAME = 0x4E414354
TCAN4550_REVISION = 0x00110201
TCAN4550_STATUS = 0x00000008
TCAN4550_MODE_CONFIG = 0x080000A0
TCAN4550_CONTROL = 0x00000000
TCAN4550_DEVICE_INTERRUPT = 0x000004A2
TCAN4550_INTERRUPT_LINE_ENABLE = 0x00000001
TCAN4550_MCAN_INTERRUPT = 0x00010001
TCAN4550_DEVICE_INTERRUPT_ENABLE = 0x809628FF
TCAN4550_MCAN_INTERRUPT_ENABLE = 0x1B860203
TCAN4550_TXFIFO_STATUS = 0x00000000
TCAN4550_RXFIFO0_CONFIG = 0x10200380
TCAN4550_RXFIFO0_STATUS = 0x00010001
TCAN4550_PROTOCOL_STATUS = 0x0000070F
TCAN4550_ERRCNT = 0x00000000
TCAN4550_TIMESTAMP_CV = 0x0000CA64
TCAN4550_TIMESTAMP_CONFIG = 0x00000002
**************************Bad Case, when receiving CAN Msg**********************************************************
TCAN4550_NAME = 0x4E414354
TCAN4550_REVISION = 0x00110201
TCAN4550_STATUS = 0x00000008
TCAN4550_MODE_CONFIG = 0x080000A0
TCAN4550_CONTROL = 0x00000000
TCAN4550_DEVICE_INTERRUPT = 0x000004A0
TCAN4550_INTERRUPT_LINE_ENABLE = 0x00000001
TCAN4550_MCAN_INTERRUPT = 0x00010000
TCAN4550_DEVICE_INTERRUPT_ENABLE = 0x809628FF
TCAN4550_MCAN_INTERRUPT_ENABLE = 0x1B860203
TCAN4550_TXFIFO_STATUS = 0x00000000
TCAN4550_RXFIFO0_CONFIG = 0x10200380
TCAN4550_RXFIFO0_STATUS = 0x00000000
TCAN4550_PROTOCOL_STATUS = 0x00000708
TCAN4550_ERRCNT = 0x00000000
TCAN4550_TIMESTAMP_CV = 0x0000E800
TCAN4550_TIMESTAMP_CONFIG = 0x00000002
I am wondering what could be wrong?
Thanks,
Zhongwei Qiu
QNX



