TI中文支持网
TI专业的中文技术问题搜集分享网站

请教一个问题,包是我写的基于TMS570ls12x的launchpad的一个简单的can发送

请教一个问题,包是我写的基于TMS570ls12x的launchpad的一个简单的can1发送,在资料查明can1的RX和TX分别是J10的38和39孔,我用杜邦线与CANalyst-Ⅱ相连,如何用USB_CAN TOOL查看接收的数据,发现并没有预想的数据发送过来,请教各位大神帮我分析一下原因,谢谢~

自己尝试测试,分析仪没有问题,分析仪与USB_CAN TOOL连接也没有问题,请各位大神赐教test_can.rar

Susan Yang:

TMS570ls12x是有相关的CAN通信例程的,您可以参考下

/** @example example_canCommunication.c
*This is an example which describes the steps to create an example application which*configures two can nodes 1 and 2 and starts a communication with a sample data chunk.
*CAN 1 and CAN2 must be part of CAN network
*
**@b Step @b 1:
*
*Create a new project.
*
*Navigate: -> File -> New -> Project
*
*@image html example_createProject.jpg "Figure: Create a new Project"
*
*@b Step @b 2:
*
*Configure driver code generation:*- Enable can driver*- Disable others
*
*Navigate: -> TMS570LSxx /RM4 -> Enable Drivers
*
*@image html can_enabledriver.JPG "Figure: Enable CAN Driver"
*
*@b Step @b 3:
*
*Configure CAN Baudrate:*
*Navigate: -> TMS570LSxx /RM4 -> CAN
*
*@image html can1baud.JPG "Figure: CAN1 BaudRate Configuration"
*@image html can2baud.JPG "Figure: CAN2 BaudRate Configuration"
*
*@b Step @b 4:
*
*Configure CAN MessageBox:*
*- Configure CAN1 , MessageBox 1 -- Activate and Enable TX
*- Configure CAN2 , MessageBox 1 -- Activate and Enable RX
*
*Navigate: -> TMS570LSxx /RM4 -> CAN
*
*@image html canCommunication1.JPG "Figure: CAN1 MBox Configuration"
*@image html canCommunication2.JPG "Figure: CAN2 MBox Configuration"
*
*@b Step @b 5:
*
*Copy the source code below into your sys_main.c or replace sys_main.c with this file.
*
*The example file can also be found in the examples folder: ../HALCoGen/examples
*
*@note HALCoGen generates an empty main function in sys_main.c,*
*//** 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"#defineD_SIZE 9uint8tx_data[D_SIZE]= {'H','E','R','C','U','L','E','S','\0'};
uint8rx_data[D_SIZE] = {0};
uint32 error = 0;uint32 checkPackets(uint8 *src_packet,uint8 *dst_packet,uint32 psize);
/* USER CODE END *//** @fn void main(void)
*@brief Application main function
*
*//* 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);/*... wait until message receive on can2 */while(!canIsRxMessageArrived(canREG2, canMESSAGE_BOX1));canGetData(canREG2, canMESSAGE_BOX1, rx_data);/* receive on can2*//* check received data patterns */error = checkPackets(&tx_data[0],&rx_data[0],D_SIZE);/* ... run forever */while(1);/* USER CODE END */}/* USER CODE BEGIN (4) */
/** @fn checkPackets(uint8 *src_packet,uint8 *dst_packet,uint32 psize)
*@brief check two buffers and report error
*
*/
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 */

user5820093:

回复 Susan Yang:

好的,谢谢您慷慨的帮忙

Susan Yang:

回复 user5820093:

很高兴能帮到您!

赞(0)
未经允许不得转载:TI中文支持网 » 请教一个问题,包是我写的基于TMS570ls12x的launchpad的一个简单的can发送
分享到: 更多 (0)