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.

[参考译文] TMS320F28379D:哪个 CAN.c 必须参考???

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

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/609421/tms320f28379d-which-can-c-has-to-refer

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

大家好、

对于 dcan、必须参考哪个 ca.c? 例如、项目可以从弃用路径链接.c?

C:\ti\c2000Ware_1_00_01_00\driverlib\f2837xd\driverlib\ca.c
C:\ti\c2000Ware_1_00_01_00\device_support\f2837xd\common\弃 用\driverlib\ca.c

我有一个疑问、请您澄清一下吗? 添加了两次注释"//循环通篇以对所有32个报文对象进行编程"中提到的逻辑,有没有具体原因??  

(三

无效
CANInit (uint32_t ui32Base)

int16_t iMsg;

//检查参数。
ASSERT (CANBaseValid (ui32Base));

//将 CAN 控制器置于初始化状态,与之前的状态无关。 这种情况
//将控制器置于空闲状态,并允许消息对象 RAM 处于空闲状态
//已编程。

HWREGH (ui32Base + CAN_O_CTL)= CAN_CTL_init;
HWREGH (ui32Base + CAN_O_CTL)= CAN_CTL_SWR;

//等待忙位清零
while (HWREGH (ui32Base + CAN_O_IF1CMD)和 CAN_IF1CMD_BUSY)

//清除仲裁寄存器中的报文值位。 这表示
//消息无效,是一个“安全”条件,可以离开消息
//对象。 相同的 ARB reg 用于对所有报文对象进行编程。
HWREGH (ui32Base + CAN_O_IF1CMD + 2)=(CAN_IF1CMD_DIR | CAN_IF1CMD_ARB |
CAN_IF1CMD_CONTROL)>> 16;
HWREGH (ui32Base + CAN_O_IF1ARB)= 0;
HWREGH (ui32Base + CAN_O_IF1ARB + 2)= 0;

HWREGH (ui32Base + CAN_O_IF1MCTL)= 0;
HWREGH (ui32Base + CAN_O_IF1MCTL + 2)= 0;

HWREGH (ui32Base + CAN_O_IF2CMD + 2)=(CAN_IF2CMD_DIR | CAN_IF2CMD_ARB |
CAN_IF2CMD_CONTROL)>> 16;
HWREGH (ui32Base + CAN_O_IF2ARB)= 0;
HWREGH (ui32Base + CAN_O_IF2ARB + 2)= 0;

HWREGH (ui32Base + CAN_O_IF2MCTL)= 0;
HWREGH (ui32Base + CAN_O_IF2MCTL + 2)= 0;

//循环以编程全部32个报文对象
for (iMsg = 1;iMsg <= 32;iMsg+=2)

//等待忙位清零
while (HWREGH (ui32Base + CAN_O_IF1CMD)和 CAN_IF1CMD_BUSY)

//开始对消息对象进行编程
HWREGH (ui32Base + CAN_O_IF1CMD)= iMsg;

//等待忙位清零
while (HWREGH (ui32Base + CAN_O_IF2CMD)和 CAN_IF2CMD_BUSY)

//开始对消息对象进行编程
HWREGH (ui32Base + CAN_O_IF2CMD)= iMsg + 1;

//确保更新的中断和新数据标志
//消息对象。
HWREGH (ui32Base + CAN_O_IF1CMD + 2)=(CAN_IF1CMD_TXRQST |
CAN_IF1CMD_CLRINTPND)>> 16;
HWREGH (ui32Base + CAN_O_IF2CMD + 2)=(CAN_IF2CMD_TXRQST |
CAN_IF2CMD_CLRINTPND)>> 16;

//循环以编程全部32个报文对象
for (iMsg = 1;iMsg <= 32;iMsg+=2)

//等待忙位清零。
while (HWREGH (ui32Base + CAN_O_IF1CMD)和 CAN_IF1CMD_BUSY)

//开始对消息对象进行编程
HWREGH (ui32Base + CAN_O_IF1CMD)= iMsg;

//等待忙位清零。
while (HWREGH (ui32Base + CAN_O_IF2CMD)和 CAN_IF2CMD_BUSY)

//开始对消息对象进行编程
HWREGH (ui32Base + CAN_O_IF2CMD)= iMsg + 1;

//确认任何挂起状态中断。
HWREG (ui32Base + CAN_O_ES);

(三

谢谢

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

    两者都适用于 DCAN、但\driverlib\f2837xd\driverlib\CAN.c 下的版本较新、建议使用。 请参阅\driverlib\f2837xd 下的示例。

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

    大家好、Christopher Chiarella、

    在所有与 dCAN 相关的示例代码中、链接到 C:\ti\c2000Ware_1_00_01_00\device_support\f2837xd\common\de弃 用\driverlib\ca.c

    用户指南中似乎没有提到 C:\ti\c2000\C2000Ware_1_00_01_00\driverlib\f2837xd\driverlib\ca.c.

    谢谢

    Ashok .K

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

    与新的 driverlib 相关的 driverlib 示例位于此处"C:\ti\c2000Ware_1_00_01_00\driverlib\f2837xd\examples\cpu1"
    器件支持文档文件夹"F2837xD_DriverLib_Users_Guide"中的 driverlib 用户指南中详细介绍了 API。

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

    大家好、Christopher Chiarella、

    使用 dCAN 接口连接到 devlop 引导加载程序,哪种方法更好地使用 driverlib 或 bitfield?

    我已经为我的应用使用位字段方法实现了 dcan drvier API、现在添加了位字段方法中遗漏的 driverlib API、现在我的 API 将采用混合模型- driverlib 和位字段、理想情况下不会影响功能、对吗?  

    谢谢

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

    是的、在同一应用程序中使用位字段和 driverlib 没有问题。
    您可以使用您喜欢的任何方法。 driverlib 具有已经开发并经过测试的 API 的优势。

    此致
    Chris