 |

|
Elektronika.lt portalo forumas
Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo.
Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.
Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius,
kurie nesilaiko forumo taisyklių.
Pastebėjus nusižengimus, prašome pranešti.
Dabar yra 2025 04 24, 02:58. Visos datos yra GMT + 2 valandos.
|
|
|
 |
Forumas » Mikrovaldikliai » Arm_o pradžia:
|
Jūs negalite rašyti naujų pranešimų į šį forumą Jūs negalite atsakinėti į pranešimus šiame forume Jūs negalite redaguoti savo pranešimų šiame forume Jūs negalite ištrinti savo pranešimų šiame forume Jūs negalite dalyvauti apklausose šiame forume
|
|
|
 |
 |
 |
Arm_o pradžia: |
Parašytas: 2016 11 25, 10:51 |
|
|
|
Jei jau praėjote pirmuosius žingsnius su Pic arba AVR ir jie jau jūsų nebetenkina pradedi ieškoti kokybinio šuolio, dažniausiai tai ARM. Norėčiau pasidalinti informacija, kad nereiktų lipti ant grėblio.
Pradžioje reikia apsispresti, kokio gamintojo ARM naudosi. Reikės ARM, JTAG, softo, plokštės, matinimo šaltinio. Mažiausia problemų sukuria, jei nusipirksite DISCOVERY plokėtę. Maitinas iš USB, programuojasi per USB, joje yra programatorius debugeris ST-LINK, galėsite kitus SM firmos ARM programuoti. Kainos, naujumo, papildomų galimybių atžvilgiu labiausia imponuoja dicovery 4, 4 tai pagal procesorių. STM32F407VGT6. Cortex M4 branduolys jau šis tas.
Antra problema softas. Per www.st.com pasisiunti Keil_v5 teks prisiregistruoti ir duoda softą, tik 32 kbaitus kodo, pradžiai daugiau nei pakanka, o po to žinot kaip tai apeiti . Kai Keilą instaliuosit teks dar pakus parsisiusti šiam procesoriui. Dar teks parsisiusti CubeMX, kitaip su kojomis bus sunku, jis dar ir kodą konfiguracinį sugeneruoja, bet jį geriau naudoti tik kojų pasirinkimui, vėliau pasakysiu kodėl. Reiks dar USB-mini kabelio ir galit pradėti...  |
|
|
|
|
 |
 |
Arm_o pradžia: |
Parašytas: 2016 11 25, 11:18 |
|
|
|
Kiek girdėjau, kad pamirksėti pirmuosius led_us reikia savaitės. Kad nereikėtų savaitės tai ir pradėjau šį postą. Kai jau viską instaliavot vėl atsidursit kryžkelėje, jums bus reikalingi hederių failai, kažkodėl juos čia vadina draiveriais, įtariu dėl CubeMX taip įvardino. Variantai ką naudoti: Hal, Cmsis, Stdperiph, jei naudosite CubeMX sugeneruotą kodą, tai tada Hal hederius ir jei juos pradėsit naudoti bus sunku pereiti prie kitų. Man labiau prie dušios tai CMSIS ir Stdperiph arčiau klasikos.
Jei naudosit CMSIS ir Stdperiph draiverius teks parsisiusti iš www.st.com šiam procesoriui duoda STM32F407VGT6, kitiems siūlo pirkt, bet pilna interneto platybėse tik žinok ko ieškai.  |
|
|
|
|
 |
 |
