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.

TMS320F280049C: 接口问题

Part Number: TMS320F280049C
Other Parts Discussed in Thread: LAUNCHXL-F280049C

1、我使用LAUNCHXL-F280049C与USBCAN进行连接,我使用的USBCAN的CANL与28004的CANL相连接,USBCAN的CANH与28004的CANH相连接。这种接法是否是对的?

2、我查看芯片手册LAUNCHXL-F280049C的CANA的gpio引脚是:CANA的TX是GPIO32=51引脚,RX是GPIO33=73引脚,我是该用gpio还是CANL和CANH?

3、我使用的LAUNCHXL-F280049C的发送程序can_ex4_simple_transmit,是不是可以通过示波器看到输出波形?现在没有波形是不是不对?如果不对是什么地方出现了问题呢?

我的示波器应该接什么地方能够采集到波形,是CANL和CANH?还是接GPIO?还是怎么接可以给一个结论么?

4、使用can_ex4_simple_transmit发送数据卡在  while(((HWREGH(CANA_BASE + CAN_O_ES) & CAN_ES_TXOK)) !=  CAN_ES_TXOK),是没有接收么?我之前问过这个问题你们回复是没有接收,但是我接的USBCAN和示波器都采集不到你们的信号。我用USBCAN发送信号示波器是可以采集到的,麻烦给我解决一下吧这个问题已经纠结了几天了。反复的问也没得到较好的解决。

