Part Number:TMS320F280049COther 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发送信号示波器是可以采集到的,麻烦给我解决一下吧这个问题已经纠结了几天了。反复的问也没得到较好的解决。
辛苦了!
Susan Yang:
shipeng huang 说:1、我使用LAUNCHXL-F280049C与USBCAN进行连接,我使用的USBCAN的CANL与28004的CANL相连接,USBCAN的CANH与28004的CANH相连接。这种接法是否是对的?
是的,这样连接是正确的
shipeng huang 说:2、我查看芯片手册LAUNCHXL-F280049C的CANA的gpio引脚是:CANA的TX是GPIO32=51引脚,RX是GPIO33=73引脚,我是该用gpio还是CANL和CANH?
不知您使用的是哪个版本的launchpad?我手边这个是MCU025A,原理图如下
shipeng huang 说: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
shipeng huang 说:使用can_ex4_simple_transmit发送数据卡在 while(((HWREGH(CANA_BASE + CAN_O_ES) & CAN_ES_TXOK)) != CAN_ES_TXOK),是没有接收么?
是没有发送成功,若是发送成功的话,CAN_ES_TXOK是会置1的
建议您检查下硬件配置。另外您是否确保 USB CAN 分析仪上的比特率设置为与 MCU 匹配?
,
shipeng huang:
我把USBCAN的比特率所有的都是测试了还是不对,现在不知道到底是说明原因了。可以帮忙想一下办法能解决这个问题么?
,
Susan Yang:
1 请将您的开发板和USBCAN分析仪以及两者之间的连线拍照
2 对USBCAN分析仪软件的配置部分截图
3 说明一下您现在使用的例程以及是否有进行修改
我会在汇总给出的信息之后咨询下相关的同事
,
shipeng huang:
1、将28377s的can_ex4_simple_transmit原程序移植进280049C中完全没有改动。我手里有28377卡发版也试过can_ex4_simple_transmit这个程序了同样的效果。
2、与USBCAN接线图片
3、USBCAN的界面状况完全收不到消息,如果能收到消息上图中的绿灯会闪烁。
,
shipeng huang:
USBCAN与280049开发板连接,USBCAN进行环回测试是可以收到数据的,但是给DSP发数据DSP收不到。DSP发数据USBCAN也收不到。
,
Susan Yang:
shipeng huang 说:与USBCAN接线图片
GND没有连接?
,
shipeng huang:
是的没接GND,有影响?
,
shipeng huang:
我的这个USBCAN跟280049连接不上怎么办呢?
我之前看到一篇帖子跟我的差不多了,但是最后不了了之了。我的这个一定要解决掉,我在等着做课题呢。麻烦一定要给一个方案解决的
,
Susan Yang:
shipeng huang 说:将28377s的can_ex4_simple_transmit原程序移植进280049C中完全没有改动
还是需要更改CAN的引脚的,两者开发板的CANTX/CANRX引脚是不同的
28377S:
您需要根据您的l280049 launchpad版本来查找原理图中的CAN引脚
,
shipeng huang:
哪我用28377S的板卡也不好用啊,怎么办呢?我手里2块280049和一块28377S和串口连接都不好用啊。怎么办?
,
Susan Yang:
另外使用launchpad的话需要添加预编译
无论哪个launchpad,您都需要根据开发板原理图来查看CAN引脚并在例程中进行确认、修改
,
Susan Yang:
下面是我用28379D launchpad接收 USB-CAN分析仪发送数据的截图,可以成功进入接收
,
shipeng huang:
您好:您这个是2块板卡跑到收发么?然后成功的收发到了是么?
,
Susan Yang:
我这个是USB-CAN的上位机发送数据给28379D launchpad,28379D launchpad可以成功进入接收函数
接收到的,就是USB-CAN的上位机发送的数据
,
shipeng huang:
您是直接接的CANL和CANH引脚这么做的是吧?
,
Susan Yang:
我查看了手边的USB-CAN,接线是直接接的CANL和CANH引脚,也接了地线
您需要查看您USB-CAN的相关文档来确认接线
,
shipeng huang:
好吧,你这边成功了我要看一下自己的到底是是么问题。您的程序也是官方的没有改动的是吧?
,
Susan Yang:
如之前所说,需要根据您实际开发板的版本对照原理图来修改例程内的CAN引脚,其他没有改动
,
shipeng huang:
非常感谢您的帮助,我在找一下问题所在!
,
Susan Yang:
不客气,期待您的反馈
,
shipeng huang:
你好可以上传一张你的USBCAN的型号或照片么。我准备在买一个USBCAN,不知道是谁的问题了。
,
Susan Yang:
我的也是很古老的型号了,建议您买一下比较流行的大众款就好了
建议您阅读一下您现在USBCAN的说明书,是否有需要特殊配置的地方
,
shipeng huang:
USBCAN在发送数据状态我测量canl和canh与没有发送数据状态电压一样是不是不对呢?
,
shipeng huang:
你好麻烦你问一下,GPIO_70_CANRXA;GPIO_71_CANTXA的复用是怎么弄的啊。不会用啊,可以麻烦把您的那个程序如何配置发给我么?发到邮箱就可以了。谢谢了不知道您是用的库函数么?
,
Susan Yang:
shipeng huang 说:可以麻烦把您的那个程序如何配置发给我么?
这个在文档内有说明的 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
,
shipeng huang:
您好由于我用的是28377S
我看了一下程序里关与这个引脚的定义是复用的,由于之前用的是ADI。现在刚转用TI,所以不太懂你们这个复用引脚该如何定义和调用。
,
Susan Yang:
shipeng huang 说:我看了一下程序里关与这个引脚的定义是复用的
请给出代码。例程内是没有被复用的
,
shipeng huang:
麻烦你看一下:
#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
,
Susan Yang:
这个只是给出了定义,您可以看一下device.h内的定义
//############################################################################# // // FILE:device.h // // TITLE:Device setup for examples. // //############################################################################# // $TI Release: F2837xD Support Library v3.11.00.00 $ // $Release Date: Sun Oct4 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_LED131U// GPIO number for LD10 #define DEVICE_GPIO_PIN_LED234U// GPIO number for LD9 #define DEVICE_GPIO_CFG_LED1GPIO_31_GPIO31// "pinConfig" for LD10 #define DEVICE_GPIO_CFG_LED2GPIO_34_GPIO34// "pinConfig" for LD9 #else #define DEVICE_GPIO_PIN_LED131U// GPIO number for LD2 #define DEVICE_GPIO_PIN_LED234U// GPIO number for LD3 #define DEVICE_GPIO_CFG_LED1GPIO_31_GPIO31// "pinConfig" for LD2 #define DEVICE_GPIO_CFG_LED2GPIO_34_GPIO34// "pinConfig" for LD3 #endif// // SCI for USB-to-UART adapter on FTDI chip // #ifdef _LAUNCHXL_F28379D #define DEVICE_GPIO_PIN_SCIRXDA43U// GPIO number for SCI RX #define DEVICE_GPIO_PIN_SCITXDA42U// GPIO number for SCI TX #define DEVICE_GPIO_CFG_SCIRXDAGPIO_43_SCIRXDA // "pinConfig" for SCI RX #define DEVICE_GPIO_CFG_SCITXDAGPIO_42_SCITXDA // "pinConfig" for SCI TX #else #define DEVICE_GPIO_PIN_SCIRXDA28U// GPIO number for SCI RX #define DEVICE_GPIO_PIN_SCITXDA29U// GPIO number for SCI TX #define DEVICE_GPIO_CFG_SCIRXDAGPIO_28_SCIRXDA // "pinConfig" for SCI RX #define DEVICE_GPIO_CFG_SCITXDAGPIO_29_SCITXDA // "pinConfig" for SCI TX #endif// // CANA // #define DEVICE_GPIO_PIN_CANTXA31U// GPIO number for CANTXA #define DEVICE_GPIO_PIN_CANRXA30U// GPIO number for CANRXA// // CAN External Loopback // #define DEVICE_GPIO_CFG_CANRXAGPIO_30_CANRXA// "pinConfig" for CANA RX #define DEVICE_GPIO_CFG_CANTXAGPIO_31_CANTXA// "pinConfig" for CANA TX #define DEVICE_GPIO_CFG_CANRXBGPIO_17_CANRXB// "pinConfig" for CANB RX #define DEVICE_GPIO_CFG_CANTXBGPIO_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_FREQ10000000U// // 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_FREQ20000000U// // 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_PARALLEL0x00000000U #define C1C2_BROM_BOOTMODE_BOOT_FROM_SCI0x00000001U #define C1C2_BROM_BOOTMODE_BOOT_FROM_SPI0x00000004U #define C1C2_BROM_BOOTMODE_BOOT_FROM_I2C0x00000005U #define C1C2_BROM_BOOTMODE_BOOT_FROM_CAN0x00000007U #define C1C2_BROM_BOOTMODE_BOOT_FROM_RAM0x0000000AU #define C1C2_BROM_BOOTMODE_BOOT_FROM_FLASH0x0000000BU// // Other macros that are needed for the Device_bootCPU2 function // #define BROM_IPC_EXECUTE_BOOTMODE_CMD0x00000013U #define C1C2_BROM_BOOTMODE_BOOT_COMMAND_MAX_SUPPORT_VALUE0x0000000CU #define C2_BOOTROM_BOOTSTS_C2TOC1_IGNORE0x00000000U #define C2_BOOTROM_BOOTSTS_SYSTEM_START_BOOT0x00000001U #define C2_BOOTROM_BOOTSTS_SYSTEM_READY0x00000002U #define C2_BOOTROM_BOOTSTS_C2TOC1_BOOT_CMD_ACK0x00000003U #define C2_BOOTROM_BOOTSTS_C2TOC1_BOOT_CMD_NAK_STATUS_NOT_SUPPORTED0x00000004U #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_FAIL0x0001 #define STATUS_PASS0x0000//***************************************************************************** // // 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#endifextern 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 //