Arm_o pradžia: |
Parašytas: 2016 11 25, 12:21 |
|
|
|
Visai pamiršau, reiks asemblerinio startupinio failo bejo niekur, pvz startup_stm32f407xx.s atrodo, kad iš www.st.com puslapio paėmiau.
Jei jau viską turit galit pradėti projektą blinky, kad ledus pamirksėti. Susikraunat savo hederius į projektą, geriausia suskirstit į grupes palikau originalias.
Pasirašot main tuščia funkciją sukompiliuojat ir bandot užkrauti, turėtų nepasisekti.
Target Option nurodot kelius i hederius ir c failus, taip pat Debug išsirenkat ST-linkDebugger, o jo setinguose porta SW. Na prieš tai iš puslapio www.st.com reikia parsisiusti St-Link softą.
Kompiliuojant turetų mesti klaidas dėl fmc, tai šis procesorius neturi fmc pašalini iš projekto ir viskas, dabar jau pirmas užkrovimas pavyko valio  |
|
|
|
|
 |
 |
Arm_o pradžia: |
Parašytas: 2016 11 25, 12:59 |
|
|
|
Visa ką parašiau turėjo užtrukti apie 3 dienas, dar 3 dienas kelios kodo eilutės.
Kodas: |
#include "stm32f4xx.h"
int main ()
{
uint32_t i;
RCC -> AHB1ENR |= RCC_AHB1ENR_GPIODEN;// Ijungiamas taktavimas
GPIOD -> MODER = 0x55000000; //Ijungiamas output
GPIOD -> OTYPER = 0;//Pajungiama varza
GPIOD -> OSPEEDR =0;//Zemas greitis
while (1)
{
for (i=0; i<2000000; i++){}
GPIOD -> ODR =0x1000;
for (i=0; i<2000000; i++){}
GPIOD -> ODR =0x2000;
for (i=0; i<2000000; i++){}
GPIOD -> ODR =0x4000;
for (i=0; i<2000000; i++){}
GPIOD -> ODR =0x8000;
}
} |
Čia kodo gabalas naudojant Cmsis biblioteką, jei ją naudoti oi kaip toli progresas, nes pdf apie 1500 lapų ir ne vieno reikia dar ne gimtąja kalba.
Pagrindinis skirtumas tarp Pic AVR ši eilutė.
RCC -> AHB1ENR |= RCC_AHB1ENR_GPIODEN;// Ijungiamas taktavimas
Reikia įjungti taktavimą to įrenginio su kuriuo dirbsi Portas, Uartas, Spi ir t.t
Su Cmsis sunku dirbti, bet bejos blogai, pvz kojos krypties keitimas. Su Stdperiph formuot struktūrą inicializuot ir t.t.
Kodas ant discovery 4 veikiantis.
Ateitį teks vistiek prie jos gryžti..  |
|
|
|
|
 |
 |
Arm_o pradžia: |
Parašytas: 2016 11 25, 13:39 |
|
|
|
ARM IO ir vidine iranga atvaizduota i atminti, tad visas reikalas susizinoti Offsetus ir bitu strukturas, toliau belieka jomis manipuliuoti.
O kad IO pinus reikia teisingai priristi prie gelazies ir nurodyti taktavimo saltini - nei ten trukumas, nei ten labai sunku.
Didelis pasirinkimas ir tam tikros ju priklausomybes gali kuri laika trikdyti, bet tam ir yra CubeMX. |
|
|
|
|
 |
 |
Arm_o pradžia: |
Parašytas: 2016 11 25, 13:53 |
|
|
|
Dar pridedu kodo ta patį daro tik su Stdperiph biblioteka arba draiveriais kaip gamintojai vadina...
Kodas: |
#include "stm32f4xx.h"
int main ()
{
uint32_t i;
GPIO_InitTypeDef GPIO_InitGPIOD;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
GPIO_InitGPIOD.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
GPIO_InitGPIOD.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitGPIOD.GPIO_Speed= GPIO_Medium_Speed;
GPIO_InitGPIOD.GPIO_OType = GPIO_OType_PP;
GPIO_InitGPIOD.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOD, &GPIO_InitGPIOD);
while (1)
{
for (i=0; i<2000000; i++){}
GPIO_Write (GPIOD, 0x1000 );
for (i=0; i<2000000; i++){}
GPIO_Write (GPIOD, 0x2000 );
for (i=0; i<2000000; i++){}
GPIO_Write (GPIOD, 0x4000 );
for (i=0; i<2000000; i++){}
GPIO_Write (GPIOD, 0x8000 );
}
}
|
Dar vos nepamiršau teks paredaguoti failą stm32f4xx.h
nuimti komentarus nuo procesoriaus eilutes, nes pagal nutylėjimą duotas kitas.
Nuimti komentarą Cmsis bibliotekos leidimo.
Pakeisti kvarcinio rezonatoriaus dažnį į 8000000
Galit pradėti sutaupiau 5 dienas..  |
|
|
|
|
 |
 |
