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.

[参考译文] TMS570LS0714:使用 example_canCommunication.c 接收数据时出现 CANbus 问题

Guru**** 2528790 points
Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1003879/tms570ls0714-canbus-problem-in-recieving-data-using-example_cancommunication-c

器件型号:TMS570LS0714
主题中讨论的其他器件:HALCOGEN

你(们)好

我将 TMS570ls07与 Halcogen 的 example_canCommunication 配合使用、 并且可以使用 CAN 适配器监视程序我能够将 TMS570ls07中的数据发送到  CAN 监视 程序并在 CAN 监视程序上看到它们、但当我无法在 TMS570中接收数据时、意味着我的 TMS570仅作为发送器工作、那么 有问题吗?

这是我 的原理图

/* 
* Copyright (C) 2009-2015 Texas Instruments Incorporated - www.ti.com
* 
* 
*  Redistribution and use in source and binary forms, with or without 
*  modification, are permitted provided that the following conditions 
*  are met:
*
*    Redistributions of source code must retain the above copyright 
*    notice, this list of conditions and the following disclaimer.
*
*    Redistributions in binary form must reproduce the above copyright
*    notice, this list of conditions and the following disclaimer in the 
*    documentation and/or other materials provided with the   
*    distribution.
*
*    Neither the name of Texas Instruments Incorporated nor the names of
*    its contributors may be used to endorse or promote products derived
*    from this software without specific prior written permission.
*
*  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
*  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
*  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
*  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
*  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
*  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT
*  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
*  DATA, OR PROFITS; OR BUSINESS INTERRUPTION HOWEVER CAUSED AND ON ANY
*  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
*  INCLUDING NEGLIGENCE OR OTHERWISE ARISING IN ANY WAY OUT OF THE USE
*  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/

/* USER CODE BEGIN (0) */
/* USER CODE END */

/* Include Files */

#include "sys_common.h"
#include "system.h"

/* USER CODE BEGIN (1) */
#include "can.h"

/* Include ESM header file - types, definitions and function declarations for system driver */
#include "esm.h"

#define  D_SIZE 9

uint8  tx_data[D_SIZE]  = {'H','E','R','C','U','L','E','S','\0'};
uint8  rx_data[D_SIZE] = {0};
uint32 error = 0;
uint32 cancounter = 0;

uint32 checkPackets(uint8 *src_packet,uint8 *dst_packet,uint32 psize);
/* USER CODE END */


/* USER CODE BEGIN (2) */
/* USER CODE END */


void main(void)
{
/* USER CODE BEGIN (3) */

    /* initialize can 1 and 2   */
    canInit(); /* can1 -> can2 */

    /* transmit on can1 */
    canTransmit(canREG1, canMESSAGE_BOX1, tx_data);

    /* ... run forever */
    while(1){
//        /*... wait until message receive on can2 */
//        while(!canIsRxMessageArrived(canREG1, canMESSAGE_BOX2));
//        canGetData(canREG1, canMESSAGE_BOX2, rx_data);  /* receive on can2  */

        if(canIsRxMessageArrived(canREG1, canMESSAGE_BOX2)){
                    canGetData(canREG1, canMESSAGE_BOX2, rx_data);
        }
        cancounter++;


    }

/* USER CODE END */
}

/* USER CODE BEGIN (4) */
uint32 checkPackets(uint8 *src_packet,uint8 *dst_packet,uint32 psize)
{
   uint32 err=0;
   uint32 cnt=psize;

   while(cnt--)
   {
     if((*src_packet++) != (*dst_packet++))
     {
        err++;           /*  data error  */
     }
   }
   return (err);
}
/* USER CODE END */

这是我的 halcogen 设置

我的代码如下所示

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

    HALCOGen 生成的 CAN 驱动程序使用29位报文 ID、但您的 CAN 适配器使用11位报文 ID。 您可以在两面尝试相同的格式吗?