辛苦了!

  • 1、我使用LAUNCHXL-F280049C与USBCAN进行连接,我使用的USBCAN的CANL与28004的CANL相连接,USBCAN的CANH与28004的CANH相连接。这种接法是否是对的?

    是的,这样连接是正确的

    2、我查看芯片手册LAUNCHXL-F280049C的CANA的gpio引脚是:CANA的TX是GPIO32=51引脚,RX是GPIO33=73引脚,我是该用gpio还是CANL和CANH?

    不知您使用的是哪个版本的launchpad?我手边这个是MCU025A,原理图如下

    3、我使用的LAUNCHXL-F280049C的发送程序can_ex4_simple_transmit,是不是可以通过示波器看到输出波形?现在没有波形是不是不对?如果不对是什么地方出现了问题呢?

    您可以看一下

    https://www.ti.com.cn/cn/lit/an/sprace5a/sprace5a.pdf 

    Figure 2-5 depicts the waveform on the CANTXA pin

    使用can_ex4_simple_transmit发送数据卡在  while(((HWREGH(CANA_BASE + CAN_O_ES) & CAN_ES_TXOK)) !=  CAN_ES_TXOK),是没有接收么?

    是没有发送成功,若是发送成功的话,CAN_ES_TXOK是会置1的

    建议您检查下硬件配置。另外您是否确保 USB CAN 分析仪上的比特率设置为与 MCU 匹配?

  • 我把USBCAN的比特率所有的都是测试了还是不对,现在不知道到底是说明原因了。可以帮忙想一下办法能解决这个问题么?

  • 1 请将您的开发板和USBCAN分析仪以及两者之间的连线拍照

    2 对USBCAN分析仪软件的配置部分截图

    3 说明一下您现在使用的例程以及是否有进行修改

    我会在汇总给出的信息之后咨询下相关的同事

  • 1、将28377s的can_ex4_simple_transmit原程序移植进280049C中完全没有改动。我手里有28377卡发版也试过can_ex4_simple_transmit这个程序了同样的效果。

    2、与USBCAN接线图片

    3、USBCAN的界面状况完全收不到消息,如果能收到消息上图中的绿灯会闪烁。

  • USBCAN与280049开发板连接,USBCAN进行环回测试是可以收到数据的,但是给DSP发数据DSP收不到。DSP发数据USBCAN也收不到。

  • 与USBCAN接线图片

    GND没有连接?

  • 是的没接GND,有影响?

  • 我的这个USBCAN跟280049连接不上怎么办呢?

    我之前看到一篇帖子跟我的差不多了,但是最后不了了之了。我的这个一定要解决掉,我在等着做课题呢。麻烦一定要给一个方案解决的

  • 将28377s的can_ex4_simple_transmit原程序移植进280049C中完全没有改动

    还是需要更改CAN的引脚的,两者开发板的CANTX/CANRX引脚是不同的

    28377S:

    您需要根据您的l280049 launchpad版本来查找原理图中的CAN引脚

  • 哪我用28377S的板卡也不好用啊,怎么办呢?我手里2块280049和一块28377S和串口连接都不好用啊。怎么办?

  • 另外使用launchpad的话需要添加预编译

    无论哪个launchpad,您都需要根据开发板原理图来查看CAN引脚并在例程中进行确认、修改

  • 下面是我用28379D launchpad接收 USB-CAN分析仪发送数据的截图,可以成功进入接收

  • 您好:您这个是2块板卡跑到收发么?然后成功的收发到了是么?

  • 我这个是USB-CAN的上位机发送数据给28379D launchpad,28379D launchpad可以成功进入接收函数

    接收到的,就是USB-CAN的上位机发送的数据

  • 您是直接接的CANL和CANH引脚这么做的是吧?

  • 我查看了手边的USB-CAN,接线是直接接的CANL和CANH引脚,也接了地线

    您需要查看您USB-CAN的相关文档来确认接线

  • 好吧,你这边成功了我要看一下自己的到底是是么问题。您的程序也是官方的没有改动的是吧?

  • 如之前所说,需要根据您实际开发板的版本对照原理图来修改例程内的CAN引脚,其他没有改动

  • 非常感谢您的帮助,我在找一下问题所在!

  • 不客气,期待您的反馈

  • 你好可以上传一张你的USBCAN的型号或照片么。我准备在买一个USBCAN,不知道是谁的问题了。

  • 我的也是很古老的型号了,建议您买一下比较流行的大众款就好了

    建议您阅读一下您现在USBCAN的说明书,是否有需要特殊配置的地方

  • USBCAN在发送数据状态我测量canl和canh与没有发送数据状态电压一样是不是不对呢?

  • 你好麻烦你问一下,GPIO_70_CANRXA;GPIO_71_CANTXA的复用是怎么弄的啊。不会用啊,可以麻烦把您的那个程序如何配置发给我么?发到邮箱就可以了。谢谢了不知道您是用的库函数么?

  • 可以麻烦把您的那个程序如何配置发给我么?

    这个在文档内有说明的 https://www.ti.com.cn/cn/lit/an/sprace5a/sprace5a.pdf  

    在我28379D的程序中

    //
    // Configure GPIO pins for CANTX/CANRX
    //
    GPIO_setPinConfig(DEVICE_GPIO_CFG_CANRXB);
    GPIO_setPinConfig(DEVICE_GPIO_CFG_CANTXB);

    根据原理图使用的是

    在device.h内修改语句

    #define DEVICE_GPIO_CFG_CANRXB GPIO_17_CANRXB // "pinConfig" for CANB RX
    #define DEVICE_GPIO_CFG_CANTXB GPIO_12_CANTXB // "pinConfig" for CANB TX

  • 您好由于我用的是28377S

    我看了一下程序里关与这个引脚的定义是复用的,由于之前用的是ADI。现在刚转用TI,所以不太懂你们这个复用引脚该如何定义和调用。

  • 我看了一下程序里关与这个引脚的定义是复用的

    请给出代码。例程内是没有被复用的

  • 麻烦你看一下:

    #define GPIO_70_GPIO70 0x00860C00U
    #define GPIO_70_EM1D14 0x00860C02U
    #define GPIO_70_EMU0 0x00860C03U
    #define GPIO_70_CANRXA 0x00860C05U
    #define GPIO_70_SCITXDB 0x00860C06U
    #define GPIO_70_SPISOMIC 0x00860C0FU

    #define GPIO_71_GPIO71 0x00860E00U
    #define GPIO_71_EM1D13 0x00860E02U
    #define GPIO_71_EMU1 0x00860E03U
    #define GPIO_71_CANTXA 0x00860E05U
    #define GPIO_71_SCIRXDB 0x00860E06U
    #define GPIO_71_SPICLKC 0x00860E0FU

  • 这个只是给出了定义,您可以看一下device.h内的定义

    //#############################################################################
    //
    // FILE:   device.h
    //
    // TITLE:  Device setup for examples.
    //
    //#############################################################################
    // $TI Release: F2837xD Support Library v3.11.00.00 $
    // $Release Date: Sun Oct  4 15:55:24 IST 2020 $
    // $Copyright:
    // Copyright (C) 2013-2020 Texas Instruments Incorporated - http://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.
    // $
    //#############################################################################
    
    //
    // Included Files
    //
    #include "driverlib.h"
    
    #if (!defined(CPU1) && !defined(CPU2))
    #error "You must define CPU1 or CPU2 in your project properties.  Otherwise, \
    the offsets in your header files will be inaccurate."
    #endif
    
    #if (defined(CPU1) && defined(CPU2))
    #error "You have defined both CPU1 and CPU2 in your project properties.  Only \
    a single CPU should be defined."
    #endif
    
    //*****************************************************************************
    //
    // Defines for pin numbers and other GPIO configuration
    //
    //*****************************************************************************
    //
    // LEDs
    //
    #ifdef _LAUNCHXL_F28379D
    #define DEVICE_GPIO_PIN_LED1        31U  // GPIO number for LD10
    #define DEVICE_GPIO_PIN_LED2        34U  // GPIO number for LD9
    #define DEVICE_GPIO_CFG_LED1        GPIO_31_GPIO31  // "pinConfig" for LD10
    #define DEVICE_GPIO_CFG_LED2        GPIO_34_GPIO34  // "pinConfig" for LD9
    #else
    #define DEVICE_GPIO_PIN_LED1        31U  // GPIO number for LD2
    #define DEVICE_GPIO_PIN_LED2        34U  // GPIO number for LD3
    #define DEVICE_GPIO_CFG_LED1        GPIO_31_GPIO31  // "pinConfig" for LD2
    #define DEVICE_GPIO_CFG_LED2        GPIO_34_GPIO34  // "pinConfig" for LD3
    #endif
    
    
    //
    // SCI for USB-to-UART adapter on FTDI chip
    //
    #ifdef _LAUNCHXL_F28379D
    #define DEVICE_GPIO_PIN_SCIRXDA     43U             // GPIO number for SCI RX
    #define DEVICE_GPIO_PIN_SCITXDA     42U             // GPIO number for SCI TX
    #define DEVICE_GPIO_CFG_SCIRXDA     GPIO_43_SCIRXDA // "pinConfig" for SCI RX
    #define DEVICE_GPIO_CFG_SCITXDA     GPIO_42_SCITXDA // "pinConfig" for SCI TX
    #else
    #define DEVICE_GPIO_PIN_SCIRXDA     28U             // GPIO number for SCI RX
    #define DEVICE_GPIO_PIN_SCITXDA     29U             // GPIO number for SCI TX
    #define DEVICE_GPIO_CFG_SCIRXDA     GPIO_28_SCIRXDA // "pinConfig" for SCI RX
    #define DEVICE_GPIO_CFG_SCITXDA     GPIO_29_SCITXDA // "pinConfig" for SCI TX
    #endif
    
    //
    // CANA
    //
    #define DEVICE_GPIO_PIN_CANTXA      31U  // GPIO number for CANTXA
    #define DEVICE_GPIO_PIN_CANRXA      30U  // GPIO number for CANRXA
    
    //
    // CAN External Loopback
    //
    #define DEVICE_GPIO_CFG_CANRXA      GPIO_30_CANRXA  // "pinConfig" for CANA RX
    #define DEVICE_GPIO_CFG_CANTXA      GPIO_31_CANTXA  // "pinConfig" for CANA TX
    #define DEVICE_GPIO_CFG_CANRXB      GPIO_17_CANRXB  // "pinConfig" for CANB RX
    #define DEVICE_GPIO_CFG_CANTXB      GPIO_12_CANTXB   // "pinConfig" for CANB TX
    
    //*****************************************************************************
    //
    // Defines related to clock configuration
    //
    //*****************************************************************************
    //
    // Launchpad Configuration
    //
    #ifdef _LAUNCHXL_F28379D
    
    //
    // 10MHz XTAL on LaunchPad. For use with SysCtl_getClock().
    //
    #define DEVICE_OSCSRC_FREQ          10000000U
    
    //
    // Define to pass to SysCtl_setClock(). Will configure the clock as follows:
    // PLLSYSCLK = 10MHz (XTAL_OSC) * 40 (IMULT) * 1 (FMULT) / 2 (PLLCLK_BY_2)
    //
    #define DEVICE_SETCLOCK_CFG         (SYSCTL_OSCSRC_XTAL | SYSCTL_IMULT(40) |  \
                                         SYSCTL_FMULT_NONE | SYSCTL_SYSDIV(2) |   \
                                         SYSCTL_PLL_ENABLE)
    
    //
    // 200MHz SYSCLK frequency based on the above DEVICE_SETCLOCK_CFG. Update the
    // code below if a different clock configuration is used!
    //
    #define DEVICE_SYSCLK_FREQ          ((DEVICE_OSCSRC_FREQ * 40 * 1) / 2)
    
    //
    // ControlCARD Configuration
    //
    #else
    
    //
    // 20MHz XTAL on controlCARD. For use with SysCtl_getClock().
    //
    #define DEVICE_OSCSRC_FREQ          20000000U
    
    //
    // Define to pass to SysCtl_setClock(). Will configure the clock as follows:
    // PLLSYSCLK = 20MHz (XTAL_OSC) * 20 (IMULT) * 1 (FMULT) / 2 (PLLCLK_BY_2)
    //
    #define DEVICE_SETCLOCK_CFG         (SYSCTL_OSCSRC_XTAL | SYSCTL_IMULT(20) |  \
                                         SYSCTL_FMULT_NONE | SYSCTL_SYSDIV(2) |   \
                                         SYSCTL_PLL_ENABLE)
    
    //
    // 200MHz SYSCLK frequency based on the above DEVICE_SETCLOCK_CFG. Update the
    // code below if a different clock configuration is used!
    //
    #define DEVICE_SYSCLK_FREQ          ((DEVICE_OSCSRC_FREQ * 20 * 1) / 2)
    
    #endif
    
    //
    // 50MHz LSPCLK frequency based on the above DEVICE_SYSCLK_FREQ and a default
    // low speed peripheral clock divider of 4. Update the code below if a
    // different LSPCLK divider is used!
    //
    #define DEVICE_LSPCLK_FREQ          (DEVICE_SYSCLK_FREQ / 4)
    
    //*****************************************************************************
    //
    // Macro to call SysCtl_delay() to achieve a delay in microseconds. The macro
    // will convert the desired delay in microseconds to the count value expected
    // by the function. \b x is the number of microseconds to delay.
    //
    //*****************************************************************************
    #define DEVICE_DELAY_US(x) SysCtl_delay(((((long double)(x)) / (1000000.0L /  \
                                  (long double)DEVICE_SYSCLK_FREQ)) - 9.0L) / 5.0L)
    
    //
    // The macros that can be used as parameter to the function Device_bootCPU2
    //
    #define C1C2_BROM_BOOTMODE_BOOT_FROM_PARALLEL                        0x00000000U
    #define C1C2_BROM_BOOTMODE_BOOT_FROM_SCI                             0x00000001U
    #define C1C2_BROM_BOOTMODE_BOOT_FROM_SPI                             0x00000004U
    #define C1C2_BROM_BOOTMODE_BOOT_FROM_I2C                             0x00000005U
    #define C1C2_BROM_BOOTMODE_BOOT_FROM_CAN                             0x00000007U
    #define C1C2_BROM_BOOTMODE_BOOT_FROM_RAM                             0x0000000AU
    #define C1C2_BROM_BOOTMODE_BOOT_FROM_FLASH                           0x0000000BU
    
    //
    // Other macros that are needed for the Device_bootCPU2 function
    //
    #define BROM_IPC_EXECUTE_BOOTMODE_CMD                                0x00000013U
    #define C1C2_BROM_BOOTMODE_BOOT_COMMAND_MAX_SUPPORT_VALUE            0x0000000CU
    #define C2_BOOTROM_BOOTSTS_C2TOC1_IGNORE                             0x00000000U
    #define C2_BOOTROM_BOOTSTS_SYSTEM_START_BOOT                         0x00000001U
    #define C2_BOOTROM_BOOTSTS_SYSTEM_READY                              0x00000002U
    #define C2_BOOTROM_BOOTSTS_C2TOC1_BOOT_CMD_ACK                       0x00000003U
    #define C2_BOOTROM_BOOTSTS_C2TOC1_BOOT_CMD_NAK_STATUS_NOT_SUPPORTED  0x00000004U
    #define C2_BOOTROM_BOOTSTS_C2TOC1_BOOT_CMD_NAK_STATUS_BUSY_WITH_BOOT 0x00000005U
    
    //
    // Macros used as return value by the Device_bootCPU2 function
    //
    #define STATUS_FAIL                 0x0001
    #define STATUS_PASS                 0x0000
    
    //*****************************************************************************
    //
    // Defines, Globals, and Header Includes related to Flash Support
    //
    //*****************************************************************************
    #ifdef _FLASH
    #include <stddef.h>
    
    extern uint16_t RamfuncsLoadStart;
    extern uint16_t RamfuncsLoadEnd;
    extern uint16_t RamfuncsLoadSize;
    extern uint16_t RamfuncsRunStart;
    extern uint16_t RamfuncsRunEnd;
    extern uint16_t RamfuncsRunSize;
    
    #define DEVICE_FLASH_WAITSTATES 3
    
    #endif
    
    extern uint32_t Example_PassCount;
    extern uint32_t Example_Fail;
    
    //*****************************************************************************
    //
    // Function Prototypes
    //
    //*****************************************************************************
    extern void Device_init(void);
    extern void Device_enableAllPeripherals(void);
    extern void Device_initGPIO(void);
    extern void Device_enableUnbondedGPIOPullupsFor176Pin(void);
    extern void Device_enableUnbondedGPIOPullupsFor100Pin(void);
    extern void Device_enableUnbondedGPIOPullups(void);
    #ifdef CPU1
    extern void Device_configureTMXAnalogTrim(void);
    extern uint16_t Device_bootCPU2(uint32_t ulBootMode);
    #endif
    extern void __error__(char *filename, uint32_t line);
    extern void Example_setResultPass(void);
    extern void Example_setResultFail(void);
    extern void Example_done(void);
    
    //
    // End of file
    //