找回密码
 立即注册
查看: 176|回复: 15

8系列UART在线升级--基于STC8H8K64U,按照步骤下载ISP和AP后,芯片没反应 | 已解决

[复制链接]
  • 打卡等级:偶尔看看II
  • 打卡总天数:28
  • 最近打卡:2025-10-15 18:00:08
已绑定手机

10

主题

50

回帖

274

积分

中级会员

积分
274
发表于 2025-9-26 16:24:33 | 显示全部楼层 |阅读模式

我这边使用的是STC8H4K64TL,P45接了LED,想OTA成功后,通过观察LED是否闪烁

1、isp程序只修改了芯片型号和DfuFlag的值,其余都没改

image.png

image.png

2、demo程序也是修改了芯片型号和DfuFlag的值,然后设置P4端口为准双向模式,初始化P45=0,定时器0中把P0=~P0屏蔽掉,增加P45^=1;

image.png

image.png

下载时,严格按照步骤来下载,下载isp成功后,重新断电再上电了一次

image.png

然后通过STCIsp_User.exe下载demo代码。

image.png

以上操作完成之后,发现LED没反应,重新试过好几次也没反应。

附上修改后的代码:

upload 附件:isp.zipupload 附件:demo.zip

回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:28
  • 最近打卡:2025-10-15 18:00:08
已绑定手机

10

主题

50

回帖

274

积分

中级会员

积分
274
发表于 2025-9-30 16:07:24 | 显示全部楼层
经过不断尝试,终于成功利用.exe软件通过串口下载程序,并由串口1改用成串口2。现在思考新的问题,ISP代码区中能否结合DMA中断来进行OTA呢?
回复

使用道具 举报 送花

3

主题

1880

回帖

608

积分

等待验证会员

积分
608
发表于 2025-9-26 16:28:01 | 显示全部楼层
您好,感谢您分享详细的调试过程与问题描述。针对您在使用 STC8H4K64TL 芯片进行 ISP + AP 下载后 LED 无反应的问题,我将从以下几个方面进行分析与排查建议:

一、问题现象总结
使用 STC8H8K64U 官方例程进行适配,仅修改芯片型号为 STC8H4K64TL;
ISP 程序下载成功,AP 程序通过 STCIspUserexe 工具完成;
断电上电后,LED(P45)无闪烁反应;
您提供了修改后的 ISP 与 AP 程序代码,用于进一步分析。

二、可能的问题点分析

1. 芯片型号适配问题

虽然 STC8H8K64U 与 STC8H4K64TL 同属 STC8H 系列,但它们在以下方面可能存在差异:
Flash 容量:STC8H8K64U 是 64KB Flash,8KB SRAM;STC8H4K64TL 是 64KB Flash,4KB SRAM;
外设资源:某些外设如 ADC、PWM、定时器通道等在不同型号中可能存在差异;
内存映射或中断向量表偏移:不同型号的中断向量地址或内存映射可能略有不同。

建议您确认官方数据手册中是否明确说明这两个型号在内存映射、中断向量表、外设寄存器等方面是否兼容。如果不兼容,直接替换型号可能导致程序运行异常。

2. ISP 程序配置问题

ISP 程序的主要功能是引导加载 AP 程序。以下几点需要确认:
跳转地址是否正确:ISP 程序应在下载完成后跳转到 AP 程序的起始地址(通常是 0x0000 以外的地址);
AP 程序的链接地址是否正确:确保 AP 程序的启动地址与 ISP 程序中设定的跳转地址一致;
中断向量重定向是否正确:AP 程序运行时,中断向量应指向新的地址,否则中断无法响应;
堆栈指针初始化是否正确:AP 程序入口需重新设置 SP 指针,否则可能导致堆栈溢出或异常。

3. AP 程序问题

您提到的 AP 程序做了以下修改:
修改芯片型号;
设置 P4 为准双向口;
初始化 P45 = 0;
在定时器 0 中增加 P45 ^= 1;

请检查以下几点:
P4M1 和 P4M0 设置是否正确:STC8H 系列 IO 口需要设置模式寄存器才能正确输出;
定时器 0 是否正常运行:是否有初始化代码?是否开启中断?是否开启总中断 EA?
主循环是否为空:如果主循环没有任何延时或等待,程序可能直接退出;
堆栈是否溢出:如果程序中有函数调用但未设置 SP,可能导致程序跑飞;
编译器优化问题:部分编译器优化可能导致变量访问异常,建议关闭优化或使用 volatile 修饰变量;
是否启用了看门狗:若启用了看门狗但未喂狗,可能导致程序反复复位。

