ARM35: LCD ir FSMC

May 2nd, 2022

Trumpa priešistorė: prisirinkom kažkokių PCB su STM32F103 mikroschemos ir nežinomu LCD. LCD buvo dviejų tipų, o pačios PCB irgi keletos variantų. Kai kurios su kitu STM32 BGA čipu ir ROM/RAM mikroschemom. Dar kitos PCB beveik tuščios ar pažeistos. Užtat visos turi mėlyną dantį ir visokias smulkmes.
Visokius kištukus gana lengvai išaiškinom (gerai, kad ne visos PCB padengtos laku), kai kurie primityvai kaip LCD pasvietimas (ar dar kieno) eina per tranzistorius, tai irgi lengvai atsibūrė. Bet liko LCD. LCD tikrai dviejų tipų- mažesnis, išjungtas juodas ir didesnis, baltas. Abu ekranai grafiniai, nes yra originali firmwarė, kur parašo kad “atnaujink softą". Pirminis softas lygtai ir universalus abiem plokštėm ir jame aptikom, kad plokštės iš Husqvarnos automatinių žoliapjovių.
Deja informacijos apie LCD ekranus ar kontrolerius nebuvo visiškai. Todėl ėmiau iš eilės visokius LCD ekranus su panašiu kiekiu pinų ir bandžiau… Pagal įtampas, pagal originalios firmwarės siunčiamus signalus atrinkau, kur maždaug duomenys, kur WR ar panašūs signalai.
Mažesnis LCD labai panašu į ST7565 ir ten viskas maždaug buvo aišku. Didelis LCD visiškai neaiškus.
Dar pasirodė labai keista, kodėl pasirinktas toks keistas pajungimas prie MCU:

PD0=D2
PD1=D3
PD4=RD
PD5=WR
PD7=CS1
PD14=D0
PD15=D1
PE3=A0
PE7=D4
PE8=D5
PE9=D6
PE10=D7

Tačiau pernelyg nesivarginau. Nes svarbiau buvo LCD. Su didesniu LCD buvo bėdos- labai panašus LCD yra UltraChip serijos kontroleriai kaip UC1610 ar UC1611. Tačiau komandos nevisos veikia. Bėda tame, kad daug komandų bendros visos serijos čipams (ar net kito gamintojo čipams), kitos komandos ignoruojamos ar panašiai. Ir dar nustebino pačio LCD ekrano pilkumo atspalvių bitų seka. Net vienu metu kilo mintis, kad ten spalvoto ekrano kontroleris pritvirtintas prie juodai-balto LCD ekrano. Dar kilo mintis, kad neteisingai nurašiau pinoutą (tikrai ne, žr. toliau).
Bežaidžiant su bitais, buvo kaip ir parašytas šioks toks softas ekrano valdymui. Tačiau norint paišyti vaizdą ant ekrano pagal pikselius, reikia nuskaityti informaciją iš ekrano. Tai galima padaryti ir “bit bang" režimu ir su STM32F103 tai vyksta gana greitai. Bet vistiek viskas labai kvaila. Buvo pasiskaitytos instrukcijos, paguglinta ir pasinagrinėtas STMkubikas ir pasirodo man nežinomas FSMC režimas, kur kaikurios MCU kojos pavirsta DATA, ADR ir kontroliniais (WE, CS ir pan) signalais. Tada skaitymas iš LCD ar rašymas į LCD (ar į kokį SRAM) pavirsta paprasta operacija- “rašymas ir skaitymas iš RAM":

*(__IO unsigned char *)(LCD_DAT_ADDR)=d;
d=*(__IO unsigned char *)(LCD_DAT_ADDR);

Ir mūsų LCD būtent ir pajungtas kaip FSMC įrenginys (dėl to ir toks keistas LCD pinouto pajungimas).
Tačiau net dvi dienas man niekas neveikė. Nes dokumentacijoje gana miglotai parašyta ir iš pirmo žvilgsnio viskas labai nelogiška. Bėda susijusi su duomenų šynos pločių ir adresu. LCD ekrano A0 pinas, kuris atskiria duomenis nuo komandų prikabintas prie A19 pino. Šio pino lygį turi reguliuoti adresu bitai:

//Musu LCD A0 pajungtas prie A19 pino.
#define LCD_CMD_ADDR 0×60000000
#define LCD_DAT_ADDR 0×60080000

