Hjälp med mitt första kretskort (STM32 + audio codec)
Hjälp med mitt första kretskort (STM32 + audio codec)
Hej!
Det här blir mitt första inlägg här på Elektronikforumet. Ursäkta inläggets enorma längd. Jag är nybörjare på elektronik, men jag har programmerat mycket, så mjukvaran är inget större problem. Jag har läst och experimenterat lite med elektronik på kvällarna det senaste halvåret. Nu har jag gett mig på det kanske överambitiösa projektet att bygga en digital synt och jag har kört fast ordentligt. Har någon möjlighet att hjälpa mig vidare, eller har jag tagit mig vatten över huvudet och borde ge mig på ett enklare projekt?
Jag vill som sagt bygga en digital synth (eller något liknande). Mitt första (eller egentligen mitt andra) steg i denna riktning är att göra ett kretskort med en mikrokontroller (STM32F4, dvs en ARM Cortex-M4) samt en DAC (Wolfson WM8731). Jag ritade mitt kretsschema (heter det så?) och PCB i Eagle och beställde kretskort och komponenter, "youtubade" videos om hur man löder SMD-komponenter och lödde dit mina komponenter, jag bad en stilla bön, kopplade in ström och testade. (Bifogat är bilder på kretsschema, PCB och ett foto på kortet.)
Till en början verkade allt helt okej. PWR LED lyste med ett vackert rött sken. Jag testade att koppla in programmeraren (ett STM32F4 Discovery utvecklingskort som också fungerar som SWD-programmerare) och skickade över ett enkelt "blinky"-program som skulle få en av mina LED-lampor att blinka. Men ingenting händer. Jag testar att debugga via GDB, och jag ser att processorn faktiskt kör, men att programmet är fast i en initialiseringsruting som ska gå över till den externa klockan HSE (High Speed External Clock), som i mitt fall drivs av en 8 MHz kristall. Till en början drivs MCU:n av en intern klocka. Så, där är jag fast, och jag vet inte vad jag gör för att felsöka detta.
Jag testade med att göra ett nytt försök och lödde på bara de mest essentiella komponenterna (för att minska möjliga misstag), använde mig av en annan teknik för att löda dit QFP:n, alltså själva STM32F4-mikrokontrollern (mindre lödkolvspets, och lödde ben för ben istället för att "dra" över alla ben i ett svep och sen rengöra med lödfläta). Mitt andra kort startade inte över huvud taget, jag lyckas inte programmera den ens över SWD.
Så frågan är: Vad gör jag nu? På mitt "halvfungerade" kort har jag alltså en STM32F4 som jag har lött dit för hand, processorn verkar boota upp men oscillatorn verkar inte starta. Det enda jag har som mätinstrument är en billig multimeter som jag har använt för att testa att jag har kontakt (continuitetstest) mellan olika punkter på kretskortet. Jag har inget oscilloskop och det är inte inom min budget just nu att köpa ett (och jag vill inte köpa något billigt för att sedan inse att jag har köpt skräp).
Har någon en idé på hur jag kan felsöka detta? Tror ni det är fel i mitt kretsschema, på min PCB-design, fel på min lödning eller något annat? Tacksam för all hjälp jag kan få!
Min design är rejält inspirerad av följande projekt: STM32F4 + Codec.
PS. Jag hoppas jag har placerat tråden i rätt kategori. Eftersom tråden är mer en fråga (ett rop på hjälp) än att jag vill visa upp mitt projekt, så placerade jag tråden i Allmänt / "Allmänna funderingar och frågor om elektronik". Om det var en feltolkning, så flytta gärna tråden.
EDIT: Bifogade kretsschemat i högre upplösning.
Det här blir mitt första inlägg här på Elektronikforumet. Ursäkta inläggets enorma längd. Jag är nybörjare på elektronik, men jag har programmerat mycket, så mjukvaran är inget större problem. Jag har läst och experimenterat lite med elektronik på kvällarna det senaste halvåret. Nu har jag gett mig på det kanske överambitiösa projektet att bygga en digital synt och jag har kört fast ordentligt. Har någon möjlighet att hjälpa mig vidare, eller har jag tagit mig vatten över huvudet och borde ge mig på ett enklare projekt?
Jag vill som sagt bygga en digital synth (eller något liknande). Mitt första (eller egentligen mitt andra) steg i denna riktning är att göra ett kretskort med en mikrokontroller (STM32F4, dvs en ARM Cortex-M4) samt en DAC (Wolfson WM8731). Jag ritade mitt kretsschema (heter det så?) och PCB i Eagle och beställde kretskort och komponenter, "youtubade" videos om hur man löder SMD-komponenter och lödde dit mina komponenter, jag bad en stilla bön, kopplade in ström och testade. (Bifogat är bilder på kretsschema, PCB och ett foto på kortet.)
Till en början verkade allt helt okej. PWR LED lyste med ett vackert rött sken. Jag testade att koppla in programmeraren (ett STM32F4 Discovery utvecklingskort som också fungerar som SWD-programmerare) och skickade över ett enkelt "blinky"-program som skulle få en av mina LED-lampor att blinka. Men ingenting händer. Jag testar att debugga via GDB, och jag ser att processorn faktiskt kör, men att programmet är fast i en initialiseringsruting som ska gå över till den externa klockan HSE (High Speed External Clock), som i mitt fall drivs av en 8 MHz kristall. Till en början drivs MCU:n av en intern klocka. Så, där är jag fast, och jag vet inte vad jag gör för att felsöka detta.
Jag testade med att göra ett nytt försök och lödde på bara de mest essentiella komponenterna (för att minska möjliga misstag), använde mig av en annan teknik för att löda dit QFP:n, alltså själva STM32F4-mikrokontrollern (mindre lödkolvspets, och lödde ben för ben istället för att "dra" över alla ben i ett svep och sen rengöra med lödfläta). Mitt andra kort startade inte över huvud taget, jag lyckas inte programmera den ens över SWD.
Så frågan är: Vad gör jag nu? På mitt "halvfungerade" kort har jag alltså en STM32F4 som jag har lött dit för hand, processorn verkar boota upp men oscillatorn verkar inte starta. Det enda jag har som mätinstrument är en billig multimeter som jag har använt för att testa att jag har kontakt (continuitetstest) mellan olika punkter på kretskortet. Jag har inget oscilloskop och det är inte inom min budget just nu att köpa ett (och jag vill inte köpa något billigt för att sedan inse att jag har köpt skräp).
Har någon en idé på hur jag kan felsöka detta? Tror ni det är fel i mitt kretsschema, på min PCB-design, fel på min lödning eller något annat? Tacksam för all hjälp jag kan få!
Min design är rejält inspirerad av följande projekt: STM32F4 + Codec.
PS. Jag hoppas jag har placerat tråden i rätt kategori. Eftersom tråden är mer en fråga (ett rop på hjälp) än att jag vill visa upp mitt projekt, så placerade jag tråden i Allmänt / "Allmänna funderingar och frågor om elektronik". Om det var en feltolkning, så flytta gärna tråden.
EDIT: Bifogade kretsschemat i högre upplösning.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Senast redigerad av mojbro 3 januari 2014, 23:51:37, redigerad totalt 1 gång.
Re: Hjälp med mitt första kretskort (STM32 + audio codec)
Gör gärna schemat lite större så man lättare kan läsa det.
Vart finns du ?
Vart finns du ?
Re: Hjälp med mitt första kretskort (STM32 + audio codec)
Tack för hinten! Jag har redigerat originalinlägget och lagt upp en version med högre upplösning nu.
Jag bor i Årsta (Stockholm).
Jag bor i Årsta (Stockholm).
- Klas-Kenny
- Inlägg: 11993
- Blev medlem: 17 maj 2010, 19:06:14
- Ort: Växjö/Alvesta
Re: Hjälp med mitt första kretskort (STM32 + audio codec)
Är kristallens kondingar anslutna till jord?
I schemat har du ju ritat dem till jord, men vad man kan se i layouten så ser det ju inte ut så.
Hur ser din initieringsrutin ut?
I schemat har du ju ritat dem till jord, men vad man kan se i layouten så ser det ju inte ut så.
Hur ser din initieringsrutin ut?
Re: Hjälp med mitt första kretskort (STM32 + audio codec)
Wow, vad snabba ni är på att svara! Va kul.
Kondingarna är anslutna till jord. Bifogar skärmdump från Eagle där GND är markerat.
Initialiseringsrutinen är den som hör till ST's Standard Peripheral Library.
startup_stm32f4xx.s kör SystemInit(), som i sin tur kör SetSysClock() (båda definerade i system_stm32f4xx.c). Processorn loopar i det oändliga i SetSysClock():
Dvs HSEStatus är 0.
Kondingarna är anslutna till jord. Bifogar skärmdump från Eagle där GND är markerat.
Initialiseringsrutinen är den som hör till ST's Standard Peripheral Library.
startup_stm32f4xx.s kör SystemInit(), som i sin tur kör SetSysClock() (båda definerade i system_stm32f4xx.c). Processorn loopar i det oändliga i SetSysClock():
Kod: Markera allt
/* Enable HSE */
RCC->CR |= ((uint32_t)RCC_CR_HSEON);
/* Wait till HSE is ready and if Time out is reached exit */
do
{
HSEStatus = RCC->CR & RCC_CR_HSERDY;
StartUpCounter++;
} while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT));
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Hjälp med mitt första kretskort (STM32 + audio codec)
Vad kör du för utvecklingsmiljö ?
om du visar hela din kod så kan vi ta en titt =)
Jag finns i Stockholm (Sankt eriksplan) så om det inte löser sig så kan du komma över så kan vi ta en snabb titt på vad som kan vara galet.
Jag är van STM32'are
Edit.
Kan inte hitta något fel i schemat.
Ahh såg att du skrev att den fastna på det stället i koden som du har markerat, hmm.
Känns som osc inte startar om den fastnar där
om du visar hela din kod så kan vi ta en titt =)
Jag finns i Stockholm (Sankt eriksplan) så om det inte löser sig så kan du komma över så kan vi ta en snabb titt på vad som kan vara galet.
Jag är van STM32'are
Edit.
Kan inte hitta något fel i schemat.
Ahh såg att du skrev att den fastna på det stället i koden som du har markerat, hmm.
Känns som osc inte startar om den fastnar där
Senast redigerad av lizerdboy 4 januari 2014, 00:16:46, redigerad totalt 1 gång.
Re: Hjälp med mitt första kretskort (STM32 + audio codec)
Jag kör vanliga ARM-GCC (på en Mac).
Bifogar koden som .tar.gz. Programmet är bara ett exempelprogram som jag lånat/stulit och vet fungerar på samma MCU, som jag strippat ner (det här exempelprogrammet till den krets jag "inspirerats" av).
Toppensnällt med all hjälp! Verkligen!
Bifogar koden som .tar.gz. Programmet är bara ett exempelprogram som jag lånat/stulit och vet fungerar på samma MCU, som jag strippat ner (det här exempelprogrammet till den krets jag "inspirerats" av).
Toppensnällt med all hjälp! Verkligen!
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Hjälp med mitt första kretskort (STM32 + audio codec)
Precis, jag tror inte det är något mjukvarufel (det kan jag få äta upp iofs), utan snarare något hårdvarurelaterat kring oscillatorn.
Kanske helt enkelt dålig lödteknik?
En konstig upptäckt, kan den vara relaterad? Om jag mäter resistans över kondingarna som sitter vid kristallen så har jag kring 600 ohm (om jag minns rätt, har inte grejerna framför mig just nu). Borde det inte vara "oändligt" motstånd? Även när jag mäter över min spänningsregulator så har jag omkring 600 ohm mellan "out" och jord. Är det något underligt med detta? Kan det ha något med saken att göra?
Edit: Vill bara poängtera att jag verkligen är en nybörjare... Känns som att ovanstående "upptäckt" kanske är helt normal. Men jag jämförde med STM32F4 Discovery's kondingar vid kristallen och de har "oändlig" resistans om man mäter över dem.
Kanske helt enkelt dålig lödteknik?
En konstig upptäckt, kan den vara relaterad? Om jag mäter resistans över kondingarna som sitter vid kristallen så har jag kring 600 ohm (om jag minns rätt, har inte grejerna framför mig just nu). Borde det inte vara "oändligt" motstånd? Även när jag mäter över min spänningsregulator så har jag omkring 600 ohm mellan "out" och jord. Är det något underligt med detta? Kan det ha något med saken att göra?
Edit: Vill bara poängtera att jag verkligen är en nybörjare... Känns som att ovanstående "upptäckt" kanske är helt normal. Men jag jämförde med STM32F4 Discovery's kondingar vid kristallen och de har "oändlig" resistans om man mäter över dem.
Re: Hjälp med mitt första kretskort (STM32 + audio codec)
om du väntar lite så fixar jag en hex fil med led1 o led2 som blinkar så har du något att testa med
Re: Hjälp med mitt första kretskort (STM32 + audio codec)
byt ändelse till .hex då EF inte vill att man bifogar .hex filer
den blinkar RB0 och RB1
den blinkar RB0 och RB1
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Hjälp med mitt första kretskort (STM32 + audio codec)
Ser/tänker jag fel eller är kondingarna vid kristallen bara kopplade till varandra men inte till GND?
Re: Hjälp med mitt första kretskort (STM32 + audio codec)
Grymt snällt! Jag kan tanka över koden, men ingenting blinkar. Jag antar att jag inte kan köra GDB utan koden(?)lizerdboy skrev:om du väntar lite så fixar jag en hex fil med led1 o led2 som blinkar så har du något att testa med
Kod: Markera allt
$ st-flash write Testboard\ F4.hex 0x8000000
2014-01-04T00:51:45 INFO src/stlink-common.c: Loading device parameters....
2014-01-04T00:51:45 INFO src/stlink-common.c: Device connected is: F4 device, id 0x10016413
2014-01-04T00:51:45 INFO src/stlink-common.c: SRAM size: 0x30000 bytes (192 KiB), Flash: 0x100000 bytes (1024 KiB) in pages of 16384 bytes
2014-01-04T00:51:45 INFO src/stlink-common.c: Attempting to write 44148 (0xac74) bytes to stm32 address: 134217728 (0x8000000)
EraseFlash - Sector:0x0 Size:0x4000
Flash page at addr: 0x08000000 erasedEraseFlash - Sector:0x1 Size:0x4000
Flash page at addr: 0x08004000 erasedEraseFlash - Sector:0x2 Size:0x4000
Flash page at addr: 0x08008000 erased
2014-01-04T00:51:47 INFO src/stlink-common.c: Finished erasing 3 pages of 16384 (0x4000) bytes
2014-01-04T00:51:47 INFO src/stlink-common.c: Starting Flash write for F2/F4
2014-01-04T00:51:47 INFO src/stlink-common.c: Successfully loaded flash loader in sram
size: 32768
size: 11380
2014-01-04T00:51:48 INFO src/stlink-common.c: Starting verification of write complete
2014-01-04T00:51:49 INFO src/stlink-common.c: Flash written and verified! jolly good!
De är kopplade till GND, men det syns inte riktigt på PCB-screenshotet.Johanb skrev:Ser/tänker jag fel eller är kondingarna vid kristallen bara kopplade till varandra men inte till GND?
Re: Hjälp med mitt första kretskort (STM32 + audio codec)
Det var synd
om du inte löser det innan söndag så får du gärna titta förbi så kan jag hjälpa dig.
All utrustning finns för omlödning felsökning, så det löser sig säkert
om du inte löser det innan söndag så får du gärna titta förbi så kan jag hjälpa dig.
All utrustning finns för omlödning felsökning, så det löser sig säkert
Re: Hjälp med mitt första kretskort (STM32 + audio codec)
Jag kommer gärna förbi! Jag skickar ett PM.
Re: Hjälp med mitt första kretskort (STM32 + audio codec)
Vill bara passa på att ge stort cred till lizerdboy som lät mig hälsa på hos honom igår och tålmodigt gick igenom mycket om lödteknik och annat (några timmars lödkurs vid mikroskopet)! Vi fick liv i kortet och det "bootade upp" hos honom, men tyvärr har jag inte hunnit sitta en enda minut med det hemma (livet som småbarnsförälder). Ska rapportera vidare när jag förhoppningsvis fått igång det hemma med min egen toolchain (jag tänkte byta från vanilla GCC till Crossworks som verkar smidigt) och se om jag också får ljud i lurarna snart! Stort, stort tack!
~mojbro
~mojbro