Arm_o pradžia: |
Parašytas: 2016 11 25, 14:12 |
|
|
|
Aš šia temą pradėjau vien dėl to, kad forume paklausė apie ARM pradžia, o elektronikos profai nuėjo į tokias diskusijas, kad autoriui turėjo plaukai piestu stotis.
Kai pdf 100 kartų pravertes tai jau žinai kur ieškoti, o kai pradedi skaitai apie gpio, o dar reikia rcc. Dokumentacijos pateikimo forma vis prastėja. O dar japonų aprašymai pradžioje atrodo, kad net logikos nėra.
4 metus nebuvau prisijungęs, buvo atsibodę, žiūriu miega elektronika reikia pajudinti...
Pirmyn prie ARMųųųųų...  |
|
|
|
|
 |
 |
Arm_o pradžia: |
Parašytas: 2016 11 25, 21:00 |
|
|
|
Kadangi pats dabar intensyviai "graužiu" ARM'us - projektus, kuriuos lig šiol gaminome AVR'ų pagrindu, pervedinėju į ARM - tai irgi šiek tiek pasidalinsiu savo patirtimi.
> Pradžioje reikia apsispresti, kokio gamintojo ARM naudosi
Ir kaip tam pradedančiajam apsispręsti, jei net vieno gamintojo pasiūloje sunku susigaudyti? O juk kalba eina ne vien apie mikrovaldiklius, bet ir apie jų dokumentaciją ir, bene svarbiausia, kokias įsisavinimo priemones įsigyti ir kokią programinę įrangą naudoti!
Tikrasis apsisprendimas ateis gerokai vėliau, kai jau bus pabandyti kelių gamintojų produktai. O mėgėjiško darbo su elektronika atveju, tokio apsisprendimo, ko gero, nebus niekada. Su kuo pradėsi, su tuo ir dirbsi. Per brangu yra prisipirkti skirtingų gamintojų "development board'ų", o gyvenimas per daug trumpas, kad jį "marinuoti", bandant perskaityti dešimtis tūkstančių lapų įvairiausių aprašymų.
Tai šiai dienai vienareikšmiškai: paprasčiausia/pigiausia yra pradėti darbą su STM32. "Firminės" Discovery ar Nucleo įsisavinimo plokštės nekainuoja nė 10 ir jokio JTAG nereikia pirkti, nes jau ant tos plokštės yra sumontuotas ST-Link'as, kurį galima naudoti ir savo sukurtų prietaisų programavimui/derinimui (debug'inimui). O jei net ir 10 atrodo per daug, tai už per pus mažesnę kainą eBay galima įsigyti
STM32F103C8T6 ARM Minimum System Development Board bei ST-Link kloną (jei įsitikinimai leidžia ).
>Reikės ARM, JTAG, softo, plokštės, matinimo šaltinio
Naudojant "firmines" įsisavinimo plokštes, šis sąrašiukas ženkliai sutrumpėja - nereikia JTAG, nereikia maitinimo šaltinio, nes plokštė gauna maitinimą iš USB. O jei įsigysite Nucleo tipo plokštę, tai net ir jokio "softo" kompe įdieginėti nereikės - galima naudoti "on line" programavimo aplinką mbed (daugiau apie ją čia). Beje, Nucleo plokštėms net ir programatorius nereikalingas (nors ant plokštės vis vien yra ST-Link) - prijungus ją prie USB, kompe atsiranda išorinis diskas, į kurį įrašius sukompiliuotą bin/elf failą, po perkrovimo, pati plokštė iš ten pasiima valdančią programą. Mbed turėtų patikti Arduino mėgėjams - programuoti galima supaprastinta kalba, tai išmokti pamirkėsti LED su Nucleo prireiks tik kelių minučių* (yra papildomų sąlygų ).
Nemanau, jog STM32 atveju Keil yra geriausias pasirinkimas. Beje, STM32F0/L0 serijos mikrovaldikliams kodo ribojimas yra 256K, o ne 32K, kas yra ženkliai daugiau negu pakanka. Aš siūlyčiau naudoti System Workbench for STM32. Tai visiškai nemokama aplinka, Eclipse pagrindu, neturinti jokių apribojimų ir puikiai integruota su STM32CubeMX
O dėl to, kokias bibliotekas naudoti, aš siūlyčiau pradėti nuo HAL. Prie CubeMX yra pridėtas visas "kalnas" pavyzdžių. Tai pamirksėti LED ar parašyti visai išbaigtą projektėlį, įmanoma nė "neužmetus akies" į mikrovaldiklio aprašymą * (čia taip pat yra papildomų sąlygų ) ir tuo labiau "nesirausiant" nei CMSIS, nei Stdperiph bibliotekose. Beje, kad STM32 programuoti būtų "linksmiau", STM'as dar vieną biblioteką pradėjo kurti - LL. Tai greičiau makrosų, o ne paprogramių rinkinys, skirtas smarkiai pažengusiems vartotojams, kurių netenkina HAL struktūrų našumas. Kaip atrodo programos kodas, naudojant LL, galite pamatyti prie CubeMX pavyzdžių, pateiktų įsisavinimo plokštei STM32F072RB-Nucleo. Kompe tie pavyzdžiai yra sudėti pvz. štai čia:
C:\Users\%vartotojo_vardas%\STM32Cube\Repository\STM32Cube_FW_F0_V1.7.0\Projects\STM32F072RB-Nucleo\Examples_LL
Dėka HAL (ir prieš tai atsiradusios Stdperiph) ši frazė:
AlgisL rašo: |
ARM IO ir vidine iranga atvaizduota i atminti, tad visas reikalas susizinoti Offsetus ir bitu strukturas, toliau belieka jomis manipuliuoti. |
dabar jau visiškai neaktuali.
O kai jau pajusite, kad "pagavote kampą" ir norėsite "ant savo kailio išbandyti" visą ARM "žavesį", be jokios abejonės teks ir mikrovaldiklio aprašymus skaityti (tiksliau net ne mikrovaldiklio, bet Reference manual, pvz. RM0360), ir Stdperiph, bei CMSIS pastudijuoti.
Beje, "nulipę" nuo AVR, greičiausiai pasigesite EEPROM. Toks daiktas yra tik STM32L serijoje. Ir tos serijos mikrovaldikliai yra santykinai brangesni, tai išeitis - statyti išorinį EEPROM (pvz. M24C04 kelis eurocentus tekainuoja) arba naudoti EEPROM emuliavimą, rašant į laisvą Flash atmintį. Iš STM'o galima parsisiųsti tokios emuliatoriaus programos pavyzdį, pilnai tinkamą praktiniam naudojimui, parašytą su Stdperiph. O jei kam reikia HAL, parašykite man A.Ž., pasidalinsiu savo versija.
Ir dar, jei diegsite System Workbench for STM32 64 bitų kompe, tai Java pasirinkite 32 bitų sistemai, nes kitaip neveiks "debug'igimas" per OpenOCD, kadangi System Workbench yra skirtas 32 bitų sistemoms. O jei dėl kokių nors priežasčių reikalinga 64 bitų Java (pvz. turite kažkokią kitą Eclipse aplinką, kuriai reikia 64 bitų) tai tuomet reikia daryti taip:
iš http://www.freddiechopin.info/en/download/category/4-openocd parsisiųsti OpenOCD 0.9.0 (o jei esate pakankamai drąsūs tai openocd-0.10.0-dev) ir pakeisti atitinkamus failus savo kompe. Pvz. pas mane jie yra padėti štai čia:
C:\Ac6\SystemWorkbench\plugins\fr.ac6.mcu.externaltools.openocd.win32_1.10.0.201607261143\tools\openocd\bin
Linkiu smagiai pasi'ARM'minti  |
|
|
|
|
 |
 |
