Fórum témák
» Több friss téma |
Még elég sok felfedezni való van, főleg ADC és SPI terén, azokra lesz szükségem DMA-val. LCD és mintavételezés.
Meg flash írása config elmentéséhez. Ezekkel fogok foglalkozni. Az ADC elég komoly, mert trigger jelet is tud keresni. Ha a jel kilép egy sávból, interruptot hív.
Köszi!
![]() Majd jól jön ez, különböző időzítési problémák megoldásánál.
Sziasztok!
Olyat szeretnék kérdezni, hogy egy STM32F429 DISCO panellel (és STM32 St-Link Utility szoftverrel) hogyan tudok egy ilyen kínából rendelt kis panelt felprogramozni? Próbáltam már több féle módon is bekötni, de sehogy sem sikerült életjelet kicsikarnom bellőle, az alap demo villog és kész, a programmal nem is érem el. A neten rengetek bekötést találtam, de sajnos egyik se a kettő kombinációja és nem is jön be, ezért kérnék segítséget. Köszönöm!
Ha küldesz valami bővebb leirást a kis panelről, (doksi, kapcs.rajz stb.) könnyebben segitünk.
![]()
Na, a discoverz panelon a két jumpert (ST-Link felirat mellett) le kell venni, a CN2 SWD connector 2-es lába (SWCLK) megy a DCLK-ra, 3-sa (GND) a GND-re, 4-es (SWDIO) a DIO lábra. És nem JTAG módot hanem SWD-t kell használni (nem azok a jelek/jelnevek vannak mint a képedet.) Természetesen a kis panelnak is kell tápot adni.
A jumpereket alapból levettem. Tudom nem teljesen ugyanaz az elnevezés, de amit írtam kötés azzal működött, annyi volt a plusz, hogy a panel egy más kivezetéséről meg kellett tápolnom, de mostmár szépen látja
![]() Tetszik ez a mentalitás, hogy a DISCO panel így van kialakítva hogy mást is lehessen vele programozni, nagyon szimpatikus gondolat így a PIC után. Köszönöm mégegyszer!
Ezeket a kis paneleket 64k-sként adják el, de az internetet olvasva 128k memória van rajtuk.
STM32F103C8T6 Bővebben: Link Kizárólag az adatlap ír 64k-t, de egyébként minden más oké. Még nem próbáltam ki, csak fogom, de többen arról írnak, hogy a két IC STM32F103C8T6/STM32F103CBT6 között nincs eltérés csak az árban és az adatlapon. Érdekelne a tapasztalatotok a témában. A hozzászólás módosítva: Dec 16, 2016
Vagy csak simán ez a kis táblázat:
Bővebben: Link
Félreértettétek amit leírtam. Vettem a 64k-s STM32F103C8T6-ot.
Az st-flash rutin átpeccseltem, hogy tudjon 64 fölé is írni (tuningoltam). Lefordítom, megy. - olvasás indít - 128k valóban bejön, átlapolás nincs - hex editorral kicserélem az utolsó bájtokat a 128k-n - írás indít - kiíródik, verify megy - visszaolvasom a 128k-t és benne van, amit kiírtam, átlapolás nincs Azt szerettem volna leírni - amit most ki is próbáltam -, hogy a 128k flash az valóban létezik, címezhető és írható. Nincs memóriaátlapolás, fizikailag 128k van benne. Ezt bizonyos programok ki is használják, amik másolásvédekelmi adatot pakolnak bele. A hozzászólás módosítva: Dec 17, 2016
Hogyan is lehet azt az st-flash rutint átpatchelni? Nekem is van 3 ilyen modulom, de mindenki 64kB-osnak látja.
Linux alatt csináltam. Az st-flash forráskódját megbütyköltem, hogy ne jelezzen hibát, ha túltolnám az adatokat. Elég gusztustalan megoldás volt, mert leállt így a hibakezelése, de csak kipróbálni szerettem volna.
Az IC azt mondja magáról, hogy 64k-s. Amit én csináltam, hogy nem érdekel, az IC mit mond, feltoltam rá 128k-t. És ment. Küldök programot... A hozzászólás módosítva: Dec 17, 2016
Majd megpróbálom programból teleírni a második 64k-t, aztán kiderül mit lép rá. Amúgy nem tartom kizártnak, hogy nem gyártanak külön chipet a 64k és a 128k verziónak, csak a memória lekérdezéskor ad vissza más értéket. A device ID-ben sincs eltérés a két változat között.
Valóban jól hangzanak az STM32F103C8T6 ADC képességei, de ahogy emlékszem sem belső, sem külső Vref nincs hozzá. Lehet én vagyok finnyás, de ez így nem vicces.
Ahhoz képest még katalógus adat is van hozzá és a referencia kézikönyvben is szerepel
![]()
Íme a kód, szépen írja a 64k feletti részt. 128k felett viszont fagy.
A hozzászólás módosítva: Dec 17, 2016
Kipróbáltam, nálam is átírta rendesen. Köszi a mintaprogramot.
VREF+ és VREF- láb viszont csak a 100lábú változattól létezik.
Az a baj, hogy a: Trace.h, Trace.c
Valami linux csoda lehet? Amiröl Keil alkalmazásokhoz szokva, fogalmamsincs mik vannak benne! Mivel helyetesíthetném?
Helyettesíthető a printf-el, de irányítsd át a soros portra (ehhez kell még egy USB-RS232(ttl) átalakító + terminál program). A trace az stlink hardveren keresztüli üzenetküldésre szolgál a futó programból. Az eclipse console ablakában jelennek meg az ide írt dolgok. Ja és Win7 alatt is megy, nem csak Linux alatt.
Pontosan. És. A belső referencia feszültséget csak olvasni tudod (IN_17), nem ahhoz viszonyítva dolgozik az ADC, tehát legfeljebb kalibrálni lehet vele egy pontban.
More on this topic...
Itt van a mellékletben a trace nélküli változat. Lehet egyébként másra is használni ezt a pufferelt uart modult. A PA9-es lábon jelenik meg a soros jel 115200bit/sec sebességgel, ide kell kötni az USB/soros átalakítót.
Nem igazán értem!
Nálam így van Address definiálva uint32_t:
És mértnem használjátok inkább ezt?:
Én még nem hiszek nektek! A hozzászólás módosítva: Dec 18, 2016
Nem hagyott a téma aludni!
De, a kiíratás csak 3. futatásra sikerült! És elég fura eredményt kaptam:
Még nem értem miért növekszik minden futatásra az érték +0x10-el De kezd érdekes lenni! Mert elképzelhető, hogy más típusoknál is van ilyen turpiság?
Így írtam a programot, hogy növekedjen.
A lastByte eltárolja az utolsó beolvasott bájtot, újraírásnál meg egyesével növeli. Igazából egy rosszul sikerült szemléltető program. Azt kaptad, amit kapni kellett.
8 és 16 bites rendszereknél az int 2 byte szokott lenni, 32biteseknél pedig 4 byte.
Ilyen hardverspecifikus kódnál valóban szerencsésebb uint32 típusú változót használni, hogy egyértelműbb legyen a programozó szándéka, de persze attól még helyesen fog működni a kód int-el is.
Bocsánat, valóban elrontottam, mikrovezérlők alatt fontos a méretet egyértelműen jelölni. Mindezek ellenére a kód tesztelési szándékkal lett feltéve kizárólag STM32F103C8T6-ra, más chipre nem. Eredetileg a trace-eket printf-re át szerettem volna írni, de miután elmaradt, már inkább nem kavartam következő hozzászólással.
Sokáig élt bennem a C64, az IBM AT és a char far *, char near *, meg a hasonló 8/16 bites förmedvények. Nagyon mély nyomot hagyott az emberben. ![]() A 486-os rendszerek a maguk 32 bitjével hihetetlen fellélegzés volt, hogy ökörködés helyett szimplán csak leírom, hogy 'int' és megy minden, mint a karikacsapás.Ebben az eufórikus hangulatban rászoktam az int-re és úgy gondoltam, el lehet felejteni a 8/16 bitet egy életre. Ezért használom az int-et 32 bites rendszereken előszeretettel, bár valóban helytelen jelenesetben. A hozzászólás módosítva: Dec 18, 2016
Mindenesetre érdekes felfedezés, hogy 2 szer akkora a flash mérete, mint amennyit az adatlapok írnak!
Nem tudni, hogy ezek leminősített termékek? Odafigyeléssel lehet használni a plusz flash területet! Aztán próba szerencse kérdése? Más!: Keil-ben a sorosport aktiválásán kívül, még a FLASH programozását is engedélyezni kellet. Az stm32f10x_conf.h-ban:
És vigyázni a teszteléssel, mert ha bent marad, és elszabadul a rutin. Tönkreteszi a flasht! ![]() A hozzászólás módosítva: Dec 18, 2016
És még egy pozitív tapasztalat.
Én ezt a teszt kódot egy már kész programba szúrtam be, és maga a program többszöri indítás után is hibátlanul futott. Most roppantul érdekel, hogy a f407xE kontra f407xG esetében is ugyanez a helyzet? Bővebben: Link ![]() |
Bejelentkezés
Hirdetés |