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   137 / 177
(#) Topi válasza vargham hozzászólására (») Jún 18, 2019 / 1
 
Ez a típus (se intl piacra STLink, se kínai piacra gyártott STLink) nem fog tápod adni, hiszen 1.65V-tól 5.5V-ig level-shift a kimenet, azaz érthető okokból nem is adhat tápot, hiszen neki a céláramkör tápfeszültségéhez kell illesztenie az IO jelszintjeit, ezért az ő VCC-je valójában bemenet. És ez így korrekt is

A kínai pendrive klónok adnak tápot, de ők 3.3V-os fix kimeneti jelszinttel dolgoznak.
(#) vargham válasza Topi hozzászólására (») Jún 18, 2019 /
 
Kösz, mindezt én is tudom. Pont ezért kérdeztem vissza. Mert úgy tűnt, hogy az eredeti kérdező nincs ezzel tisztában.
(#) Topi válasza vargham hozzászólására (») Jún 18, 2019 /
 
Uhh bocsi. Igen, az általad írt linkre reagáltam, de nem a hozzászólásodra kellett volna címeznem a választ
(#) david10 válasza Topi hozzászólására (») Jún 18, 2019 /
 
Köszönöm a válaszokat!
Igen, olyan fajta ST-Link. Vásárolnék pendrive St-link-et is, de arról azt hallottam, hogy selejt STM ICből keszülnek és az USB részükkel vannak gondok.
Számomra meglepő volt az, hogy logikai analizátorral nézve megvolt a magas jelszint (mármint amit annak érzékelt a szintén kínai Saleae klón), de mégse ment akárhogyan próbálkoztam. Azzal egyidőben rendeltem új STM8S-et az egyik CAN nyákhoz, (mert azt hittem hogy tiltva van a programozás mint pl. az atmegáknál) és három darab STM8S003 vagy STM8S103 fejlesztői nyákot (0.60 euró volt darabja), amikor összekötöttem, akkor láttam, hogy a ledek nem világítanak rajta és amint adtam tápot az USB dugaszba, egyből égtek a ledek és ment a programozás is.
A CAN nyákokra tápot adva kiírja, hogy MCU is protected. A következő lépés a védelem levevése lesz.

Kár, hogy az STMCube nem támogatja az STM8-at. Kezdőknek (akik nem szeretnek külsò IDE-t beállítani és megelégednek azzal is ha notepad++-al tudják szerkeszteni a forráskódot) melyik fordító ajánlott?

ST7 sorozattal játszott már valaki?
(#) vargham válasza david10 hozzászólására (») Jún 19, 2019 / 1
 
Idézet:
„Vásárolnék pendrive St-link-et is, de arról azt hallottam, hogy selejt STM ICből keszülnek és az USB részükkel vannak gondok.”

Ez így van. STM32F100 van bennük, amikben a specifikáció szerint nincs USB periféria. Gyakorlatban pedig van, és vagy működik, vagy nem. Nekem nagyon tetszik a 2 dolláros ára. Vettem 20 darabot, és minden projektemen fixen rajta is hagyom. Eddig kb 3 halt meg.

STM8-at nem használnék, hacsak nem milliós tételben akarsz gyártani valamit, ahol minden fillér számít. Nincs hozzá se GCC, se más C++ fordító. Van ST Visual Develop IDE, ami borzalom. Fordítónak meg Cosmic C és SDCC. Ennyi. Próbáltam, nem jött be. Maga az MCU nem rossz, de a szoftveres környezet borzasztó. Ezzel szemben például az AVR némely területen gyengébb, mégis szívesebben fejlesztek rá, hiszen ott az Atmel Studio és a GCC.
Az ST7 ráadásul ősrégi, már nem fejlesztett termékvonal.
Ja, és ez itt OFF, mert egyik sem ARM, hanem valami saját 8 bit architektúra.
Az STM32 ráadásul alig kerül többe, egy-egy darabnál nem számít, és sokkal többet tud. Van hozzá számtalan ingyenes IDE, és GCC fordító is.
Összegezve: Hacsak nem muszáj, nem kezdenék el egy régebbi dolgot tanulni, és használni.
(#) vargham válasza david10 hozzászólására (») Jún 19, 2019 /
 
Idézet:
„Kár, hogy az STMCube nem támogatja az STM8-at.”

Amit keresel, azt úgy hívják, hogy STM8CubeMX. Mondjuk kódot azt nem fog neked generálni, mert olyat nem tud.
(#) icserny válasza david10 hozzászólására (») Jún 19, 2019 /
 
STM8S103F3P6-hoz tökéletes az IAR Embedded Workbench for STM8 ingyenes változata (méretkorlátos ugyan, de az MCU-nak sem több a memóriája).
(#) vargham válasza icserny hozzászólására (») Jún 19, 2019 /
 
Van benne C++ compiler, ez jó. De a 8 kB az elég kevés.
(#) icserny válasza vargham hozzászólására (») Jún 19, 2019 /
 
Ha ennyi erőforrás kevés, akkor használj STM32-t!
(#) gtk hozzászólása Jún 19, 2019 /
 
Sziasztok,

32H7. Keszitettem nehany merest es az integeres FFT ez alapjan gyorsabb mint a float ( FPU-val ). Hogy lehetseges ez?

2048 point fft
q31 560 us
float 3 ms

4096 pt fft
q31 ~ 2 ms
A hozzászólás módosítva: Jún 19, 2019
(#) vargham válasza icserny hozzászólására (») Jún 19, 2019 /
 
Én szinte kizárólag azt használok. Munkához és hobbihoz is. Nekem bejött, hogy sokféle MCU van a nagyon kicsitől a nagyon nagyig, a kód jól hordozható, és vannak jó fejlesztőeszközök is.
(#) david10 válasza david10 hozzászólására (») Jún 20, 2019 /
 
Rendben, kifogok próbálni egy pendrive programozót is.
STM8-ra azért szeretnék fejleszteni (egy nagyon kicsike programot), mert van belőle egy csomó kész nyák, amiket egy biztonsági hiba miatt kellett lecseréljek.
ST7-et autóipari dolgokban láttam, de mivel ahhoz 0 támogatás van, ezért nem foglalkozok vele.
Fogok játszani az STM8CubeMx-el, a IAR-t is kifogom próbálni, STM8-ra kb. led villogót meg egy egyszerű CAN buszos programot szeretnék írni.

Nagyon szépen köszönök mindent! További sok sikert mindenkinek a fejlesztésekhez!
A hozzászólás módosítva: Jún 20, 2019
(#) Peter65 válasza david10 hozzászólására (») Jún 20, 2019 / 1
 
Én az STM8-cal assemblyben próbálkozom. Ehhez teljesen jó az STVD-STM8. Egy nagyon kicsike program így is összehozható. Egyébként az STVD az ST7-et is tudja. Az STM8 programozási leírásai általában az ST7-t is leírják.
Még egy; STM8S003-t csak sorozat égetéshez érdemes venni, nem pedig fejlesztéshez, mert csak 100 flash írás garantált, egyébként meg ugyan azok.
(#) edigi válasza Topi hozzászólására (») Jún 20, 2019 / 1
 
Nekem megy a blue pill ST-Linket használva minden külön táp nélkül, szóval nem értem mihez kell táp.
(Most csak sima pin headerrel van összekötve ami hosszabb is, 10->12, hogy ne lötyögjön, amíg nem jön meg az IDC20-as csatlakozóm).
Egyébként Linux (Wine) alatt futó EmBitz.
(#) Topi válasza edigi hozzászólására (») Jún 20, 2019 / 1
 
Ha nincs a lábakon (I/O) semmi, akkor a belső felhúzókon és védődiódákon keresztül tud annyi energiához jutni a programozón keresztül, hogy arról még épp elfut. De ez az erős néha, és "egyes esetekben" kategória. Használni így semmiképp sem ajánlatos, mert elkóborolhat flash írás közben, ha nincs stabil tápja.
(#) edigi válasza Topi hozzászólására (») Jún 20, 2019 /
 
Ha a programozó 19-es pinjét (másik szélső mint ahol most a piros van) kötném a panel 5V feliratú pinjéhez?
(#) gtk hozzászólása Jún 21, 2019 /
 
Sziasztok,

LTDC, 1. layer OK, a 2. layer framebufferebe betoltott szin nem jelenik meg. A leyer hatterszine igen.
Alpha0 = 0, Alpha tobb ertekkel kiprobalva. Valakinek van otlete ezzel kapcs ?
(#) gtk válasza gtk hozzászólására (») Jún 23, 2019 /
 
Lay 2 framebuffer: Flashbol olvassa, RAMbol nem.
(#) gtk hozzászólása Jún 26, 2019 /
 
Sziasztok,

Valaki nem tudja veletlenul hol talalnek egy egyszeru DMA2D -vel megvalositott szovegmegjelenites peldat ? TFT mukodik csak egy peldat sehol nem talaltam szoveg megjelenitesere. Udv.
(#) tlorincz72 hozzászólása Jún 26, 2019 /
 
Sziasztok,
Szeretném a github-on lévő egyik projektet:
https://github.com/rene-dev/stmbl
"átemelni" Eclips-be, vagy valami hasonló barátságosabb környezetbe, mert a Linux nagyon idegen számomra.

Valaki esetleg próbálkozott már hasonlóval?
Vagy ha lenne valakinek javaslata, megköszönném.

Üdv.
(#) kapu48 válasza gtk hozzászólására (») Jún 26, 2019 /
 
A stringek pontjait karakterenként kel össze szedni, ezt a DMA nem tudja.
Pláne ha még Szinezni is kel a pontokat, pontonként 16 bits, összerakni.

Szerintem nem éri meg 16 – 32 Byte-ról van szó karakterenként?
(#) kapu48 válasza gtk hozzászólására (») Jún 26, 2019 /
 
Egy ötlet.
Készítesz a drawChar-nak módosított változatát, hogy egy tőmbe pakolja a pixeleket.
Azt a tömböt már könnyen kiküldheted DMA2D-vel egy ablakba.
  1. /**
  2.   * @brief  Draws a character on LCD.
  3.   * @param  Xpos: the Line where to display the character shape
  4.   * @param  Ypos: start column address
  5.   * @param  c: pointer to the character data
  6.   * @retval None
  7.   */
  8. static void DrawChar(uint16_t Xpos, uint16_t Ypos, const uint8_t *c)
  9. {
  10.   uint32_t i = 0, j = 0;
  11.   uint16_t height, width;
  12.   uint8_t offset;
  13.   uint8_t *pchar;
  14.   uint32_t line=0;
  15.  
  16.   height = DrawProp[ActiveLayer].pFont->Height;
  17.   width  = DrawProp[ActiveLayer].pFont->Width;
  18.  
  19.   offset = 8 *((width + 7)/8) -  width ;
  20.  
  21.   for(i = 0; i < height; i++)
  22.   {
  23.     pchar = ((uint8_t *)c + (width + 7)/8 * i);
  24.  
  25.     switch(((width + 7)/8))
  26.     {
  27.     case 1:
  28.       line =  pchar[0];      
  29.       break;
  30.      
  31.     case 2:
  32.       line =  (pchar[0]<< 8) | pchar[1];
  33.       break;
  34.  
  35.     case 3:
  36.     default:
  37.       line =  (pchar[0]<< 16) | (pchar[1]<< 8) | pchar[2];      
  38.       break;
  39.     }
  40.  
  41.     for (j = 0; j < width; j++)
  42.     {
  43.       if(line & (1 << (width- j + offset- 1)))
  44.       {
  45.         BSP_LCD_DrawPixel((Xpos + j), Ypos, DrawProp[ActiveLayer].TextColor);
  46.       }
  47.       else
  48.       {
  49.         BSP_LCD_DrawPixel((Xpos + j), Ypos, DrawProp[ActiveLayer].BackColor);
  50.       }
  51.     }
  52.     Ypos++;
  53.   }
  54. }

Erre is van példa, amin csak keveset kel faragni:
  1. /**
  2.   * @brief  Fills buffer.
  3.   * @param  LayerIndex: layer index
  4.   * @param  pDst: output color
  5.   * @param  xSize: buffer width
  6.   * @param  ySize: buffer height
  7.   * @param  OffLine: offset
  8.   * @param  ColorIndex: color Index  
  9.   * @retval None
  10.   */
  11. static void FillBuffer(uint32_t LayerIndex, void * pDst, uint32_t xSize, uint32_t ySize, uint32_t OffLine, uint32_t ColorIndex)
  12. {
  13.  
  14.   /* Register to memory mode with ARGB8888 as color Mode */
  15.   Dma2dHandler.Init.Mode         = DMA2D_R2M;
  16.   Dma2dHandler.Init.ColorMode    = DMA2D_ARGB8888;
  17.   Dma2dHandler.Init.OutputOffset = OffLine;      
  18.  
  19.   Dma2dHandler.Instance = DMA2D;
  20.  
  21.   /* DMA2D Initialization */
  22.   if(HAL_DMA2D_Init(&Dma2dHandler) == HAL_OK)
  23.   {
  24.     if(HAL_DMA2D_ConfigLayer(&Dma2dHandler, LayerIndex) == HAL_OK)
  25.     {
  26.       if (HAL_DMA2D_Start(&Dma2dHandler, ColorIndex, (uint32_t)pDst, xSize, ySize) == HAL_OK)
  27.       {
  28.         /* Polling For DMA transfer */  
  29.         HAL_DMA2D_PollForTransfer(&Dma2dHandler, 10);
  30.       }
  31.     }
  32.   }
  33. }

Min ezt itt megtalálod: Bővebben: Link
Keres rá! :\STM32Cube_FW_F4\Projects\STM32F429I-Discovery\
A hozzászólás módosítva: Jún 26, 2019
(#) csatti2 válasza tlorincz72 hozzászólására (») Jún 27, 2019 /
 
TrueStudio-val (eclipse alapú) lefordíthatóak saját makefile-os projektek (és debugolhatóak is). Annyi feladatod lenne, hogy toolchain.mak fájlt rendesen felkonfiguráld (hol vannak a különböző eszközök a gépeden, pl. python), illetve a nem támogatott linux parancsokat átírd windows kompatibilisre a makefile-ban.

Mintának itt egy saját projektem, ez működik windows alól és makefile-os (pár külső könyvtárat kell letölteni, amelyeknél nem voltam biztos a terjeszthetőségről ezért inkább nem tettem bele direktben). A projekt különlegessége, hogy mind ARM-ra, mind windowsra lefordítható a kód és így a grafikus felület módosításait sokkal gyorsabban tudom tesztelni (nem kell állandóan felírni a mikrokontrollerre).
https://github.com/csatti/SolderingStation
(#) csabeszq válasza kapu48 hozzászólására (») Jún 28, 2019 /
 
Hardverből minden megy.

Definiálsz egy ablakot a TFT-ben, egy tömbbe feltöltöd a pontokat, utána DMA.

Én még a 90/180/270 fokkal elforgatott több soros szövegeket is DMA-zom. Csak meg kell adni, hogy honnan hová milyen irányban csinálja.

A legtöbb TFT okos, képes ezekre.
A hozzászólás módosítva: Jún 28, 2019
(#) kapu48 válasza csabeszq hozzászólására (») Jún 28, 2019 /
 
Akkor egyet értünk!

Mert én is ezt javasoltam, még azt is megadtam, hogy melyik rutinokat lehet a legkönnyebben átírni a célra.

Bár még nem csináltam meg magamnak. Szerintem nagyon memória pazarló megoldás lenne!
Vegyünk példának 16*24 pixeles karaktert 16bites szín mélységet, 16 karakteres stringet: 16*24*16=6140*2Byte.
Megtérül ez a gyorsaságon?

Még kel a SD-nek is 2*512Byte
(#) csatti2 válasza kapu48 hozzászólására (») Jún 28, 2019 /
 
Megtérül. Ilyen teljesítményű mikrokontrollereknél már érdemes úgyis RTOS-t használni, illetve dinamikusan allokálni az ilyen ideiglenes memóriaterületeket.

Az előző hozzászólásomban linkelt projektnél például az összes grafikus elem automatikusan egy pixelmap-ra rajzolódik (memóriában allokált puffer). A képernyőfrissítésért egy dedikált task felel. Amikor elkészülnek, bekerülnek egy sorba. A program pedig a következő elem megrajzolására vált. A sor kezelését egy másik task végzi. Amikor a DMA végez az aktuális feladattal (itt is van egy plusz absztrakciós szint, a grafikus "driver" szintjén), a sorkezelő task felébred, felszabadítja az előző feladat memóriaterületét, kiveszi a következő elemet a sorból majd kiküldi a képernyőre, ezután elalszik. És így tovább. Ezzel a módszerrel olyan sebesség érhető el, egy "vacak" SPI-os TFT-vel is, hogy gyakorlatilag nem látszik a képernyőfrissülés.
(#) kapu48 válasza csatti2 hozzászólására (») Jún 28, 2019 /
 
Nézegettem a projectedet.
De sajnos linuxos, ahhoz pedig nem értek. (És már vén vagyok, hogy megtanuljam!)

(#) csatti2 válasza kapu48 hozzászólására (») Jún 28, 2019 /
 
Linuxos? Hát ezt honnan vetted? Az egész projektet windows alatt fejlesztettem.
A hozzászólás módosítva: Jún 28, 2019
(#) kapu48 válasza csatti2 hozzászólására (») Jún 28, 2019 /
 
Teljesen más szerkezete van, mint amit az ST oldalain találunk. Vagy amit a C_MX generál.
Ezért gondoltam, hogy linuxos.
(#) csatti2 válasza kapu48 hozzászólására (») Jún 28, 2019 /
 
Annak semmi köze az operációs rendszerhez. Nem nagyon rajongok a cubeMX által generált kódért, jobb szeretem tudni mi az, ami tényleg történik. Ettől még ez a kód is az ST LowLayer HAL-ját használja.

Egyébként ha átnézed az ST által készített demó projekteket, legalább 10 féle stílusban készültek.
A hozzászólás módosítva: Jún 28, 2019
Következő: »»   137 / 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