Arm_o pradžia: |
Parašytas: 2016 11 26, 09:49 |
|
|
|
sveiki, kaip atjungti kai kuriuos STD Periph driver, pvz nenoriu naudoti kokio SPI ar CAN ir pan., tai ar imanoma juos per kokius nustatymus isjungti, kad kompiliuojant ju nekompiliuotu, ar istrinti is driver katalogu? p.s. to nebandziau. naudoju System Workbench for STM32 |
|
_________________ Skype: dmb-220 |
|
|
|
 |
Arm_o pradžia: |
Parašytas: 2016 11 26, 11:29 |
|
|
|
Projektų direktorijoj palik, ištrini iš prikabintų sąrašo. Tik kam to reikia, jie netrukdo jei kompiliuojasi į kodą neina. |
|
|
|
|
 |
Arm_o pradžia: |
Parašytas: 2016 11 26, 20:09 |
|
|
|
EEPROM emuliacija per FLASH turi siokius tokius niuansus:
1) irasymas i lastele trunka gerokai ilgiau, o kartais reikia daryti sektoriaus kopija i ram, pakeisti lastele, trinti sektoriu ir ji visa irasyti atgal, be to dar ir FLASH resursas 10..20 greiciau susieda...
2) nuskaitymas trunka zymiai greiciau nei is EEPROM, kas yra labai naudingas bonusas.
3) ARM su FRAM jau po truputi pinga, o tai yra super cool. |
|
|
|
|
 |
