工具与软件:
您好!
我正在使用 i.MX8MM 目标板上的 QNX800/QNX710 TCAN4550驱动器。 目标板有 uboot、可使用 uboot 加载 Linux 和 QNX IFS。
nINT 引脚连接到 GPIO 线路。
执行了以下测试。
1.将 CAN 消息从 Komodo 发送到目标板。
2.在目标板上、每1000ms 打印一次 TCAN4550寄存器。
当我先加载 Linux、然后立即执行关断时、目标板返回到 uboot、然后使用 uboot 加载 QNX800 IFS、执行上述测试、我可以在接收 CAN msg 时看到 RFON 和 M_CAN_INT 位均已设置。
如果我对目标板进行下电上电(关闭电源并再次打开)、然后使用 uboot 加载 QNX800 IFS、执行上述测试、这2个位绝不会在接收 CAN 消息时被设置。
如果我对目标板执行下电上电、然后使用 uboot 加载 QNX710、执行上述测试、我在接收 CAN 消息时可以看到 RFON 和 M_CAN_INT 两个位置位。
所有引脚多路复用均设置相同。 在这两种情况下、我都在 nINT/GPIO 引脚上收到中断。
调节器打印输出
#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)
(二 配置 TCAN4550后
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
**** 很好的例子、当收到 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
_________ 糟糕的情况、当收到 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
我想知道可能会出什么问题?
谢谢!
邱中卫
QNX