Tačiau niekas neveikė. Pasirodo, mano pavyzdiniam softe buvo ne “unsigned char", o “unsigned int" (aka uint16). Kituose pavyzdžiuose net 32 bitų kintamasis. Ir dar baisiau- net keletas straipsnių rašė, kad jei naudojam 16 bitų nuskaitymą, adresas pasislenka per vieną bitą, jei 32 bitus, per du bitus. Tačiau ir tai nepadėjo, nes mano pagrindinė klaida buvo tokia, kad nuskaičius 16 bitų iš 8 pin porto, maniau, kad mažesnieji bitai turės reikalingą informaciją. Pasirodo, kad ne. Kiek suprantu, STM čipas hardwariniam lygyje prisiderina prie “bus width" ir dar net kelis nuskaitymus ar rašymus. O jei sukonfiguruota nelogiškai, viskas ir nelogiškai veikia.
Todėl, jei reikia nuskaityti BAITĄ iš 8 laidų šynos, tai reikia C kalboje ir skaityti BAITĄ. Dar nesu tikras ar skaitant WORD iš BYTE nedaromas dvigubas nuskaitymas. Šitą reikia dar patikrinti, nes LCD ekranos softas dar kiek optimizuotusi. O dėl adreso, čia man irgi kiek neaišku, bet baitų, wordų ir longwordų adresai yra atitinkamai pasislinkę, jei norime juos nuskaityti. Pas ARM gal nėra tos bėdos kur yra pas MC68000, kur negalima skaityti pabaičiui ar panašiai iš nelyginių adresų…
Labai daug ir neaiškiai parašiau, bet čia mano “brain dump" ir ši informacija skirta man prisiminti, kaip pajungti FSMC režimą pas STM32F103. Ką dar gero duoda tas FSMC? Ogi DMA.

Kad straipsnis gautusi indomesnis, va fotkė:
LCD

Tai tas didysis ekranas, deja neįjungtas pašvietimas. Naudojamas keistokas “klasikinis" TI99 šriftas kuris gal netinkamas šiam ekranui.

Ir net trys variantai source code su viskuo: mažas ekranas bitbang, didelis ekranas bitbang ir didelis ekranas FSMC:
Husqvarna LCD ir STM32F103 FSMC.

Visas source tikrai neaptvarkyti, yra labai daug eksperimentavimo ir “reverse engineering" likučių.

Purple pill arba biruolių plokštė

April 23rd, 2022

Pamenat, rašiau apie biruolius. Apie kalną STM32F103VBT čipų su kiek palenktom kojom? Tai va, pasidariau eksperimentinę plokštę. Išvedžiau VISAS kojas į 0.1″ kištukus. Dar biški RS485/CAN prielipų pripaišiau tuščioje vietoje.

Purple pill STM32F103VBT
Tikrai sunku prilituoti mikroshemą, kai kojos biški palankstytos. Bet va iš antro karto lygtai ir gavosi. Diagnostinis softas rodo, kad per visas kojytes eina signalai ir trumpų jungimų nėra. Aišku minimalus kiekis detalių ir maitinimas iš “serial debug" lizdo.
Beja, jei netyčia užblokuosit tą “serial wire", tai nedidelė bėda, užtrumpinat “Reset", pradeda programuoti ir atjungiat “Reset".

Užrašai “AL", “AH", “EL" ir panašiai, tai pinų grupės. Pvz. AL - PA(0-7), “low" dalis. AH tai PA(8-15) ir t.t.

Visi failai:
Diagnostine firmwarė - source code, STM32Cube failas, kompiliuotas HEX.
Gerberiai - Standartiniai gerberiai, jei staiga užeis noras užsisakyti PCB.
Schema - Šios plokštės schema. Gana negražiai nupaišyta (pdf).
PCB iliustracijos - Šios plokštės PCB vaizdai (pdf).
BOM.

Dėmesio, PCB, bottom pusėje jumperis SJ1 yra jau užtrumpintas į GND. T.y. BOOT0=GND. Jei reikia kitos reikšmės, reikia nupjauti pačiam jumperyje esantį takelį ir prilituoti atitinkamą rezistorių.

Visko po biški

April 16th, 2022

Nėra jokių įdomių projektų, tai bus nedidelė galerija ir bambesiai.

