Other Parts Discussed in Thread: TMS570LC4357, HALCOGEN
器件型号: TMS570LC4357
主题中讨论的其他器件: HALCOGEN
您好、
在开发的系统中、我想以不同的赫兹值运行。 例如、第一种情况必须通过 CAN 总线传输 50 赫兹的数据、第二种情况必须通过 CAN 总线线路传输 100 赫兹的数据、第三种情况必须通过 CAN 总线线路接收 50 赫兹的数据。 我该如何处理这种情况?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Other Parts Discussed in Thread: TMS570LC4357, HALCOGEN
器件型号: TMS570LC4357
主题中讨论的其他器件: HALCOGEN
您好、
在开发的系统中、我想以不同的赫兹值运行。 例如、第一种情况必须通过 CAN 总线传输 50 赫兹的数据、第二种情况必须通过 CAN 总线线路传输 100 赫兹的数据、第三种情况必须通过 CAN 总线线路接收 50 赫兹的数据。 我该如何处理这种情况?
尊敬的 Dobby:
我以前从未遇到过这种要求。 因此、该主题没有任何直接的示例。
所以、我之所以要求使用内部 TI AI 工具、是因为该工具专门用于分析我们与该控制器相关的所有旧 e2e 主题以及与该控制器相关的所有文档。 在馈送您的要求到这个工具后,我得到了一些建议。 请参阅以下内容、可能会有所帮助。
RTI 模块可以以各种速率生成周期性中断。 您需要:
在 RTI 中断服务例程中、实施简单的任务调度器:
volatile uint32_t tick_counter = 0;
void rtiNotification(uint32 notification)
{
tick_counter++;
// Case 1: Transmit at 100 Hz (every tick if RTI is at 100 Hz)
if (tick_counter % 1 == 0) {
TransmitCANMessage_100Hz();
}
// Case 2: Transmit at 50 Hz (every 2 ticks if RTI is at 100 Hz)
if (tick_counter % 2 == 0) {
TransmitCANMessage_50Hz();
}
// Case 3: Receive handling can be done in CAN ISR
// or polled here if needed
}
对于每种变速器情况:
RTI 模块提供多个比较中断(通常为 4 个比较通道)(0)。 您可以为不同的速率配置不同的比较值:
// Example: Configure RTI for 100 Hz base rate // Assuming RTICLK = 80 MHz and you want 100 Hz // Period = 80,000,000 / 100 = 800,000 cycles rtiInit(); rtiEnableNotification(rtiNOTIFICATION_COMPARE0); rtiStartCounter(rtiCOUNTER_BLOCK0);
如果您愿意、也可以使用 CPU 计时器 以进行定期调度。 搜索结果显示了使用计时器 0 进行周期性 CAN 消息传输的示例:
//为周期性中断配置 CPU 计时器
//计时器中断将触发 CAN 传输
CAN 比特率与消息速率 :请注意,您所指的“赫兹“是 消息传输速率 (您发送消息的频率)、而不是 CAN 总线比特率(例如 500 kbps、1 Mbps)。 CAN 比特率在 DCAN 模块中单独配置。
消息优先级 :DCAN 模块根据优先级发送消息(以数字最低的消息对象优先)。 相应地计划您的消息 ID。
计时精度 : RTI 模块为 RTOS 应用提供精确的计时,是周期性 CAN 传输调度的理想选择。
接收 :要以特定速率接收消息、您可以:
1. Initialize DCAN module (configure bit rate, message objects) 2. Initialize RTI module (configure for 100 Hz or your base rate) 3. In RTI ISR: - Increment tick counter - Check if it's time to transmit each message - Trigger CAN transmission by setting TxRqst bit 4. For reception: - Configure CAN receive interrupt - Handle received messages in CAN ISR
--
此致、
Jagadish。