4. 下载流程是否规范

您提到使用 STCIspUserexe 工具下载 AP 程序,这是 STC 官方提供的用户自定义 ISP 工具。请确认:
AP 程序的 bin 文件是否生成正确;
是否选择了正确的芯片型号与串口;
是否确认 AP 程序下载成功;
是否在下载完成后断电重启;
是否确认 ISP 程序已跳转至 AP 程序执行。

三、建议的排查步骤

步骤一:确认 ISP 是否正常运行

1. 在 ISP 程序中加入一个简单的 LED 闪烁代码(如 P45 闪烁),下载并运行,观察是否闪烁;
2. 若闪烁正常,说明 ISP 程序本身运行正常;
3. 若不闪烁,说明 ISP 程序存在问题,可能与芯片型号不兼容有关。

步骤二:确认 AP 程序能否独立运行

1. 暂时绕过 ISP 程序,直接将 AP 程序下载到芯片中;
2. 观察 P45 是否闪烁;
3. 若能闪烁,说明 AP 程序本身没有问题;
4. 若不能闪烁,需重点检查 AP 程序中的 IO 配置、定时器设置、中断使能等。

步骤三:确认 ISP 跳转至 AP 是否成功

1. 在 ISP 程序跳转前加入 LED 指示(如 P45 闪烁一次);
2. 跳转后,在 AP 程序入口加入 LED 指示(如 P45 闪烁两次);
3. 若只看到一次闪烁,说明跳转失败;
4. 若看到两次闪烁,则说明跳转成功,问题出在 AP 程序运行阶段。

步骤四:使用调试工具辅助排查

如果条件允许,建议使用以下工具进行调试:
STC-ISP 软件的串口调试功能;
STC-USB 转 TTL 模块,用于串口输出调试信息;
使用 KEIL 或 SDCC 编译器 + STC-Link 工具进行单步调试;
使用逻辑分析仪或示波器检测 P45 波形输出。

四、代码建议检查点

1. IO 配置是否正确
  1. c
  2. P4M1 = 0x00;  // 准双向口
  3. P4M0 = 0x00;
复制代码

请确认是否确实执行了这两句配置,且在主函数开始前完成。

2. 定时器初始化是否完整
  1. c
  2. TMOD = 0x02;    // 定时器0模式2
  3. TH0 = 0x00;
  4. TL0 = 0x00;
  5. ET0 = 1;        // 使能定时器0中断
  6. EA = 1;         // 使能全局中断
  7. TR0 = 1;        // 启动定时器0
复制代码

请确认是否设置了中断服务函数:
  1. c
  2. void Timer0ISR(void) interrupt 1 {
  3.     P45 ^= 1;
  4. }
复制代码

3. 主循环是否空转
  1. c
  2. while (1);
复制代码

如果主循环为空,程序将直接进入死循环,不会有任何动作。建议添加延时或等待:
  1. c
  2. while (1) {
  3.     // 可以在此添加其他逻辑
  4. }
复制代码

五、结论与建议

综合分析,您当前的问题可能是由以下原因之一或多个共同导致的:

1. 芯片型号不兼容,导致 ISP 或 AP 程序运行异常;
2. AP 程序跳转地址或中断向量设置错误;
3. AP 程序本身存在配置错误或未正常运行;
4. ISP 程序未能正确跳转到 AP 程序;
5. 未正确初始化 IO 或定时器中断导致 LED 无反应。

六、后续建议

1. 优先验证 AP 程序是否可以独立运行;
2. 确认 ISP 程序是否正常跳转到 AP 程序;
3. 使用串口或调试工具输出调试信息,定位程序卡死点;
4. 参考 STC 官方手册确认芯片型号之间的兼容性;
5. 如有可能,使用官方提供的 ISP 例程进行测试,避免自行修改带来的兼容性问题。

如果您方便的话,可以提供 ISP 与 AP 的完整代码(或关键部分),我可以进一步帮您分析代码中可能存在的问题。

祝您调试顺利!