Arm_o pradžia: |
Parašytas: 2016 12 03, 10:55 |
|
|
|
Norėdami naudoti pertraukimus turite pasirašyti funkciją, kurios pavadinimas turi sutapt su vienu iš pavadinimu nurodytų asembleriniame startup faile. Jei naudosite ne pagrindiniam faile neužmirškit prefikso extern "C"...  |
|
|
|
|
 |
Arm_o pradžia: |
Parašytas: 2016 12 28, 20:18 |
|
|
|
Jauciu, kad jau ateina tas metas, kada verta daryti "Embedderiu" mokymus  |
|
|
|
|
|
 |
Google paieška forume |
|
 |
Naujos temos forume |
|
 |
FS25 Tractors
Farming Simulator 25 Mods,
FS25 Maps,
FS25 Trucks |
 |
ETS2 Mods
ETS2 Trucks,
ETS2 Bus,
Euro Truck Simulator 2 Mods
|
 |
FS22 Tractors
Farming Simulator 22 Mods,
FS22 Maps,
FS25 Mods |
 |
VAT calculator
VAT number check,
What is VAT,
How much is VAT |
 |
LEGO
Mänguköök,
mudelautod,
nukuvanker |
 |
FS25 Mods
FS25 Harvesters,
FS25 Tractors Mods,
FS25 Maps Mods |
 |
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija |
 |
FS25 Mods
FS25 Maps,
FS25 Cheats,
FS25 Install Mods |
 |
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps |
 |
ATS Trailers
American Truck Simulator Mods,
ATS Trucks,
ATS Maps |
 |
Football Training Kit
Football Training Equipment,
Football Skills,
Football Training |
|

|
 |