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.
您好!
我使用的是具有外部振荡器的进化板(TMS320F28386D)、在调试期间我没有遇到任何问题。 但每当我 通过 SysConfig Tool 使用内部振荡器将板从 TMS320F28388D 切换到 TMS320F28386D 时,我的代码就会在 Device_init ()()暂挂,Kindle 让我知道如何解决这个问题。
当我尝试使用具有内部振荡器的 TMS320F28386D 进行调试时,代码将在 while ()和 Device_delay ()函数处挂起。 请告诉我为什么它挂在那里并分享评论
此致
班迪
尊敬的 Bandi:
您是否在 SysConfig 工具中启用了 device_support 选项以反映时钟树更改?
您是否还可以共享由 SysConfig 生成的 clocktree.h 文件?
您能否在 device_init 函数中共享 device_setClock_CFG 宏配置、以确认程序是否正确地指向宏指定的 clocktree.h。
//
//设置 PLL 控制和时钟分频器
//
SysCtl_setClock (DEVICE_setClock_CFG);
谢谢
阿斯温
您好、Aswin:
我正在分享 SysConfig 中与器件支持相关的屏幕截图、请指导我如何 在 SysConfig 工具中启用 device_support 选项来反映时钟树更改。
还可共享为 TMS320F28386D 内部振荡器生成的 clocktree.h 文件
//############################################################################# // // FILE: clockTree.h // // TITLE: Setups device clocking for examples. // //############################################################################# // $Copyright: // Copyright (C) 2024 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. // $ //########################################################################### #ifndef CLOCKTREE_H #define CLOCKTREE_H //***************************************************************************** // // Summary of SYSPLL related clock configuration // //***************************************************************************** // // Input Clock to SYSPLL (OSCCLK) = 10 MHz (INTOSC1 provides OSCCLK) // //##### SYSPLL ENABLED ##### // // PLLRAWCLK = 200 MHz (Output of SYSPLL if enabled) // PLLSYSCLK = 200 MHz // CPU1CLK = 200 MHz // CPU2CLK = 200 MHz // CPU1_SYSCLK = 200 MHz // CPU2_SYSCLK = 200 MHz // LSPCLK = 50 MHz //***************************************************************************** // // Macro definitions used in device.c (SYSPLL / LSPCLK) // //***************************************************************************** // // Input Clock to SYSPLL (OSCCLK) = INTOSC1 = 10 MHz // #define DEVICE_OSCSRC_FREQ 10000000U // // Define to pass to SysCtl_setClock(). Will configure the clock as follows: // SYSPLL ENABLED // SYSCLK = 200 MHz = 10 MHz (OSCCLK) * 40 (IMULT) / (1 (REFDIV) * 2 (ODIV) * 1 (SYSCLKDIVSEL)) // #define DEVICE_SETCLOCK_CFG (SYSCTL_OSCSRC_OSC1 | SYSCTL_IMULT(40) | \ SYSCTL_REFDIV(1) | SYSCTL_ODIV(2) | \ SYSCTL_SYSDIV(1) | SYSCTL_PLL_ENABLE | \ SYSCTL_DCC_BASE_0) #define DEVICE_SYSCLK_FREQ (DEVICE_OSCSRC_FREQ * 40) / (1 * 2 * 1) // // Define to pass to SysCtl_setLowSpeedClock(). // Low Speed Clock (LSPCLK) = 200 MHz / 4 = 50 MHz // #define DEVICE_LSPCLK_CFG SYSCTL_LSPCLK_PRESCALE_4 #define DEVICE_LSPCLK_FREQ (DEVICE_SYSCLK_FREQ / 4) //***************************************************************************** // // Summary of AUXPLL related clock configuration // //***************************************************************************** // // Input Clock to AUXOSCCLK = 10 MHz (INTOSC2 provides AUXOSCCLK) // //##### AUXPLL ENABLED ##### // // AUXPLLRAWCLK = 100 MHz (Output of AUXPLL if enabled) // AUXPLLCLK = 100 MHz // //***************************************************************************** // // Macro definitions used in device.c (AUXPLL) // //***************************************************************************** // // Input Clock to AUXPLL (AUXOSCCLK) = INTOSC2 = 10 MHz // #define DEVICE_AUXOSCSRC_FREQ 10000000U // // Define to pass to SysCtl_setAuxClock(). Will configure the clock as follows: // AUXPLL ENABLED // AUXPLLCLK = 100 MHz = 10 MHz (AUXOSCCLK) * 40 (IMULT) / (1 (REFDIV) * 4 (ODIV) * 1 (AUXCLKDIVSEL)) #define DEVICE_AUXCLK_FREQ (DEVICE_OSCSRC_FREQ * 40) / (1 * 4 * 1) // #define DEVICE_AUXSETCLOCK_CFG (SYSCTL_AUXPLL_OSCSRC_OSC2 | SYSCTL_AUXPLL_IMULT(40) | \ SYSCTL_REFDIV(1) | SYSCTL_ODIV(4)| \ SYSCTL_AUXPLL_DIV_1 | SYSCTL_AUXPLL_ENABLE | \ SYSCTL_DCC_BASE_0) //***************************************************************************** // // CPU1CLK / CPU2CLK Domain (200 MHz) // //***************************************************************************** // VCU // TMU // FPU // Flash // DCSM // HWBIST // //***************************************************************************** // // CPU1 SYSCLK Domain (200 MHz) // //***************************************************************************** // CPUTIMERx // DMA // CLA1 // XINT // PIE // LSxRAMs // MSGRAMs // Mx/DxRAM // BootROM // BGCRC // ERAD // EMIF2 // WDCLK // ///////////////////// // Gated CPU1 SYSCLK ///////////////////// // USB // //***************************************************************************** // // CPU2 SYSCLK Domain (200 MHz) // //***************************************************************************** // CPUTIMERx // DMA // CLA1 // XINT // PIE // LSxRAMs // MSGRAMs // Mx/DxRAM // BootROM // BGCRC // ERAD // ///////////////////// // Gated CPU2 SYSCLK ///////////////////// // CPU2_CLA1 // CPU2_DMA // CPU2_Timer // //***************************************************************************** // // Gated Peripheral EPWM Domain ( MHz) // //***************************************************************************** // EPWM // HRPWM // //***************************************************************************** // // Gated Peripheral SYSCLK Domain (200 MHz) // //***************************************************************************** // ADC // CMPSS // DAC // ePWM // HRPWM // eCAP // eQEP // I2C // McBSP // SDFM // FSI // PMBUS // HRCAL // SPI // SCI // DCC // CAN // //***************************************************************************** // // Gated LSPCLK Domain (50 MHz) // //***************************************************************************** // SCI // SPI // McBSP #endif // CLOCKTREE_H
以及 在 device_init 函数中共享 device_setclock_CFG 宏配置、以确认程序是否正确地指向用于宏 定义的 clocktree.h 以及 SysCtl_setClock (device_setClock_CFG);
如果我点击 DEVICE_setClock_CFG 、它 仅显示 clocktree.h 内容
最终 在 device_init 函数中共享 device_setClock_CFG 宏配置
如需修改、请参阅并告诉我
此致
班迪
尊敬的 Bandi:
如果您使用的是 INTOSC、则可以删除此检查。 在 IF 条件的正上方作为一个注意事项进行提及。
谢谢
阿斯温
您好、Aswin:
您能帮助我如何在 SysConfig 工具中使用 device_support 选项来反映时钟树更改。
如果 我删除了与 XTAL 相关的代码、那么我就像使用 TMS320F28386D (定制板)的内部振荡器那样、编写和添加任何与 INTOSC1相关的函数。
我删除了下面随附的代码、是否应该添加任何函数来使用内部振荡器?
谢谢、此致
班迪
尊敬的 Bandi:
您能否帮助我如何在 SysConfig 工具中使用 device_support 选项来使时钟树更改得到反映。
您已在 syscfg 中正确启用了 device_support 选项。
我的意思是、如果您使用的是没有时钟树配置的现有 C2000ware 示例、该器件将具有默认的 device.h/.c 文件、并具有时钟配置。
如果您使用时钟树配置时钟、只需在 sysconfig (您已完成)中添加 device_support、并在构建示例时排除现有(如果有) device.h/.c
并且如果我删除了与 XTAL 相关的代码,那么 当我使用 TMS320F28386D (自定义板)的内部振荡器时,我可以编写并添加任何与 INTOSC1相关的函数。
不需要添加任何额外函数即可将 INTOSC 用作源。
谢谢
阿斯温
您好、Aswin、
完成上述所有更改后、我收到错误消息、
任何可能导致这个问题的建议、我已经努力处理这个问题2周了。 您能指导我如何解决此问题吗?
谢谢、此致
班迪
尊敬的 Bandi:
是否已尝试重新启动主板(关闭电源和打开电源)并再次尝试?
您是否进行了任何配置以在低功耗模式下运行?
尝试创建单独的工作区和新的目标配置、然后重试(仅为了确认工作区/目标配置是否有问题)
您是否还会在加载程序时或在读取某个寄存器值时遇到此问题? 您是否在您的所有可用设备中都面临这一问题?
谢谢
阿斯温
您好、Aswin:
我尝试了重新启动电路板(关闭电源和打开电源)、然后又反复尝试、也使用新的工作区创建了一个新项目、但我在加载程序时仍然遇到错误
我曾使用 UNIFLASH 工具尝试、该工具也得到了相同的错误
当我尝试多次关机/开机并重置电路板电源时、我将看到以下错误
您能帮助解决此问题吗?
此致、谢谢
班迪
尊敬的 Bandi:
您是否能够连接设备? 问题是否在您尝试加载程序时出现?
如果能够连接到器件、我建议您擦除闪存、然后重试加载。
连接目标器件->转至工具->单击 ON_CHIP FLASH ->转 至片上闪存视图中的擦除闪存选项
谢谢
阿斯温
您好、Aswin:
仍然无法连接设备、我在加载程序时正面对下面
我曾尝试在工具下使用 on_chip 闪存擦除闪存、但找不到 on_chip 闪存选项
我尝试了使用 UNIFLASH 工具、也得到了相同的问题
您能告诉我们为什么器件的行为是这样的吗?
我们通过定制电路板使用 TMS320F28386D 器件、我们已经尝试将代码闪存到目标器件
此致
班迪
尊敬的 Bandi:
我假设您已在闪存配置中加载了一些代码、以使器件进入低功耗模式。
每次尝试连接设备时、都会出现此问题。
请确认电路板是否正确供电。
我建议您将引导配置从闪存引导更新为仿真板中的其他选项。 查找硬件上的 S1-A 交换机。
S1:A -仿真和 GPIO28开关
POS 1开启:使用 ccard 上的 xds100v2仿真器
POS 1关闭:从闪存/外设引导(请参阅引导模式开关)或使用基板上的仿真器
POS 2开启:GPIO28将由 FTDI 芯片上的 USB 转 UART 适配器控制
POS 2关闭:GPIO28可由 HSEC 连接器中的引脚控制
当前引导引脚设置(POS 1)将关闭、您可以将其设为开启(以便它不会从闪存引导)
然后、您应该能够连接到器件、并且能够在工具菜单中看到片上闪存选项。 然后按照上一答复中的步骤操作。
如果您能摆脱问题、请告诉我。
谢谢
阿斯温
您好、Aswin:
我很高兴地说、现在我能够使用 RAM (CPU1_RAM)模块刷写和运行代码、但当我尝试使用闪存(CPU1_FLASH)配置器件以便引导至闪存代码时、会收到以下错误。
您能帮我解答吗?
谢谢
班迪
尊敬的 Bandi:
很高兴您能够加载 RAM 配置。
您是否已使用工具菜单中的片上闪存选项、按照之前的回复中提到的那样擦除闪存? 如果不能,你可以做吗?
我认为闪存中还有另一个程序、因此导致了问题。
您能否尝试在闪存配置中加载程序以禁用仿真板中的引导至闪存开关?
设置 S1-A -> POS1 - on 并尝试加载到 CPU1_FLASH 配置、然后查看是否能够加载程序。
我不确定您所使用的示例是否在 C2000Ware SDK 中提供、否则您不能尝试在 C2000Ware SDK 中加载任何现有示例。
谢谢
阿斯温
您好、Aswin:
如您所说、我尝试 使用片上工具擦除闪存、仍然面临以下错误
我将 S1-A -> POS1 - on 并尝试加载到配置的 CPU1_FLASH、我可以从 TMS320F28388D (控制卡)进行闪存、这里还有当我关闭电源并打开程序时、不会一直保持不变(LED 闪烁在复位后消失) 但甚至不能从定制电路板从 Flash_CPU1 (TMS320F28386D)加载。
您能帮我吗?
谢谢、此致
班迪
尊敬的 Bandi:
由于 S1-A POS1设置 在 ON 位置、因此它不会从闪存引导。
您需要将开关切换到 OFF 位置、以便在执行关闭和开启操作后以独立闪存配置运行。
I set S1-A -> POS1 - on 并尝试加载到配置的 CPU1_FLASH、我可以从 TMS320F28388D (控制卡)进行刷写、
您是否能够在 CPU1_FLASH 配置中使 LED 闪烁?
谢谢
阿斯温