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
__interruptvoidTIM4_UPD_OVF_IRQHandler(void){
5
PC_ODR^=(1<<4);//Toggle Pin
6
TIM4_SR&=~(1<<0);//Clear Update interrupt flag
7
}
8
9
voidinitTimer(){
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
voidinitGPIO(){
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
voidmain()
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?
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.
Hast Du den richtigen µC eingestellt?
Wenn ich den STM8S103F3 einstelle und einen STM32 dran hänge - ja ich
weiss, habe aber keinen STM8 - dann bekomme ich genau diese Meldung.
hp-freund schrieb:> Hast Du den richtigen µC eingestellt?
Jop, denke schon (siehe Bild).
Das seltsame ist, dass das Flashen in IAR plötzlich nicht mehr möglich
war, nach dem ich diese Codezeile hinzugefügt hatte.
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.
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)?
>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.
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?
hp-freund schrieb:> Nur während des Verbindens.
Ich setzt NRST auf GND, dann trenne / verbinde ich Vcc, steck NRST auf
"SWIM_RST" und versuche erneut den Controller zu programmieren ->
funktioniert nicht.
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...
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.
Schops schrieb:> Ich sehe gerade in RM0016, das Ding hat auch ein BootROM....
User manual UM0560 Page 7 :
Table 2. STM8 subfamilies without bootloader
STM8 part numbers : STM8AF621x/2x, STM8Sx03xx
==> ergo: der STM8S103F3P6 hat keinen Bootloader von Haus aus
Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
Groß- und Kleinschreibung verwenden
Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang