Other Parts Discussed in Thread: AM2631, SYSCONFIG
主题: SysConfig 中讨论的其他器件
工具/软件:
您好:
我目前正在处理的 AM2631 上的 CAN 模块 、使用 TI 提供的低级驱动程序。
我在测试过程中遇到了以下问题:
当我尝试连续发送多个 CAN 帧(例如 10 帧)时、 第一次仅成功传输前几个帧(例如 3) 。
其余帧是 不立即发送 。
而是发送它们 下一次 我调用 send 函数 以及新数据 、结果为:
-
第一次传输期间仅发送部分帧;
-
其余帧延迟到下一次传输;
-
在总线上、我会观察到“最后一个调用的剩余帧+当前新数据“一起发送。
第一次尝试中发送的帧数为 不固定 ——有时 3、有时 4 或 5 等
我怀疑这可能与有关 可以发送队列、邮箱配置或中断处理 。
我想问:
-
请帮助检查是否存在 CAN 配置(邮箱,中断等) 对吗?
请在随附的文件中找到 CAN 低级配置。static void mcanInitMsgRamConfigParams(MCAN_MsgRAMConfigParams *msgRAMConfigParams) { int32_t status; MCAN_initMsgRamConfigParams(msgRAMConfigParams); /* Configure the user required msg ram params */ msgRAMConfigParams->lss = BMS_MCAN_STD_ID_FILTER_CNT; msgRAMConfigParams->lse = BMS_MCAN_EXT_ID_FILTER_CNT; msgRAMConfigParams->txBufCnt = BMS_MCAN_TX_BUFF_CNT; msgRAMConfigParams->txFIFOCnt = BMS_MCAN_TX_FIFO_CNT; /* Buffer/FIFO mode is selected */ msgRAMConfigParams->txBufMode = MCAN_TX_MEM_TYPE_BUF; msgRAMConfigParams->txEventFIFOCnt = BMS_MCAN_TX_EVENT_FIFO_CNT; msgRAMConfigParams->rxFIFO0Cnt = BMS_MCAN_FIFO_0_CNT; msgRAMConfigParams->rxFIFO1Cnt = BMS_MCAN_FIFO_1_CNT; /* FIFO blocking mode is selected */ msgRAMConfigParams->rxFIFO0OpMode = MCAN_RX_FIFO_OPERATION_MODE_BLOCKING; msgRAMConfigParams->rxFIFO1OpMode = MCAN_RX_FIFO_OPERATION_MODE_BLOCKING; status = MCAN_calcMsgRamParamsStartAddr(msgRAMConfigParams); DebugP_assert(status == CSL_PASS); return; } #define MCAN_STD_ID_FILTER_CNT (1U) /* Maximum EXT Filter Element can be configured is 64 */ #define MCAN_EXT_ID_FILTER_CNT (1U) /* Maximum TX Buffer + TX FIFO, combined can be configured is 32 */ #define MCAN_TX_BUFF_CNT (1U) #define MCAN_TX_FIFO_CNT (1U) /* Maximum TX Event FIFO can be configured is 32 */ #define MCAN_TX_EVENT_FIFO_CNT (10U) /* Maximum RX FIFO 0 can be configured is 64 */ #define MCAN_FIFO_0_CNT (32U) /* Maximum RX FIFO 1 can be configured is 64 and * rest of the memory is allocated to RX buffer which is again of max size 64 */ #define MCAN_FIFO_1_CNT (32U) #define MCAN_TX_MEM_TYPE_BUF (0U) /**< MCAN Tx Msg RAM buffers/FIFO */ #define MCAN_TX_MEM_TYPE_QUEUE (1U) /**< MCAN Tx Msg RAM Queue */ #define MCAN_DATA_SIZE_0BYTES (0U) /**< 0 byte data field */ #define MCAN_DATA_SIZE_1BYTES (1U) /**< 1 byte data field */ #define MCAN_DATA_SIZE_2BYTES (2U) /**< 2 byte data field */ #define MCAN_DATA_SIZE_3BYTES (3U) /**< 3 byte data field */ #define MCAN_DATA_SIZE_4BYTES (4U) /**< 4 byte data field */ #define MCAN_DATA_SIZE_5BYTES (5U) /**< 5 byte data field */ #define MCAN_DATA_SIZE_6BYTES (6U) /**< 6 byte data field */ #define MCAN_DATA_SIZE_7BYTES (7U) /**< 7 byte data field */ #define MCAN_DATA_SIZE_8BYTES (8U) /**< 8 byte data field */ #define MCAN_DATA_SIZE_12BYTES (9U) /**< 12 byte data field */ #define MCAN_DATA_SIZE_16BYTES (10U) /**< 16 byte data field */ #define MCAN_DATA_SIZE_20BYTES (11U) /**< 20 byte data field */ #define MCAN_DATA_SIZE_24BYTES (12U) /**< 24 byte data field */ #define MCAN_DATA_SIZE_32BYTES (13U) /**< 32 byte data field */ #define MCAN_DATA_SIZE_48BYTES (14U) /**< 48 byte data field */ #define MCAN_DATA_SIZE_64BYTES (15U) /**< 64 byte data field */
提前感谢您的支持!