[本文内容由国芯人工智能辅助生成,仅供参考]
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:28
  • 最近打卡:2025-10-15 18:00:08
已绑定手机

10

主题

50

回帖

274

积分

中级会员

积分
274
发表于 2025-9-26 16:37:18 | 显示全部楼层
long xdata DfuFlag _at_ 0xffc;                 //DFU标志, 定义在xdata的最后4字节
demo代码中的DfuFlag 本来例程中是0x1ffc,但STC8H4K64TL只有4K XDATA,所以我这里把DfuFlag 改成 0xffc

点评

dfu标志是isp代码和app代码共同使用,用来传递数据的一个变量 改掉app这边的地址后,需要给isp部分代码的地址也改掉,不然是判断不到的  详情 回复 发表于 2025-9-26 18:54
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:28
  • 最近打卡:2025-10-15 18:00:08
已绑定手机

10

主题

50

回帖

274

积分

中级会员

积分
274
发表于 2025-9-26 16:54:29 | 显示全部楼层
还有一个现象是通过STCIsp_User.exe下载demo代码之后,再直接点击下载也能成功,这对吗?
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:591
  • 最近打卡:2025-10-15 09:49:21
已绑定手机
已实名认证

116

主题

2889

回帖

7364

积分

版主

积分
7364
发表于 2025-9-26 18:54:50 | 显示全部楼层
ZARD*** 发表于 2025-9-26 16:37
long xdata DfuFlag _at_ 0xffc;                 //DFU标志, 定义在xdata的最后4字节
demo代码中的DfuFlag 本来例 ...

dfu标志是isp代码和app代码共同使用,用来传递数据的一个变量
改掉app这边的地址后,需要给isp部分代码的地址也改掉,不然是判断不到的
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:28
  • 最近打卡:2025-10-15 18:00:08
已绑定手机

10

主题

50

回帖

274

积分

中级会员

积分
274
发表于 2025-9-27 08:38:03 | 显示全部楼层
王*** 发表于 2025-9-26 18:54
dfu标志是isp代码和app代码共同使用,用来传递数据的一个变量
改掉app这边的地址后,需要给isp部分代码的 ...

DWORD xdata DfuFlag _at_ 0xffc;
ISP代码中也改了,但是两个代码都烧录进去之后,也还是没看到LED闪烁
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:539
  • 最近打卡:2025-10-15 21:55:03

33

主题

2600

回帖

5727

积分

论坛元老

积分
5727
发表于 2025-9-27 09:03:31 | 显示全部楼层
确实挺严格的,,,上来就把单片机改了。。

我觉得你要是测试是不是先用相同的硬件测试,再往其他的地方移植?
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:28
  • 最近打卡:2025-10-15 18:00:08
已绑定手机

10

主题

50

回帖

274

积分

中级会员

积分
274
发表于 2025-9-27 10:39:42 | 显示全部楼层
_奶*** 发表于 2025-9-27 09:03
确实挺严格的,,,上来就把单片机改了。。

我觉得你要是测试是不是先用相同的硬件测试,再往其他的地方 ...

同系列的芯片为什么不能改呢?唯一有区别的就是XDATA的容量不一样而已,
总不能每试一个例程都需要相同的硬件条件吧
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:539
  • 最近打卡:2025-10-15 21:55:03

33

主题

2600

回帖

5727

积分

论坛元老

积分
5727
发表于 2025-9-27 10:45:26 | 显示全部楼层
ZARD*** 发表于 2025-9-27 10:39
同系列的芯片为什么不能改呢?唯一有区别的就是XDATA的容量不一样而已,
总不能每试一个例程都需要相同的 ...

以前我也是你这么认为的,,后来发现,系列并不是这么分的
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:28
  • 最近打卡:2025-10-15 18:00:08
已绑定手机

10

主题

50

回帖

274

积分

中级会员

积分
274
发表于 2025-9-27 11:01:48 | 显示全部楼层
_奶*** 发表于 2025-9-27 10:45
以前我也是你这么认为的,,后来发现,系列并不是这么分的

内部存储结构一样啊,同样是IAP芯片,所以它这个例程在同系列芯片中,除了FLASH和XDATA影响到OTA,其他功能都不影响的
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-10-16 05:35 , Processed in 0.134745 second(s), 108 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表