Jau ne kartą bambėjau apie tai:
junk
Kažkoks industrinis “čileris". Rodos jau stipriai įžengėm į 21 amžių, bet industriniai kontroleriai pribaigia savo tupizmu. Ką norėjo pasakyti šiuo pranešimu? Ogi, “generic alarm number 1″, nuo kurio viskas užblokuojama. “no" reiškia, kad aliarmas nerezetuojamas. Kas sukelia šį aliarmą? Ogi nesvarbu. Taip suprograminta.
Išsiaiškinau iki galo ir paaiškinsiu jums visą pizdėcą. Iškarto sakau, nepirkit prietaisų iš Italų.
Yra nedidelė indukcinė krosnis ir prie jos vandens šaldytuvas. Jis užpildytas ne vandeniu, bet antifryzu, nes Lietuvoje būna žiema. Jei sistema įjungta non stop, viskas buvo gerai. Bet kurį laiką nereikėjo krosnies ir kad taupyti elektrą, viskas buvo išjungta. Įjungus- klaida ir niekas neveikia. Pasirodo, debilai Italai (jie buvo įspėti dėl Lietuvos sąlygų ir antifryzo), tai suprogramino sistemą, kad jei temperatūra žemiau 10 šilumos, suveikia aliarmas (tipo išpilkit vandenį, nes netikėta žiema Palerme) ir užblokuoja cirkuliacinį siurblį (ir čilerį). Lydimo krosnis nemato cirkuliacijos ir neįsijungia. Lygiai taip pat, pats čileris, kuris turi pašildymo sistemą, nejungia jos, nes cirkuliacija užblokuota. Vienintelė išeitis- laukti pavasario, kol antifryzas pakils iki kokių 12 laipsnių. Tada viskas veiks. Jei būtų cirkuliacija, lydimo krosnis per minutę sušildytu sistemą. O jei neišjungi sistemos, tai pats čileris pašildo vandenį (antifryza). Ir aišku visur uždėti slaptažodžiai ir pats kontroleris debilnas. Kol kas nepavyko ji perprogramuoti, liko tik “tarybinis hack"- pajungti rubylnyką, kuris overraidins cirkuliacinį siurblį. ble.

junk
Čia matot molinį tiglį, kuris va taip ištirpo. Ir žinokit, čia kaltas vėl… industrinis kontroleris. Šį karta, Omron E5CC. Kaip? Kodėl? Ogi mufelinės krosnelės kaitinimo elementas parėjo ir krosnelė nepasiekė nustatytos 1150°C temperatūros. Nors ir buvo nustatytas laikas, kažkotai nesuveikė, ir krosnelė visą savaitgalį bandė pasiekti tą temperatūrą. Todėl vietoje poros valandų technologinio proceso buvo daroma 70 valandų tūpo kaitinimo. Ir ištirpo ble viskas, visi tigliai, visa krosnelė, visi kaitinimo elementai ir Pt/PtRh termopora.

Atsimenat tokią šventę, “dzingl bials" kur dainuoja?
girliandos - ekologinis siaubas
Atspėkit, kur keliauja visos tos kiniškos girliandos po švenčių? Ogi į šiukšlyną. Jos tikrai veikiančios, kelias randomines pakėliau, įjungiau ir jos šviečia. Taigi, kai vėl bus žiema ir jus esate ekologas-hipsteris, tai turit susimąstyti.

Kitas kinijos pasiekimas:
turbo fenas
Tai kažkokio brangaus plaukų feno turbo ventiliatoriukas. Tikrai įdomi konstrukcija- “on board" AC/DC/AC 3 fazės keitiklis, feno motoriukas sukasi ant pasiutuliško greičio. Bet bėda, fenas kaista tai pirma, o antra, kad sukasi ant daug daug apsukų. Todėl užtenka stuktelti karštą ir veikiantį feną stipriau į stalą ir dėl suminkštėjusios plastmasės turbinėlė atsitrenkia į korpusą. Arba vien tik dėl per stipriai įtempto laidelio jis nutrunka. Čia tikrai plonas laidelis, nes motoriukas kažkodėl aukštavoltis. Ir konstrukcija tokia, kad motoriukas neardomas nuo žodžio visiškai.

