Fórum témák

» Több friss téma
Fórum » ARM - Miértek hogyanok
 
Témaindító: gtk, idő: Jún 26, 2007
Lapozás: OK   135 / 177
(#) csatti2 válasza csatti2 hozzászólására (») Ápr 17, 2019 /
 
A megjegyzésbe helytelenül írtam, hogy a védődiódák engedik a tág bemeneti tartományt. A helyes működéshez Upp < 5V feltételt be kell tartani. Annyi csak, hogy az áramkör nem megy tönkre ha nagyobb delejt kap.
(#) kapu48 válasza Sanyesz5 hozzászólására (») Ápr 17, 2019 /
 
Akkor a googli a barátod, jelszó: STM32F103 metal Detector
(#) rolandgw hozzászólása Ápr 25, 2019 / 1
 
Régi - új IDE:
Bővebben: Link
(#) Sanyesz5 hozzászólása Ápr 25, 2019 /
 
Sziasztok!

Lenne egy amatőr kérdésem, adott egy stm32f103 (blue pill) eddig usb-ről használtam, onnan kaptam a feszt. A lényeg a lényeg, van egy feszültség mérés is a programban,
voltage = 3.3 / 4095 * adcin; nagyjából.
Ma külső tápról próbáltam járatni, elméletben gnd meg egy +5v? Mert elindul szépen, csak rosszul számolja ki a feszültséget amit mér, elvileg ha usb-ről járatom akkor stab ic csinál 3.3 voltot és ő azzal a ref feszültséggel matekozná ki a dolgokat?
(#) csatti2 válasza Sanyesz5 hozzászólására (») Ápr 27, 2019 /
 
Igen.



Kicsit bővebben akkor tudunk segíteni, ha definiálod mit is értesz "rosszul számolja ki" alatt. Teljesen rossz a végeredmény? A végeredmény hasonló de eltér az USB esetén megszokottól?

  1. voltage = 3.3 / 4095.0 * (float)adcin; // Inkább így (bár én az integer matekot preferálnám egy STM32F1 esetén)
(#) gtk hozzászólása Ápr 27, 2019 /
 
Sziasztok. Valaki meg tudna mondani, hogy hogyan tudom lekerdezni hogy eppen melyik DMA csatorna generalta a megszakitast ? Barmelyik DMA RX Cplt callbackre jo lenne...

  1. void I2SEx_DMATxRxCplt(DMA_HandleTypeDef *hdma)
(#) gtk hozzászólása Ápr 28, 2019 /
 
Sziasztok, Folyton kifagyott az ST LINK Utility, es mostmar nem is tudom programozni a H7-et. Az st link ezt irja: Can't halt the core. Probaltam under reset, stb formaban is. Ez most azt jelenti hogy a procit cserelhetem ki ? ESDt nem kapott, tapja van, tulajdonkeppen hozza nem volt nyulva a panelhoz, csak programoztam.
(#) Topi válasza gtk hozzászólására (») Ápr 28, 2019 /
 
Pár tipp:

- Bootloader select pin(ek) stabil(ak)?
- Oszcillátorod stabil?
- SWD órajelet próbáld meg lejjebb vinni (próbaképp)
- Ha sikerül hozzáférned akár csak rövid időre is, hívj egy Chip erase-t (esetleges flash lock)
- Tartsd kézzel resetben + under reset opció
(#) gtk válasza Topi hozzászólására (») Ápr 28, 2019 /
 
Szia. Koszi. Ha ki/bekapcsolom a tapfeszultseget mikozben probal csatlakozni, akkor racsatlakozik es fel tudtam programozni, viszont nem fut a program ( egy egyszeru LED blink van rajta ami mukodott korabban ) es az alabbit sikerult elkapni:
(#) gtk válasza gtk hozzászólására (») Ápr 28, 2019 /
 
Ezt sikerult elkapni:

Idézet:
„12:50:12 : ST-LINK SN : 53FF6B064980555737551487
12:50:12 : ST-LINK Firmware version : V2J24S0
12:50:12 : Connected via SWD.
12:50:12 : SWD Frequency = 1,8 MHz.
12:50:12 : Connection mode : Normal.
12:50:12 : Debug in Low Power mode enabled.
12:50:12 : Device ID:0x450
12:50:12 : Device flash Size : 2MBytes
12:50:12 : Device family :STM32H7xx
12:50:18 : [upsdr_h7.hex] opened successfully.
12:50:18 : [upsdr_h7.hex] checksum : 0x002BDF51
12:50:25 : Memory programmed in 2s and 465ms.
12:50:25 : Can not read memory!
12:50:27 : Flash memory [0x08000000:0x08200000] Checksum: 0x00000000”
A hozzászólás módosítva: Ápr 28, 2019
(#) gtk válasza gtk hozzászólására (») Ápr 28, 2019 /
 
Ra tudok csatlakozni ha csatlakozas kozben megszakitom majd ujra raadom a tapot, de korulmenyes. Igy fel tudom programozni, nagy nehezen es sikeresen vissza is ellenorzni. Keil debuger is elindult nehanyszor, de nehany periferia init utan mar nem fut tovabb a program, "can't access..."-el leall a debuger es ujracsatlakozasnal meg "Can't halt the core" uzenetet ad...
(#) Topi válasza gtk hozzászólására (») Ápr 28, 2019 /
 
Idézet:
„Ha ki/bekapcsolom a tapfeszultseget mikozben probal csatlakozni, akkor racsatlakozik es fel tudtam programozni, viszont nem fut a program”


Ez core-clock probléma szerű. Ilyen sűrűn fordul elő, ha míg totojázik az ST-Link, de közben már elindul a program, aminek meg van olyan része, aminek hatására PLL reconfig van, vagy egyszerűen power-down, vagy olyan clock configot használsz. Ultra low power alkalmazásoknál, vagy suspend-es USB-nél sokszor szívtam már ilyennel, és a jó időben felengedett resettel ilyenkor lehet programozni, de utána debuggolni már nem, mert a core-clock váltástól szétesik az SWD is.

További hibakeresési tippek:
- USB suspend letiltása (ha használsz)
- SWD frekvencia 1MHz körülire mérséklése próbából
- Fejlesztés ideje alatt boot delay, mielőtt komolyabb periféria konfigurálást végzel, mert sajnos download előtt többször felengedi néha az ST-Link a resetet, amitől el-elindul a program.
- Téves remap, téves portconfig, ami beleszól az SWDIO/SWCLK lábakba (pl. GPIO_Pin_7 az jó, de GPIOB helyett GPIOA-t írtál véletlen)
- Sikeres chip erase után egy üres ledvillogtató kód készítése, csak a legszükségesebb perifériák felkonfigurálásával, és úgy próbáld meg az újra és újra kódfeltöltést.
A hozzászólás módosítva: Ápr 28, 2019
(#) gtk válasza Topi hozzászólására (») Ápr 28, 2019 /
 
Koszi ! Hat reszlegesen megoldodott, valahol olvastam hogy ha DMAt hasznalsz, akkor ilyenkor (Can't halt the core) a BOOT0-at ilyenkor fel kell huzni +ra, majd ujrainditani. Es valoban, ezutan programozhato, viszont az LTDC init-nel elszall az egesz ( es ezutan mar hiaba a reset nem megy semmi ) , azt kiszedtem es a kodom tobbi resze mukodik, a debuger is. Viszont nem tudom egyelore hogy a korabban tokeletesen mukodo LTDC init-nel miert akad ki.
(#) Topi válasza gtk hozzászólására (») Ápr 28, 2019 /
 
Erre a válasz egyszerű, egyes esetekben, amíg a DMA dolgozik, addig a CPU részben/egészben le van választva a busmatrixról / flashről. Mindig ping-pongoznak, hogy hol a DMA vár arra hogy hozzáférést kapjon a busmatrixhoz, hol a CPU.

A Te esetedben a DMA egészen egyszerűen végre szót kapott amíg programoztad, és elragadta a busmatrixot flash-estül.

Szerk: Egyes esetek = Mindketten a RAM-hoz szeretnének hozzáférni írás célból, ram->ram művelet, ahol nem a periféria a cél (ram->periph esetén senki nincs felfüggesztve). Ha a CPU-is RAM-ba akar írni, és a DMA is, akkor a CPU lesz felfüggesztve amíg a DMA dolgozik, a CPU húzza a rövidebbet.
A hozzászólás módosítva: Ápr 28, 2019
(#) kapu48 hozzászólása Ápr 29, 2019 /
 
Üdvözletem!

Szeretném megkérdezni, hogyan lehet megállapítani STM32F407-en,
Mi okozhat „Bus Fault exception” megszakítást?
Valamelyik regiszterben esetleg jelzik, hogy honnan került oda a program?

Keil5 ST-Link debugeren.

Sajnos debugoláskor léptetéses módban nem működik a megszakítás, ezért nem tudom elkapni a hibát!
A hozzászólás módosítva: Ápr 29, 2019
(#) kapu48 válasza kapu48 hozzászólására (») Ápr 29, 2019 /
 
Grafikus alkalmazásnál meg kellet háromszoroznom a heap-ot.
Már itt tartok: Heap_Size EQU 0x00000A00

Mit tapasztaltatok, ez mindig szükséges?
Vagy nálam keresendő a hiba?

Erröl lenne szó: DevKit407_GUI_App
A hozzászólás módosítva: Ápr 29, 2019
(#) gtk hozzászólása Ápr 29, 2019 /
 
Sziasztok. Probaltam az I2S-t master RX modban elinditani a HAL-lal de egesz nap ez nem sikerult. A generalt kod leellenorizve, nehany hibat javitottam, de nincs otletem mar. Egyszeruen nincs semmi jel a CK es WS labakon, meg termeszetesen a DMA IRQ-ba sem megy be. Proba keppen atallitottam normal GPIOra a CK es WS labakat, ugy mukodnek. Az SPI (I2S) periferia regisztereit atnezve jonak tunik a config. Korabban ezt mar eljatszodtam F4 alatt, mukodott, igaz HAL nelkul.

Az LTDC, ami korabban mukodott meg ezt produkalja az adott sornal. Mindez KEIL UV5-ben. Csodas.
A hozzászólás módosítva: Ápr 29, 2019

ltdc_err.png
    
(#) gtk hozzászólása Máj 1, 2019 /
 
Sziasztok. Nem tudom eldonteni hogy a DMA nem irja a memoriat ( periph to memory conf ) vagy csak a KEIL nem tudja megjeleniteni a tartalmat. 32H7 a proci, a memoria meg a D2 tartomanyban van. A DMA latszolag mukodik, a memoria tartalmat a watch-ban nezve mindig 0. A Memory ablakban nezve van valami, de mindig ugyanazokkal az ertekekkel... ( A TFThez hasznalt memoria tartalma meg valtozik a watch-ban, azt el tudom kapni. )
A hozzászólás módosítva: Máj 1, 2019
(#) gtk hozzászólása Máj 2, 2019 /
 
Amatorok irjak a HAL-t? Meg a 32h743xx.h-ban is pozicio hibak vannak. I2S conf.

Leegyszerusitettem az I2S3 beallitasat, csak a sajat IRQ-jat hasznalom, semmi DMA meg ilyesmik. IRQ bejon, de az RXDR mindig 0. Az adatvonalakon fizikailag ott a jel ( ck, ws, dat ) es el is jut a proci labara. A CFGR a z emlitett header kijavitasa utan beall ahogy kell, SPI engedelyezve, overflow, undeflow flag nincs beallva, minden jonak tunik. Valakinek otlete ezzel kapcs ?
A hozzászólás módosítva: Máj 2, 2019
(#) gtk hozzászólása Máj 7, 2019 /
 
Sziasztok ! Valaki tapasztalt hasonlot: 32H7, GPIOC kimenetnek beallitva, H szintre,, regiszterek allapota alapjan minden tokeletes, a kimenet fizikailag meg lebeg, L szintnel szinten. Tobb PINen (3) is. Ugyanezen a porton van I2S, az mukodik...
(#) benjami válasza gtk hozzászólására (») Máj 7, 2019 /
 
Órajelet kap a GPIOC? (bár lehet, hogy ha nem kapna akkor alternatívra állítva sem működne).
(#) kapu48 hozzászólása Máj 7, 2019 /
 
Szevasztok!

Van 4db ilyen DRAM-om: VG264265BJ 262,144x16-Bit CMOS Dynamic RAM

Szerintetek ezt lehet STM32Fxxx FSMC-vel kezelni?
Esetleg ha van valami ötletetek, vagy link hasonló témáról?
Jól jönne!

Vagy kezeljem perifériaként, külön a 16 bit adat vonalat, 9 cím bit, 4 vezérlő bit.
És írjak nekik írás, olvasás, frissítés rutinokat.

Nagyon kellene a memória bővítés a grafikus alkalmazásokhoz!
(#) benjami válasza kapu48 hozzászólására (») Máj 8, 2019 / 1
 
Én nem szenvednék ezzel a DRAM chippel a bizonytalan eredményért, amikor 2$-ért kapsz hardverből támogatott nagyobb kapacitású RAM-ot.
Tudomásom szerint az FSMC csak SRAM-ot és SDRAM-ot támogat (SDRAM-ot nem mindegyik típus). A fekete stm32f407z board pl. csak SRAM-ot, rajta is van az 1MB SRAM helye. Én beforrasztottam, teljesen jól működik ezzel a típussal:IS62WV51216
Az stm32f429 discovery-n 8MB SDRAM van, konkrétan ez a típus: IS42S16400.
(#) kapu48 válasza benjami hozzászólására (») Máj 8, 2019 /
 
Köszi, a linkeket!
Bár én még kínából sosem rendeltem.
Az áraik nagyon csalogatóak. De egyúttal gyanúsak is!
Hogyan tud 25db-ot 20$ alatt adni, postával?
Bővebben: Link

Nem hamisítványok ezek?

Egyébként az F429-esre találtam példát:
Bővebben: Link
(#) kapu48 válasza kapu48 hozzászólására (») Máj 8, 2019 /
 
Még ez, amit érdemes olvasni SDRAM témában:
Bővebben: Link
(#) benjami válasza kapu48 hozzászólására (») Máj 8, 2019 / 1
 
Én az 1MB-os SRAM-ot rendeltem, az teljesen jól működik. Az SDRAM benne volt eredetileg is a discovery board-omban, így azt nem kellett rendelnem. A SRAM időzítések beállításához írtam tesztprogramot, ami feltölti a teljes RAM területet és visszaellenőrzi, hogy helyes érték került-e bele.
  1. #include <stdlib.h>
  2. #include "main.h"
  3. #include "stm32f4xx_hal.h"
  4.  
  5. #define TESTPATTERN  mp + 0x00000000
  6.  
  7. // f407zet board 1MB sram: 0x68000000..0x68100000
  8. // f429zit discovery board 8MB sdram: 0xD0000000..0xD0800000
  9. #define ADR_START    0x68000000
  10. #define ADR_END      0x68100000
  11. #define STEP         0x4
  12.  
  13. enum e_verify
  14. {
  15.   VRF_NONDEF, VRF_ERROR, VRF_OK
  16. } verify;
  17.  
  18. uint32_t mp;  // memoria mutato
  19. uint32_t dt;  // adat
  20. uint32_t db;  // adatmennyiség
  21.  
  22. extern SRAM_HandleTypeDef hsram1;
  23.  
  24. void memTest(uint32_t startaddr, uint32_t endaddr, uint32_t step)
  25. {
  26.   verify = VRF_NONDEF;
  27.  
  28.   // memoria feltöltés
  29.   mp = endaddr;
  30.   printf("Write start: 0x%X ... 0x%X\r\n", (unsigned int) ADR_START, (unsigned int) ADR_END);
  31.   while (mp > startaddr)
  32.   {
  33.     mp -= step;
  34.     dt = TESTPATTERN;
  35.     *(uint32_t *)mp = dt;
  36.   }
  37.   printf("Write end\r\n");
  38.  
  39.   // a feltöltött értékekek visszaellenörzése
  40.   mp = startaddr;
  41.   db = 0;
  42.   while (mp < endaddr)
  43.   {
  44.     dt = *(__IO uint32_t *)mp;
  45.  
  46.     if (dt == (TESTPATTERN))
  47.     { // egyezik
  48.       if (verify != VRF_OK)
  49.       { // most lett OK
  50.         if(mp > startaddr)
  51.           printf("%X, size:0x%X\r\n", (unsigned int)mp, (unsigned int)db);
  52.         else
  53.           printf("\r\n");
  54.         db = 0;
  55.         printf("verify ok: read:0x%X, addr:0x%X - ", (unsigned int)dt, (unsigned int) mp);
  56.         verify = VRF_OK;
  57.         HAL_Delay(1);
  58.       }
  59.     } else
  60.     { // eltér
  61.       if (verify != VRF_ERROR)
  62.       { // most lett ERROR
  63.         if(mp > startaddr)
  64.           printf("%X, size:0x%X\r\n", (unsigned int)mp, (unsigned int)db);
  65.         else
  66.           printf("\r\n");
  67.         db = 0;
  68.         printf("verify error: write=0x%X, read=0x%X, addr:0x%X - ", (unsigned int)(TESTPATTERN), (unsigned int)dt, (unsigned int)mp);
  69.         verify = VRF_ERROR;
  70.         HAL_Delay(1);
  71.       }
  72.     }
  73.     db += step;
  74.     mp += step;
  75.   }
  76.   printf("%X, size:0x%X\r\n", (unsigned int)mp, (unsigned int)db);
  77. }
  78.  
  79. void mainApp(void)
  80. {
  81.   HAL_Delay(1000);
  82.  
  83.   memTest(ADR_START, ADR_END, STEP);
  84.   printf("End\r\n");
  85.   while (1)
  86.     ;
  87. }

168MHz-es proci órajelet beállítva az alábbi időzítésekkel még jól működik:
Address setup time in HCLK clock cycles : 3
Data setup time in HCLK clock cycles : 5
Bus turn around time in HCLK clock cycles : 0
(#) kapu48 válasza benjami hozzászólására (») Máj 8, 2019 /
 
Köszönöm!

Legalább ezt a tesztet már nem kel majd megírni, csak futatni!
(#) gtk válasza benjami hozzászólására (») Máj 10, 2019 /
 
CubeMX altal generalt kod. Az osszes hasznalt I/O orajelet bekapcsolta. A gond az hogy az LSE labakrol van szo. Az adatlap szerint csak 2mA-t tud es csak egy lehet beloluk kimenet. Egyet allitottam csak kimenetnek, de az sem mukodik. Megneztem nincs-e bekapcsolva veletlenul a LSE, de nincs. Alternate-ben sincs, a regek tartalma alapjan jo a config.
A hozzászólás módosítva: Máj 10, 2019
(#) Moderátor hozzászólása rolandgw hozzászólására (») Máj 17, 2019
 
Felhasználói kérésre a hozzászólások törlésre kerültek.
(#) gtk hozzászólása Jún 3, 2019 /
 
Sziasztok. 2048*2 meretu tombot kellene memoriaban tarolnom. Keil, uv5-ot hasznalok. Korabban F4-en siman mukodott. H7-en sehogy sem akar mukodni, a tomb tartalma egyszeruen nem az ami kellene hogy legyen, tobb breakpointnal is megneztem. A tombot nem modositja semmi csak olvassa. Van valakinek valami otlete ?

  1. const float32_t c_bpf_4k_USB_kernel [FFT_SIZE*2] = { ... }
Következő: »»   135 / 177
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem