英飞凌ADS编译器烧录时的问题

使用ADS烧录程序时,会出现如下问题,烧录结束后单片机无法正常运行,被这个问题困扰两个周了,还是没有找出原因,求解答。芯片为TC387

img

  • 你看下这篇博客吧, 应该有用👉 :Keil与ADS软件冲突问题解决办法
  • 除此之外, 这篇博客: 功率放大器ADS仿真实例中的 一、理论基础 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 根据工作状态的不同,功率放大器可分为线性功率放大器和开关型功率放大器,线性功率放大器包含:A、B、C、AB类放大器,开关型功率放大器包含:D、E、F类放大器。为获得较好的线性度和高增益,因此射频PA一般使用线性功率放大器。

    PA类型

    功率放大器的电路可以由以下几个部分组成:晶体管、偏置及稳定电路、输入输出匹配电路。

    PA组成电路

这个问题可能是由于ADS编译器在烧录时没有成功连接芯片或者没有正确烧录程序导致的。以下是一些可能的解决方案:

  1. 确保连接正确:检查烧录器和芯片之间的连接是否正确。请确保正确连接并正确配置了烧录器设备。也请确保芯片的电源、复位电路及时钟电路等都正常接入。

  2. 修改编译器设置:尝试修改ADS编译器的设置。进入Preferences,选择"Debugger"选项卡,然后在"Setup"下选择"Properties for 'Debug [xxxx.xxxxx]'"。在"Connection"栏中,选择正确的调试器,然后在"Debugger"栏中设置适当的调试器路径和参数。

  3. 清除缓存:在ADS编译器的菜单栏中选择"Tools",然后选择"Clean Up Debug Data"。这将清除所有缓存文件,重新编译和烧录程序。

  4. 检查代码:检查您的代码,确保程序没有内存访问错误或编译错误。如果程序有问题,建议先在模拟器中运行程序,以确保程序运行正常。

如果以上方法都不能解决问题,建议您联系相应的技术支持人员或芯片厂商寻求帮助。

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
以下是可能导致此问题的几个原因,您可以逐一排查:

  1. 代码问题:请检查您的程序是否存在逻辑问题或者代码错误,建议使用调试器进行单步调试,排查代码存在的问题。

  2. 芯片配置问题:请确认您的芯片的配置是否正确,包括读写保护、时钟配置、复位电路等等。建议查看芯片的数据手册。

  3. 烧录程序问题:请检查您使用的烧录程序是否正确,在烧录时是否正确选择了芯片型号以及对应的参数配置。建议尝试更新烧录程序版本,重新烧录程序。

  4. 通讯问题:请确保您使用的烧录器与芯片之间的通讯是否正常。如果您使用的是USB烧录器,请检查USB连接是否松动;如果您使用的是仿真器,请检查仿真器与电脑之间的连接是否正常。

以下是一个基本的ADS烧录程序示例,您可以参考:

#include <stdio.h>
#include <stdlib.h>

#define TARGET_ID 0x100 //TC387的ID

/* 烧录函数 */
void Burn(char *fileName, unsigned long addr, unsigned long size)
{
  unsigned long TargetAD [1], AdBase=0xD1000000;

  if (ConnectToTarget(TARGET_ID, &TargetAD[0], sizeof(TargetAD[0]))==0)
    printf("连接到芯片失败\n");

  if (LoadTarget(fileName, AdBase,FILE_TYPE_INTEL_HEX, 0, 0, 0)==0)  
    printf("加载Binary文件失败\n"); 

  if (EraseTarget(TargetAD[0], size) ==0)
    printf("擦除芯片失败\n");

  if (ProgramTarget(TargetAD[0], AdBase+addr, size) ==0)
    printf("烧录程序失败\n");

  if (VerifyTarget(TargetAD[0], AdBase+addr, size) == 0)
    printf("校验程序失败\n");

  DisconnectFromTarget(TargetAD[0]);
}

/* 主函数 */
int main(int argc, char* argv[])
{
  char *fileName = "test.hex" // 需要烧录的文件名
  unsigned long addr = 0x00000000; // 程序在芯片中的地址
  unsigned long size = 0x00001000; // 程序大小,单位为byte

  Burn(fileName, addr, size);

  return 0;
}

以上代码仅为示例,具体使用时需要根据实际情况进行修改。希望能够帮助您解决问题。
如果我的回答解决了您的问题,请采纳!

以下内容引用CHATGPT:

这个问题可能由多种原因引起,可能是ADS编译器本身的问题,也可能是芯片的问题,或者是烧录过程中的问题。以下是一些可能的解决思路:

  1. 检查ADS编译器的设置是否正确,包括编译选项、链接选项、调试选项等等。确保编译生成的程序是正确的,并且与芯片的规格书匹配。

  2. 检查烧录程序是否正确,包括烧录器的设置、连接方式、烧录算法等等。可以尝试使用其它烧录程序或者烧录器来验证问题是否出在烧录程序上。

  3. 检查芯片本身是否正常,包括电源、时钟、复位电路等等。可以使用示波器或者调试器来观察芯片的运行状态,以确定问题的来源。

  4. 尝试修改程序代码,加入调试信息或者错误处理代码,以便更好地定位问题所在。可以使用调试器或者printf等工具来观察程序的运行状态,以确定问题的来源。

综上所述,需要逐一排查以上可能的原因,并采取相应的解决措施来解决问题。