Ir, kad pamažinti bambesių lygį:
CPU ne BGA, o CCGA
Daug kas susidūrė su BGA (rutuliukų tinklelio) čipais ir jie mus visus užknisa, bet va yra toks CCGA (Ceramic Column Grid Array), kur sujungimas stulpeliais. Va šitas tai visiškas pizdėcas ir nesąmonė. Gerai, kad tai tik IBM iškrypimas. Kam to reikia? Ogi, kad išvengti termo mechaninio streso. Jei paimti delno dydžio mikroschemą (ypač ant keraminio pagrindo, kur ji turbo karšta) ir prilituoti prie standartinės PCB, tai kai čipas pakais, tai nuraus visus rutuliukus. O “stulpeliai" leidžia deformuotis. Manot čia didžiausias iškrypimas, pasirodo, yra ir “spyruoklinių" pinų, bet juos mėgsta tik visokios NASA.

Čipų sakot trūkumas?

March 25th, 2022

Vienas geras žmogus pranešė, kad atvežė biruolių. Bet kažkaip nebuvo laiko- darbai prispaudė. Po kelių dienų nuėjau ir pamačiau likučius….

stm32f103
Net širdelę užspaudė…

stm32f103
STM32F103VBT6: Medium-density performance line ARM ® -based 32-bit MCU with 128 KB Flash, USB, CAN, 7 timers, 2 ADCs, 9 com. interfaces. 20KB RAM.

Čia biruoliai, matosi, kad kojelės biški kreivos. Dabar reikia projektuoti universalią PCB. Jei kam reikia, galiu semtelėti. Tikiuosi geri ir nepadirbti.

Keista lemputė

March 19th, 2022

Papuolė į rankas keistoka lemputė:
lempa
Tik du kontaktai. Pagal dizainą- panašu į foto ar kokių nors dalelių detektorių.

lempa
Padavus kokius 4kVDC lemputės viduje vyksta išlydis. Vadinasi darbinė įtampa mažesnė.

lempa
Užrašai nieko nesako, greičiausiai arba serijiniai numeriai, arba koks nors partijos numeris ar gamybos data.

lempa
Pati lemputė buvo sujungta su koaksaline jungtim, ir ten kur balta, ten “savadarbis" mylar kondensatorius tarp kontaktų. Ganėtinai keista, nes didesnės srovės lemputės elektroduose išmusė dėmės- padengimas bijo išlydžių.

Jei kas čiupino panašias, gal pasidalinkit savo mintim.

Epochinis kiemo įvykis

March 5th, 2022

Išvažiuoji biški į fazendą, o kai parsirandi namie, pastebi kraštovaizdžio pokyčius. Neveltui tie įtartini diedai sukosi aplinkui. Kodėl šeštadienį?
stulpo nebera Kaune

Tai buvo “stalino vargonų" arba trukdymo stoties (Objekto Nr. 603) viena iš išlikusių antenų. Ji jau kurį laiką buvo nenaudojama, nes mobiliakų technologijos pasikeitė, o toks brangus žemės lopinėlis Kauno “turčių" rajone tikrai viliojo visokius biznierius. Nors žemės sklypai buvo “išdalinti nusipelniusiems žmonėms" dar prieš daugybę metų, mano nuomone čia buvo padaryta klaida. Žemes aišku “garbingi žmonės" pardavė ir kai neliko stulpo tuoj pavarys daugiabučių rajonuką.
Geriau čia buvo įrengti parką- juolab, kad čia išliko gražūs ąžuolai su žemom ir plačiom šakom- gi teritorija išbuvo daugybę metų be žmonių veiklos. Čia buvo prūdas, gyveno antys, medžiuose veisėsi pelėdos… Sklypas buvo unikalus, nes jo nereikėjo niekam grąžinti, nei palikuoniams, nei šventiems žydų kaulams. Tiesiog gabalas valstybinės žemės. Deja, bizniukas buvo prasuktas seniai.

stulpo nebera Kaune
Kai kas atsisuko, kai ką reikėjo nupjauti su “bulgarke", kai ką ir nuautogeninti. Pradžioje pašalino visus varžtus, ir jų vietoje susuko naujus. O po to kažkaip techniškai nuvertė. Deja nemačiau.

stulpo nebera Kaune
Paguldė stulpą “cielą". Pirmąjį tai griovė per du etapus. Matyt buvo laisvo ploto.

stulpo nebera Kaune
Liko dar du. Ar TV stulpą griaus aš nežinau, bet tas kitas tikrai bus nugriautas. Nes vietoje šio gamtos lopinėlio reikės įrengti kelis daugiaaukščius ir aišku daug automobilio stovėjimo aikštelių.

Pačiau apie stotį galima pasiskaityti tik interneto archyve… https://web.archive.org/web/20180106071203/http://www.radiojamming.info/

