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.

[参考译文] TMS320F28075:CAN 接口寄存器和 BUSY 位

Guru**** 2538930 points
Other Parts Discussed in Thread: C2000WARE

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/613547/tms320f28075-can-interface-registers-and-busy-bit

器件型号:TMS320F28075
主题中讨论的其他器件:C2000WARE

您好!
在《技术参考手册》中、我已经了解到接口寄存器中的许多位受忙位写保护。

我已经看到、在 TI 的 CAN driverlib (C2000Ware 1.0.1.0)中、以下序列用于更改邮箱位:

//------------ 序列1 ---

//
//配置邮箱号码
//
mailboxNum = 5;

//
//等待确保此接口不忙。
//
while (((HWREGH (CANB_BASE + CAN_O_IF1CMD)& CAN_IF1CMD_BUSY)== CAN_IF1CMD_BUSY)



//
//仅通过设置 CAN_IF1CMD_CLRINTPND 位来更改中断挂起状态。
//
HWREG_BP (CANB_BASE + CAN_O_IF1CMD)= CAN_IF1CMD_CLRINTPND;

//
//向 CAN 控制器发送清除挂起中断命令。
//
HWREGH (CANB_BASE + CAN_O_IF1CMD)= mailboxNum & CAN_IF1CMD_MSG_NUM_M;

//
//等待确保此接口不忙。
//
while (((HWREGH (CANB_BASE + CAN_O_IF1CMD)& CAN_IF1CMD_BUSY)== CAN_IF1CMD_BUSY)

//------------ 序列1的末尾--------------------------------------------------------


我很清楚这个顺序。


现在考虑以下序列:

//------------ 序列2-----

//
//配置邮箱号码
//
mailboxNum = 5;

//临时 RAM 变量
cmdRegisterTmp = CAN_IF2CMD_CONTROL |(mailboxNum & CAN_IF2CMD_MSG_NUM_M);

//
//等待确保接口1不忙。
//
while (((HWREGH (CANB_BASE + CAN_O_IF1CMD)& CAN_IF1CMD_BUSY)== CAN_IF1CMD_BUSY)


//
//仅通过设置来更改中断挂起状态
// CAN_IF1CMD_CLRINTPND 位。
//
HWREG_BP (CANB_BASE + CAN_O_IF1CMD)= CAN_IF1CMD_CLRINTPND;

//
//向 CAN 控制器发送清除挂起中断命令。
//
HWREGH (CANB_BASE + CAN_O_IF1CMD)= mailboxNum & CAN_IF1CMD_MSG_NUM_M;

//
//!!! 不要等待确保接口1不忙!!!
//
//
//通过接口寄存器2立即访问命令寄存器
//我知道 IF2寄存器不忙,因为我从未使用过它们
//
HWREG_BP (CANB_BASE + CAN_O_IF2CMD)= cmdRegisterTmp;

//------------ 序列2的末尾--------------------------------------------------------


序列2是否正确?
换句话说、如果我通过两个不同的接口寄存器集访问同一邮箱、我可以跳过 BUSY 位检查吗?

谢谢你。

此致、

Demis Biscaro

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我写信告诉您、C2000团队成员已被分配到此帖子、应该很快回答。

    此致
    Baskaran
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    演示

    否、如果您需要检查 IF1忙位以确认传输到消息 RAM 的操作已完成、然后再使用 IF2读取该值。

    此致
    Chris
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、
    感谢 Christptopher。

    此致、

    演示