Fórum témák
» Több friss téma |
Szia! Köszi a választ. Próbáltam így is, de nem ment. A VAPP-on (1-es és 2-es láb) vagy pedig a VDD-n (19-es láb) méri a tápfeszt?
Köszönöm, ez volt a megoldás. Mindkettőt be kell kötni!
Szia! Köszi a segítéget, megoldottad a problémámat!
Sziasztok!
Egy stm32f103c8t6 (bluepill board) RTC megszakításával gyűlt meg a bajom. Az a gondom, hogy nem következik be a másodpercenkénti megszakítás. A project STM32CubeMX-ben lett létrehozva, az RTC megszakítás be van pipálva, a hozzáadott kód a main.c-ben a következő (máshol nem nyúltam bele):
Az UART1-re rá vagyok kapcsolódva egy TTLUART/USB átalakítóval, a terminálban szépen látszik a lenti képen látható üzenetsor. A teljes projectet is mellékeltem, valamint a debuggolás közbeni regiszter értékeket is, ahol az látszik, hogy be van kapcsolva a megszakítás engedélyező bit. A soros porton elküldött üzeneteket is a mellékletbe feltöltöttem. Szóval: mi az amit kihagytam, vagy rosszul csináltam?
A PRLH és PRLL regiszterek értéke tényleg 0, mint ahogy a képen látszik? Azok a regiszterek adják meg, hány órajel eltelte után generáljon megszakítást az RTC. Fogalmam sincs melyik utasítással lehet őket beírni a HAL esetén (én LL-t használok).
Szerintem nem engedélyezted az RTC megszakítást.
Ezt a részt hiányolom:
Igen, a HAL_NVIC_EnableIRQ(RTC_IRQn); hiányzott. Csak az a fura, hogy az összes többi periféria esetén automatikusan berakta a Cube, ennél meg kifelejtette valahogy.
csatti: azon regiszterek értékei nem nullák, hanem csak írhatóak (ezért is van kiszürkítve), az ott maradt 0, az a reset utáni értékét mutatja (annak is csak az eleje látszik (0x0000FFFF)). A hozzászólás módosítva: Márc 10, 2018
Üdv mindenkinek, STM32F103C8-at szeretném összepárositani a QD320DB16NT9481RA kijelzővel.
Mivel STM32 terén kezdő vagyok ezért szeretném a segitségeteket kérni, eddig még sosem volt dolgom TFT vel csak 16x2 LCD-vel. Az adatlap szerint ez a kijelző 16bites párhuzamos adatbuszon kommunikál, ILI9481 a kontroller ic rajta, na most mi az egyszerűbb(nem kell nagy sebesség) ILI9481-en keresztül vagy FSMC-n keresztül meghajtani? Remélem nem kérdeztem hülyeséget Egy egyszerű példa, kábelezéssel sokat segitene. Köszönöm. A hozzászólás módosítva: Márc 23, 2018
Picit belekeveredtél. A C8-asban még nincsen FSMC periféria, az a 100 lábúaknál jelenik meg először. A kérdés pedig nem úgy merül fel, hogy ILI9481-n keresztül vagy FSMC-n keresztül, hanem hogy FSMC-n kommunikálsz az ILI9481-vel vagy pedig szoftveresen (esetleg SPI-on ha ki lett vezetve a TFT panelen).
Bekötésre pedig nézd meg a mellékelt képeket (STM32F103VET6 esetén).
Köszönöm a gyors választ, sajnos csak 16bit-es adatbuszon kommunikál, SPI csak az SD kartya kezelésére szolgál, ha jól értelmeztem az TFT adatlapot.
A bekötés igy kicsit meredek, esetleg egy mintapogram, TFT-STM32 melyik láb? Mint irttam még csak ismerkedek az STM32-vel. Itt tartok: STM32CubeMx-órajel, lábak konfigurálása majd Keil v5 HAL program rész, ST-Link V2 load-debuggolás(led villogtatás, GPIO, LCD16X2). Mivel érdemes megindulni? HAL vagy LL, kezdőnek is járható legyen, de hogy lehessen tovább fejlődni?(örök téma).
Kezdőknek https://os.mbed.com
Az általad belinkelt dokumentum Arduino Mega és STM32 mintapéldákat emnleget. Azokat begyűjtötted, megnézted már?
Szia,
A TFT tud menni SPI-vel is csak nem úgy van kofnfigurálva. IM0/IM1/IM2 lábak mondják megy milyen módban menjen. Neked sajnos ez be van nyákozva. De meg lehet oldani(én csináltam), pici nyák vágás itt ott és máris SPI-vel tudsz kommunikálni. Az alábbi linken találsz libet, átportolod STM32 re és örül Bővebben: Link
Az STM32-esed milyen panelon van? A bluepill-n sajnos sem az A, sem a B portnál nem hozzáférhető az összes láb, így a 16 bitet sajnos nem tudod egy lépésben kiküldeni rá.
mbed ili driver
https://os.mbed.com/users/hudakz/code/STM32F103C8T6_ILI9341/
Ez SPI-s kommunikációra van. Neki meg 16bitesen van kötve a kijelzője.
A hozzászólás módosítva: Márc 23, 2018
Kiindulásnak:
https://os.mbed.com/teams/GraphicsDisplay/code/UniGraphic/ De az ST-től is van práhuzamos TFT, csak 429-re: https://os.mbed.com/teams/ST/code/DISCO-F429ZI_LCD_demo/?platform=S...F429ZI Elérhető a teljes forrás is. Innen is lehet ötleteket meríteni, de ez nem mbed-os: https://stm32f4-discovery.net/2014/04/library-08-ili9341-lcd-on-stm32f429-discovery-board/
Igen, átnézztem a mintapéldákat, de nincs közöttük egyszerü példa, vagy touch-os, vagy SD-röl olvassa be a képet stb., szóval nekem sok igy kezdésnek.
Huh csak kapkodom a fejem mi lesz ebböl , mbed os, panel vágás, port-olás, jól indul, de nem adom fel. Blue pill-em van, szóval nekem "csak" annyi kell, hogy a kijelyőn megjelenjen egy karakter, utána már elboldogulok vgyis az már valami lesz. Igy arduino uno után kicsit rázós az út, nincsennek szájbarágós tutorialok, sok layer van hozzá(SPL,HAL, LL, mbed os)-sajat fejlesztésű könyvtárak(Keil meg a többiek), valaki az egyiket dicsőiti valaki a másikat és igy nehéz nekikezdeni, föleg hogy az ismerőseim közül senki sem foglallkozik ilyesmivel(régi motorosok,rádiósok, analogtechnika,erősáram) csak a net és a forumok maradtak.
Az (STM32) Example1 - Simple Test név azt sugallja, hogy ott kellene kezdeni.
Megfontolandó lehetőség egy Arduino Mega kártya beszerzése is (ha már ahhoz való megjelenítőt vettél). Panelvagdosás helyett egy MCP23S17 portbővítő (vagy két 595) felhasználásával is megoldható a 16 bites vezérlés "sorosítása". Bár a legelegánsabb megoldás mégis egy összeillő mikrovezérlő és kijelző kártya-páros beszerzése lenne. A hozzászólás módosítva: Márc 23, 2018
Az ILI9488-ast én arduino lib-ből írtam át (igaz az csak 8 bites vezérlésű, bár minimális a különbség a 8bites és a 16bites vezérlés között). A szűk keresztmetszeted az lesz, hogy nem marad másra szabad lábad, mert a nagy részét felemészti a kijelző (bár ezen meg könnyen lehet segíteni SPI vagy I2C buszos portbővítővel).
Nem tudom ezt ismered-e. Bár pont 16 bites ILI9481-hez lehet nincs kód. Viszont legalább számodra biztos ismert a felület.
A 8bites vezérlés érdekes lehet mivel 16 helyett csak 8data vonal kell, több port marad szabadon, Stm32duinoval mar megoldották, úgyhogy a hétvégen összekábelozom és kiprobálom.
Ha át lehet állítani nyákvagdosás nélkül, akkor érdemes megpróbálni. Ha mégis 16 bitesként akarod működtetni, akkor meg a perifériáknak kell berakni egy portbővítőt.
Sziasztok! Egy chip megismeréséhez gondolom ti is sok példaprogramot szoktatok írni. Ahhoz, hogy ne 'koptassuk' el a flash-t az ilyen (általában) elég kis méretű, de nagyon sokszor módosított programocskákkal, célszerű RAM-ból futtatni ezeket (különösen ha nem a 2dolláros bluepill boardról van szó, hanem nagyobb memóriával rendelkező, drágább fejlesztőpanelről). Hogyan is lehet ezt megoldani? Az alábbi példa egy STM32F429discovery boardról fog szólni. A példában a legegyszerűbb LED villogtatás lesz, fejlesztő eszközként pedig az STM32CubeMX és a System Workbench for STM32-t használtam, a CubeMX-ben a board-hoz tartozó alapbeállításokat választottam.
1. Ahhoz, hogy a chip a RAM területen elhelyezett programot indítsa, a BOOT0 és a BOOT1 lábat is logikai magas szintre kell húzni. 2. A fordító linkere a linker script alapján helyezi el a programkódot. Ez jelen példában a STM32F429ZITx_FLASH.ld nevű fájl. Ha megnyitjuk ezt, akkor a következő részt keressük meg benne:
Ezek tartalmazzák az adat és a kód memória kezdőcímét és a méretét. Módosítsuk ezt az alábbiak szerint:
3. A megszakítás vektor táblát is irányítsuk át a RAM területre. Ehhez adjunk hozzá egy definíciót a projecthez: Projekt beállítások / Settings / Preprocessor : VECT_TAB_SRAM Ezt azt eredményezi, mint ha minden forrásunk elejére beírnánk egy #define VECT_TAB_SRAM sort. A definíció a system_stm32f4xx.c forrásban fogja kifejteni a hatását (ezt nem kell beírni, ezt tartalmazza alapban):
4. Írjuk meg a prgramunkat a main.c-ben:
Ezt lefuttatva a két ledünk felváltva fog villogni, lehet korlátlan számban irogatni a kis programocskáinkat.
Más lehetőség, pl. az ingyenes TrueSTUDIO-ban.
Menü: Project > Properties > Build > Settings > Code location : RAM Kiválasztása. És elkészíti neked a: Debug_xxx_RAM.ld álományt.
Megnéztem az ingyenes TrueSTUDIO-t. Elég nagy a hasonlóság a szintén ingyenes System Workbench for STM32-el, ami nem is csoda, mert mindkettő Eclipse alapú. De tény hogy a TrueSTUDIO sokkal letisztultabb, átláthatóbb. Át is váltottam rá, bár egy ideig még meghagyom a másikat is vésztartaléknak.
Sziasztok!
STM32 + HAL esetén azt tapasztalom, hogy amikor elindítom az időzítőt, azonnal generál egy megszakítást. A cél az lenne, hogy periodikusan ismétlek egy jelet DAC-kal. Tehát timer megszakítás -> DAC konverzió -> konverzió vége megszakításban timer újrakonfigurálás (mivel beállítható on-the-fly a periódus). Jelenleg a konverzió után, amikor újrahúzom a timert (HAL_TIM_Base_Start_IT), azonnal jön is egy megszakítás, így pedig gyakorlatilag folyamatos a konverzió. Mi lenne a megoldás? A hozzászólás módosítva: Márc 27, 2018
Közben találtam is valami olyat, hogy __HAL_TIM_SET_AUTORELOAD makró, ami lehet orvosság a problémára. Ezzel mintha lehetne állítani menet közben is a periódust, a nélkül, hogy leállít-beállít-elindít.
Ettől függetlenül, érdekelne, miért generál azonnal megszakítás, ha elindítom a timert. A hozzászólás módosítva: Márc 27, 2018
üdv.
Kikészülök lassan de nem jövök rá mi a hiba. Van egy programom ami egy másik típusú elektronikán ugyan az a programrészlet hiba nélkül fut, de az aktuális verzióban valamiért nagyon fura dolgot csinál. A probléma nagyon egyszerű áramot mérek és amikor 2048 nál nagyobb vagy egyenlő akkor az egyik amikor 2048-nál kissebb akkor a másik feladat fusson le. De ehelyett mindig az első rész fut le ha nagyobb ha kissebb akkor is:
Arra rájöttem hogy a baj a "kurvaanyad" változóval van ugyanis ha uint16_t nek deklarálom akkor tökéletesen megy minden de muszáj a nagyobb változó így uint32_t vel deklarálva meghülyül és ha kissebb ha nagyobb 2048-nál a változó mindig belép az if-be. Minden egyéb változó uint16_t. Mi lehet a baj? A hozzászólás módosítva: Márc 28, 2018
Az adc_store(1)-et kiíratod soros porton, akkor változik egyáltalán?
|
Bejelentkezés
Hirdetés |