Trukdžių stotis buvo iš trijų bokštų ir tarp jų buvo antenos (ВГДШ). Kartais antenų laidai nutrūkdavo ir taip rimtai kibirkščiuodavo. Tada nuo impulsų net Majakas negrodavo. Elektrinis laukas buvo stiprus, paprastas testerio voltmetras rodydavo įtampa tarp geležinės tvoros segmentų. Mano pirmieji elektronikos eksperimentai (radijo imtuvų konstravimas) visada baigdavosi fiasko, nes tiesioginio stiprinimo radijo imtuvas priimdavo tik šalia transliuojama Majaką. Viena karta girdėjau Majaką net per nepajungta garso kolonėlę. Tai tik įrodo, kad 5G man nebaisu.
Kiek įdomesnis buvo fyderis, kuris ėjo gal kokių 2 ar 3 metrų aukštyje- keli laidai and kokiu 30cm ilgio izoliatorių. Vienas izoliatorius dar turėtų kabėti mano kieme po gebene. Kažkaip aš instinktyviai prie jo nesiartindavau, kai šliaužiodavau po tą uždraustą teritoriją.

Softas Vanta XRF grafikams

February 28th, 2022

Jau kelis metus Olympusas negali padaryti normalaus softo. Net elementariausios klaidos dar nepataisytos, o jau dėl grafikų tai išviso neklausk. O dirbant kartais reikia palyginti visą XRF spektrą- pvz palyginti medžiagos “fingerprint". Ne tik palyginti, bet ir pažymėti svarbesnes zonas, uždėti markerius. Ir aišku, gražiai atspausdinti ar eksportuoti į pdf failą.
Visas softas parašytas per kokius penkis vakarus ir grynai “for fun". Kartu kiek daugiau išmokau apie .NET galimybes.

Kad naudotis programa, reikia kaip nors išeksportuoti XRF spektrą į CSV failą. Tai irgi ne iškarto pavyksta, bet galima nugalėti Olympuso kvailystes ir šiaip ne tai ištraukti duomenis. Toliau reikia pašalinti pirmas 40 eilučių ir pirmą stulpelį (gal vėliau padarysiu automatinį importą).

Darbinis pavyzdys, trys medžiagos, labai panašios. “Standartinis" grafikas, matomas originaliam softe atrodo maždaug taip:
XRF
Read the rest of this entry »

PCIe linijų trūkumas?

February 16th, 2022

Jau rašiau, kad naudoju daug mažų diskelių. Kartu su dar likusiais dideliais diskais gaunasi 10 diskų. Ir visada norėjau naudoti kokį nors prabangų RAID kontrolerį. Tačiau kiek kišau kontrolerių į lyšną PCIe (x8) slotą, nei vienas neveikė, kompas net į BIOSą neužsikurdavo:
x8 (x16) PCIe
Tai fizinis x16 lizdas, tik jame elektriškai išvesta x8. Taip dažniausiai būna buitiniuose kompuose- pirmas ilgas, video plokštei, x16, o antras tik x8.
Read the rest of this entry »

Proto mankšta: SVG kalbos interpretatorius

February 12th, 2022

Viskas prasideda nuo mažos nesamonės: nutariau ant vieno 3D spausdinto gaminio padaryti USB jungties logotipą. Kokio nors STL failo greitai nusikrauti niekur neradau (for free arba download be registracijos). Tada sau galvoju- nu yra gi SVG iliustracija, ten gi grynas vektorius, tereikia jį tik “ištempti" į viršų (extrude) ir viskas bus čiki.

Ir tada pradidėjo… Mano 3D printeriavimo ir modeliavimo programa tokių failų nepriima. Gerai, ji netobula ir ne tam skirta. Online konverteris kažko irgi neveikia:
Defektuotas STL
Matom kaip nukando gabaliuką nuo kvadratėlio.
Read the rest of this entry »

XRF remontas arba kam taip daryti!?

February 9th, 2022

Toliau sirguliuojant (simptomai sako, kad korona, o PGR sako, kad ne) pačiupinau toliau seną XRF. Veikimo principą jau kiek paaiškinau. Ir rašiau, kad “juodas pelekas" nebando skaityti firmwaro iš SPI ROMo. Tačiau osciliatorius savo 16MHz išduoda. Pradedam nagrinėtis schemą:
XRF PCB
Read the rest of this entry »

Unhappy Tikbalang