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.

[参考译文] CCS/TMS320F28379D:C2000Ware Driverlib 1.0.3.0无法发送数据

Guru**** 2539500 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/680979/ccs-tms320f28379d-c2000ware-driverlib-1-0-3-0-can-not-sending-data

器件型号:TMS320F28379D

工具/软件:Code Composer Studio

您好!

我尝试让 Driverlib 工作、但没有成功。 我已经尝试过 loopback.c 和 loopback_interrupts.c 示例、它们运行正常。 现在、我正在尝试 external_transmit。c、但没有发送数据。

我打开了 external_transmit 示例、更改了 for 循环以继续发送消息:

对于(I = 0;I < TXCOUNT;I++)
{
//
//检查错误标志以查看是否发生错误
//
// if (errorFlag)
// {
// asm (" ESTOP0");
//}

//
//验证传输的消息数是否等于的数量
//发送新消息之前收到的消息
//
// if (txMsgCount = rxMsgCount)
// {
CAN_sendMessage (CANA_base、TX_MSG_OBJ_ID、MSG_DATA_LENGTH、
txMsgData);
txMsgCount++;
//}
// else
// {
// errorFlag = 1;
//}

//
//在继续前延迟0.25秒
//
DEVICE_DELAY_US (250000);

//
//递增发送消息数据中的值。
//
txMsgData[0]+= 0x01;
txMsgData[1]+= 0x01;
txMsgData[2]+= 0x01;
txMsgData[3]+= 0x01;

//
//如果超过一个字节、则复位数据
//
if (txMsgData[0]> 0xFF)
{
txMsgData[0]= 0;
}
if (txMsgData[1]> 0xFF)
{
txMsgData[1]= 0;
}
if (txMsgData[2]> 0xFF)
{
txMsgData[2]= 0;
}
if (txMsgData[3]> 0xFF)
{
txMsgData[3]= 0;
}
} 

 重新构建了它并将其上传到了我的 F28379D LaunchPad。 我已将示波器连接到 TX 引脚、我可以看到、在发送第一条消息时、线路从低电平变为高电平(3.3V)并保持高电平。

我已将"txMsgCount"和"rxMsgCount"变量添加到表达式监视中。 "txMsgCount"持续递增、但 TX 线永远不会切换。

如果有任何建议,将不胜感激。

编辑:我发现、如果我通过启用外部环回模式中的测试模式  

CAN_enableTestMode (CANA_base、CAN_TEST_EXL); 

则 TX 线会切换。 如果我取出这条线、则 TX 线停止切换。

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

    检查 CAN ES (错误和状态)寄存器、由于环路未完成、模块很可能进入错误模式且仅传输隐性位(除非您指定外部环回、除非您可以监控 TX 引脚)。

    该网站提供了有关如何工作的良好一般性概述: www.kvaser.com/.../

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

    感谢你的建议。 我看了 ES 寄存器、唯一设置的是 LEC 标志。 一旦外设被初始化、此值就被设定为7。 在整个运行时间内不会设置其他标志。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我已经解决了我的问题。

     我不使用 CAN_ex3_external_transmit。c、而是采用  CAN_ex2_loopback _interrupts.c  示例、并将其配置为通过收发器通过 F28379D LaunchPad 上的 CANB 发送 CAN 消息。

    我可以确认通过中断发送和接收 CAN 消息的工作正常。