梦里蝶舞 发表于 2018-9-26 12:37:00

STM8S001J3重复烧录

求助:
我有一块STM8S001J3的小板子,烧录一次之后不能重复烧录。
使用STVP重复烧录显示异常如下:
> ProgrammingPROGRAM MEMORY area...
Error : Cannot communicate with the device !
Check the SWIM cable connection and check all the needed pin connections on the SWIM connector.

If the application code uses Swim Disable and Reset pin as Output or has disabled SWIM Clock Divider:
Try Now to SWITCH OFF and ON the application Power Supply while NRST Reset pin is forced low.

Error : < PROGRAM MEMORY programming failed.

tyhjrwx2011 发表于 2018-9-26 12:56:15

大概率SWIM烧录的线,没连好

iyumi 发表于 2018-9-26 13:42:25

这个板子是你自己做的还是别人成熟的产品?这个芯片没用过,我自己做STM8S103的板子遇到过这种问题,你可以参考一下我的帖子,先看一下以下几个方面
1、上电检查Vcap和rst管脚的电压是否正常
2、Vcap管脚电容离Vcap脚是不是太远
3、Vcap电容有多大
4、烧录线是不是太长,接触是否良好
5、自己焊的板子的话有没有助焊剂没有清理干净,引起漏电

wenyangzeng 发表于 2018-9-26 14:30:58

错误提示应该是硬件的问题,检查SWI连接状况及STM8引脚

toofree 发表于 2018-9-26 14:31:02

本帖最后由 toofree 于 2018-9-26 15:07 编辑

请把代码贴出来。
SWIM管脚不要用作其它功能,否则下不了程序很正常。还有这个片片没有复位管脚,程序中需要特殊处理。
具体看用户参考手册

在看下图




梦里蝶舞 发表于 2018-9-27 08:18:28

toofree 发表于 2018-9-26 14:31
请把代码贴出来。
SWIM管脚不要用作其它功能,否则下不了程序很正常。还有这个片片没有复位管脚,程序中需 ...

#include "stm8s001j3.h"
#include "IO.h"
#include "TIME.h"
#include "uart.h"

void IO_INIT(void)
        {
                PB_DDR |= 0x20;
                PB_CR1 |= 0x20;
                PB_CR2 = 0x00;
               
                PC_DDR |= 0x80;
                PC_DDR |= 0x80;
                PC_DDR = 0x00;
               
                //PD_DDR |= 0x02;
                //PD_CR1 |= 0x42;
                //PD_CR2 |= 0x00;
        }

main()
{
        _asm("sim");
        IO_INIT();
        TIM4_INIT(4,250);
        _asm("rim");
        while (1);
}

梦里蝶舞 发表于 2018-9-27 08:19:12

wenyangzeng 发表于 2018-9-26 14:30
错误提示应该是硬件的问题,检查SWI连接状况及STM8引脚

管脚链接没有问题。

toofree 发表于 2018-9-27 11:03:47

程序没毛病,只要你没设置过CFG_GCR寄存器的SWD位,那么管脚1就是SWIM功能,应该可以随时使用。
千万别说,你烧过别的程序。

梦里蝶舞 发表于 2018-9-27 11:16:46

梦里蝶舞 发表于 2018-9-27 08:18
#include "stm8s001j3.h"
#include "IO.h"
#include "TIME.h"



谢谢!!!!!
已解决。。。。
//为调试程序时可以重复烧录,需在开始程序时增加延时,否则上电就会锁死,无法重复烧录

main()
{
        delay(200000);//为调试程序时可以重复烧录,需在开始程序时增加延时,否则上电就会锁死,无法重复烧录
        _asm("sim");
        INEEPROM();
        IO_INIT();
        UART1_INIT();
        TIM4_INIT(4,250);
        LED1 = 1;
        LED2 = 0;
        _asm("rim");
}

梦里蝶舞 发表于 2018-9-27 11:27:17

toofree 发表于 2018-9-27 11:03
程序没毛病,只要你没设置过CFG_GCR寄存器的SWD位,那么管脚1就是SWIM功能,应该可以随时使用。
千万别说, ...

有一颗IC烧录了其它程序,已经操废了。。。。;P
页: [1] 2
查看完整版本: STM8S001J3重复烧录