STM8S103F3 lässt sich nicht mehr flashen - IAR - STLink

OP #4866409
Guten Abend,

mein STM8S103F3 lässt sich nicht mehr flashen (verbaut auf dem 
günstigen, blauen China-Board). Der letzte Code, den ich flashen konnte, 
war dieser hier:
1
#include "iostm8s103f3.h"
2

3
#pragma vector = TIM4_OVR_UIF_vector
4
__interrupt void TIM4_UPD_OVF_IRQHandler(void){
5
  PC_ODR ^= (1<<4);     //Toggle Pin
6
  TIM4_SR &=~(1<<0);     //Clear Update interrupt flag
7
}
8

9
void initTimer(){
10
  CLK_PCKENR1 |= (1<<4); //Enable Clock for Timer 4
11
  TIM4_PSCR = (0x0F);    //Prescaler, Divide Clock by Max
12
  TIM4_IER = 1;          //Enable Update Interrupt
13
  TIM4_CR1 |= 1;         //Enable Timer
14
  asm("rim");            //Enable Interrupts     
15
}
16

17
void initGPIO(){
18
  PC_DDR |= (1<<4);     //Set Pin as Output
19
  PC_CR1 |= (1<<4);     //Set Pin as PushPull
20
  PC_ODR |= (1<<4);     //Set to High
21
}
22

23
void main()
24
{
25
  initTimer();
26
  initGPIO();
27
  CLK_CKDIVR = 0x08; //nur das hier wurde hinzugefügt
28
  while(1){
29
    ;
30
  }
31
}

Nach dem ich die kommentierte Zeile hinzugefügt hatte, kam das erste mal 
diese Fehlermeldung:
1
Mon Jan 16, 2017 20:06:24: C-SPY Processor Descriptor V2.20.1.176 for STM8 
2
Mon Jan 16, 2017 20:06:24: C-SPY Debugger Driver, ST-LINK V2.20.1.176 for STM8 
3
Mon Jan 16, 2017 20:06:24: Errors while setting configuration with MCU name STM8S103F3P: gdi-error [40409]: No answer from the SWIM: check chip connections and power supply; try a power on reset

Wenn ich eine STM8S003F3 flashen will, klappt das wunderbar. Damit kann 
man den ST-Link als Fehlerquelle wohl schon mal ausschließen. Kann es 
sein, dass ich den Takt so weit runtergeteilt habe, dass das Flashen 
nicht mehr funktioniert? Ich hatte das früher schon mal gemacht und hab 
damals gemerkt, dass das Flashen noch ging, aber Debuggen funktionierte 
erst wieder, als ich den Prescaler verringert habe.

Hat jemand eine Idee?

P.S. Wenn ich die CLK und SWIM Leitungen bewusst trenne (so das es gar 
nicht funktionieren kann), erhalte ich diese Fehlermeldung:
1
Mon Jan 16, 2017 20:10:22: C-SPY Processor Descriptor V2.20.1.176 for STM8 
2
Mon Jan 16, 2017 20:10:22: C-SPY Debugger Driver, ST-LINK V2.20.1.176 for STM8 
3
Mon Jan 16, 2017 20:10:22: Failed to set configuration with MCU name STM8S103F3P: SWIM error [30006]: Comm init error: chip does not answer

Anscheinend wird der Chip noch erkannt aber er antwortet nicht mehr?
OP
In STVP bekomme ich folgende Fehlermeldung:
1
Error : Cannot communicate with the device !
2
Check the SWIM cable connection and check all the needed pin connections on the SWIM connector.
3

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

7
Error : < PROGRAM MEMORY programming failed.

Kann es sein, dass der Flash hinüber ist? Das zuletzt geflashte Programm 
wird noch ausgeführt.

Ich hab den NRST-Pin auf GND gelegt und dann Power aus / an, hat nichts 
bewirkt.
Gast
Ich denke dann wird es nur noch mit dem richtigen Rest funktionieren.
Im "RM0016 Reference manual" werden 9 Reset Arten beschrieben.

Vermutlich musst Du zur richtigen Zeit Reset auf L legen.
OP
hp-freund schrieb:
> Vermutlich musst Du zur richtigen Zeit Reset auf L legen.

Und wann ist diese richtige Zeit? Ich vermute, dass macht der ST-Link 
schon korrekt, korrekter als ich es machen kann? Und da der ST-Link 
nicht defekt ist (wie im ersten Post beschrieben) weiß ich nicht, ob da 
wirklich der Reset drann schuld ist (das wird der ST-Link wohl schon 
machen, oder)?
Gast
>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.

Ich würde 'mal probieren, den Reset low zu halten und währenddessen den 
ST-Link Connect versuchen.

Mglw (ich kenne weder STM8 noch die Tools) kann man auch eine Option
"Connect under Reset" oder ähnlich irgendwo wählen.

Flash kaputt ist äusserst unwahrscheinlich.
OP
Schops schrieb:
> Mglw (ich kenne weder STM8 noch die Tools) kann man auch eine Option
> "Connect under Reset" oder ähnlich irgendwo wählen.

Gibt es weder bei STVP noch bei IAR sondern nur beim STM32 ST-Link 
Utility (habs nur durch googlen gefunden). Aber die Software arbeitet 
mit SWD von dem her ist klar, dass die den STM8 nicht erkennt. Ich bin 
echt am verzweifeln, warum gibt ein Chip einfach so den Geist auf? Nach 
dem Datenblatt müsste der Flash mind. 10k Schreibzyklen aushalten, die 
hab ich bestimmt noch nicht erreicht.

Schops schrieb:
> Ich würde 'mal probieren, den Reset low zu halten und währenddessen den
> ST-Link Connect versuchen.

Das hört sich an, als würdest du von der STM32 ST-Link Utility sprechen, 
funktioniert die überhaupt mit STM8 Controllern?
Gast
UM0470 gelesen?
(Ich hab's nicht getan)

Könnte vielleicht nützliche Hinweise enthalten.

Ansonsten gibt's sicher bei ST auch ein STM8 Forum, wo vielleicht die 
richtigen Experten für das Thema zu finden sind...

Ich sehe gerade in RM0016, das Ding hat auch ein BootROM....
Der kennt z.B ein "Erase Mem" Kommando...
OP
Schops schrieb:
> Ich sehe gerade in RM0016, das Ding hat auch ein BootROM....
1
The bootloader code is stored in the internal boot ROM memory. After a reset, the
2
bootloader code checks whether the program memory is virgin or whether a specific option
3
byte is set allowing code modifications.
4
If these conditions are not fulfilled, the bootloader resumes and the user application is
5
started.

Ich kann die Option Bytes nicht programmieren, ergo fällt das auch raus, 
denke ich?

Schops schrieb:
> Ansonsten gibt's sicher bei ST auch ein STM8 Forum, wo vielleicht die
> richtigen Experten für das Thema zu finden sind...

Das Forum ist so gut wie tot, hab da ein paar mal Fragen gestellt und 
nur sehr selten eine Antwort bekommen. Versuchen wer ich es trotzdem 
mal, danke.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.