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.
您好,
一位客户试图了解其案例中Flash2806X_ToggleTest无法产生所需的10kHz切换率的原因。 事实上,客户报告的频率大约为1.35MHz,因此速度是其100倍以上。
以下是假设:
[] Flash2806X_ToggleTest ROM入口点为0x003FFE7 (这是正确的)
[] Device_cal正在0x003D7C80处调用
[] CPU_rate为12.500L
[]正在使用未修改的标题Flash2806x_API_Config.h生成scale_factor
[] Flash_CPUcaleFactor@0xD02和Flash_CallbackPtr@0xD04正在EALLOW/EDIS帧中设置。
[]调整PLL以与此接头中指定的频率一致(80MHz,PLLCR=16,DIVSEL=2)。
[] PLL正确的指示是:CAN总线能够在指定频率(BRPREG = 4,TSEG1REG=4,TSEG2REG=1,SJWREG=0)下运行,表示它处于预期速率。
我们是否缺少10kHz所需速度的任何其他参数?
入口点是否存在潜在问题?
以下是正在使用的入口点
ABS 003d7c80 _Device_cal
ABS 003ffe7 _Flash2806x_ToggleTest
ABS 003ffef3 _Flash2806x_APIVersionHex
要实现10kHz切换率,还需要考虑其他因素吗?
谢谢!
——Gunter
地图文件中的线条是从单独的计算机上转录的。 _Flash2806X_ToggleTest函数的地址为“0x003ffee7”,长度为8个十六进制字符。
Gunter,
是的,您的Flash2806X_ToggleTest的入口点是好的。 从您的帖子中,您的所有假设看起来也很好。 您是否检查了XCLKOUT? 另外,我相信您正在应用程序代码中运行切换测试。 是否可以使用CCS Flash API插件尝试切换测试? 此外,您的应用程序代码是否使用用于GPIO切换测试的GPIO?
此致,
Manoj
我正在使用makefile生成。 构建标志包括-v28,但不包括-M20 (AMODE=0,每spru430f第83页)。
我确认在调试器中将AMODE设置为0。
要在执行切换测试之前配置AMODE=1,我使用了以下命令:
ASM易失性(" SETC AMODE\n .LP_amode");
FLASH_ToggleTest( REG, MASK );
ASM易失性(".c28_amode");
我还验证了反汇编没有对指令重新排序,并确认为调用设置了AMODE,并注意到对其中一种寻址模式的解释已更改,以反映.lp_amode汇编程序指令。 (@0x04变为@@0x04)。 在此之前的几个指令中,DP加载了0x34,在AMODE=0中转换为0xD00,在AMODE=1中转换为0x1A00。 由于0xD04显式是用于切换的系数,并且0x1A04位于CPU到CLA消息RAM和USB控制寄存器之间的预留内存中, 在短切换测试代码中没有其他机制可以访问0xD04周围的任何内容,这表明在输入函数时AMODE应该为0。
作为进一步的支持,如果输入AMODE=1,则测试根本无法切换引脚,但当AMODE=0时,由于标量因子的地址已更正为0xD04,引脚将切换为9.957KHz (100.3us)。