STM32 har allt - Utom trådlöshet

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
DanielM
Inlägg: 2194
Blev medlem: 5 september 2019, 14:19:58

Re: STM32 har allt - Utom trådlöshet

Inlägg av DanielM »

Ja. Men det låter bra det! Den komplexibiliteten gör säkert nytta! :wink: :tumupp:

OAuth är en tjänst. Alla stora företag som riktar in sig mot globala kunder använder OAuth. Vet flera företag som håller på med loggning bland annat tyska Hydac(konkurrent till Bosch) börjar nu använda Particle.
Även Bosch använder Particle. Particle är byggt på Arduino, där man loggar till en databas. För att komma in på databasen så loggar man in med sitt godkända konto som verifieras med OAuth-tjänsten.
https://www.particle.io/
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45304
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: STM32 har allt - Utom trådlöshet

Inlägg av TomasL »

Det har inte med saken att göra.
Front-siden på ÖS-systemen är normalt tillgängliga via nätet, dock naturligtvis måste du ha ett användarnamn och lösenord till det, det handlar om de underliggande näten, dvs näten inom huset som binder ihop funktionerna, där vill man inte ha Ethernet.
Så javisst flashiga sidor i din pryl är alltid kul på mässor osv, men i praktiken så vill man inte ha det.
DanielM
Inlägg: 2194
Blev medlem: 5 september 2019, 14:19:58

Re: STM32 har allt - Utom trådlöshet

Inlägg av DanielM »

Jag har aldrig utvecklat en webbapplikation på ett 1Mb flash system. Hoppas man kan iallafall lägga upp lite HTML-kod, kanske lite inlogg också.
Målet är att man ska ha lite grundläggande konfigueringar t.ex. knapp, lista, textfält, en rolig graf osv.

Sedan kommunikation också med en server. Här skulle säkert Modbus-TCP passa utmärkt!
Jag planerar att implementera detta i mitt Spring-Boot system hemma: http://easymodbustcp.net/en/
Användarvisningsbild
maDa
Inlägg: 4076
Blev medlem: 11 november 2005, 22:13:16
Ort: Malmö
Kontakt:

Re: STM32 har allt - Utom trådlöshet

Inlägg av maDa »

OAuth (eller annan moln-baserad SAML) kräver Internet-anslutning så det går givetvis helt bort inom industriella inbyggda system.
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Re: STM32 har allt - Utom trådlöshet

Inlägg av Rick81 »

Dock har jag inte skrivit koden helt själv, utan med hjälp av en person här på forumet
Visste väl att TomasL och DanielM jobbar tillsammans! :D
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45304
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: STM32 har allt - Utom trådlöshet

Inlägg av TomasL »

Nja, han är nog lite äldre, lite visare och lite kunnigare än DanielM.
davidi
Inlägg: 577
Blev medlem: 13 oktober 2011, 16:45:38
Ort: Ekerö

Re: STM32 har allt - Utom trådlöshet

Inlägg av davidi »

DanielM skrev: 25 januari 2021, 23:13:00
Något som du skulle säkert gilla är: https://en.wikipedia.org/wiki/OAuth om du vill ha säkerhet. Jag har testat OAuth och det är helt underbart. Jag behöver inte hålla på med lösenord och därmed ej känna något ansvar om att bli hackad.
Varför i hela världen blandar du in OAuth i en diskussion om mikrocontrollers? Att du dessutom ser OAuth som synonym till säkerhet gör mig mörkrädd.
DanielM
Inlägg: 2194
Blev medlem: 5 september 2019, 14:19:58

Re: STM32 har allt - Utom trådlöshet

Inlägg av DanielM »

Klas-Kenny skrev: 24 januari 2021, 14:56:13
DanielM skrev: 24 januari 2021, 12:18:54 En nyfiken fråga! När ni jobbar som systemutvecklare, använder ni er av GitHub, Youtube, Google eller färdiga exemplarer?
Eller tittar ni direkt i datablandet och sedan knackar C kod som det vore bara ettor och nollor?

Jag måste alltid titta på vad andra gör, sedan modifiera efter mina behov.
Jag skulle aldrig kunna utveckla något eget från grunden.

GitHub: Det förekommer.
Youtube: I princip aldrig.
Google: Ständigt
Färdiga exempel: Ibland (Exempelvis kan man ju hitta sådant på Github)
Datablad och knacka kod: I princip alltid. Även om man hittar ett lib, så behöver man i regel dubbelkolla saker i databladet osv.

Det beror helt på vad som finns, man väljer ju den mest passande vägen för att lösa varje problem.
Om man hittar något färdigt mjukvarubibliotek som löser uppgiften, och passar bra i övrigt, är det såklart lämpligt att använda det. Men de flesta gånger är inte detta fallet. Antingen finns inget bibliotek, eller så är det stort och klumpigt, eller så fungerar det dåligt eller passar dåligt in i mitt projekt, eller något helt annat.
Då är databladet i regel den huvudsakliga källan till information, så skriver man sin egen kod för att styra hårdvaran till det man vill.

Sen tenderar man springa på allehanda problem på vägen, då blir det i princip alltid Google. Men man hittar ju inga fullständiga systemlösningar på Google, utan bara (ofta) lösningar på väldigt specifika problem som kan finnas i många tillämpningar.
DanielM skrev: 24 januari 2021, 13:26:22 Låt oss säga att jag vill återgå till det där ethernet-chippet jag pratade om.

Utan att förstå hur chippet fungerar, så börjar jag alltid med inkopplingen. Men det kanske är här jag styper. Jag vet inte hur chippet fungerar, och därmed kan jag inte använda det?
Förstå hur det fungerar kan ju ha väldigt olika innebörd.
Man får ju ta ett problem i taget. Till att börja med måste man förstå övergripande vad komponenten gör för någonting, för att ha en aning om vad man gör. Sen måste man förstå de *interface* som komponenten tillhandahåller. Till att börja med då rent elektriskt.
Och om sådant finns, kan man kolla på lite exempelapplikationer. Dels i komponentens dokumentation, och dels i processorns dokumentation. Så kan man oftast få ihop det mesta. De detaljer som är otydliga eller kanske skiljer mellan processor och PHY i detta fall, får man förkovra sig lite i för att förstå och bestämma vilket som fungerar bäst i just ditt fall.

När man fått ihop hårdvaran kommer nästa del att förstå, det är mjukvaran.
Då får man antingen hitta ett färdigt lib som gör en stor del av uppgiften, då kanske det räcker att kolla vissa småsaker i databladet för att göra eventuella justeringar i libbet eller hur man initierar libbet. Eller så får man djupdyka i dokumentation och skriva allt ifrån grunden (eller en kombination av de båda).
Man måste ju alltid ha 100% koll på hur varje detalj fungerar, men lite övergripande koll på de olika interfacen är viktigt. Och än mindre behöver man veta hur sakerna fungerar *innan* man börjar jobba med dem. Det man inte vet får man ta reda på när det behövs.
Nu har jag gjort en liten introduktion till projektet mitt.
screenshot.jpg
Till att börja med så har jag använt en STM32F407 och en DP83848I för att få till en ethernet phy.
Jag började med att kolla avlastningskondensatorerna i databladet för F407.
Här har jag valt att använda:
  • 15 stycken 100nF keramik mellan VDD och VSS
  • 1 styck 4.7uF keramik mellan VDD och VSS
  • 2 styck 2.2uF keramik mellan VCAP_x och VSS, där x = 1, 2
  • 1 styck 100nF keramik mellan VDDA och VSSA
  • 1 styck 1uF keramik mellan VDDA och VSSA
  • 1 styck 100nF keramik mellan VREF+ och VSSA
  • 1 styck 1uF keramik mellan VREF+ och VSSA
  • Koppla VREF+ till VDD för att använda VDD som referens
  • F407 LQFP100 har inte BYPASS_REG
screenshot_1.jpg
Jag har valt denna uppställning för återställningen.
screenshot_2.jpg
Som BOOT0 pinne så har jag valt 10 kOhms motstånd som pull-down, där en 2.54mm pinne kan jag applicera hög signal på (3.3v) om jag vill göra något med bootloadern. Troligtvis inte!
screenshot_3.jpg
Nu kommer det till det roliga! Kristallen. Jag har valt en extern kristall på 4 Mhz.
Valet av kristallen så har jag räknat fram på dessa formler:

Kod: Markera allt

% This follows the document AN2867
ESR = 130; % Crystall resistance
C0 = 7; % Shunt
CL = 12; % Crystall load capacitance
Cs = 5; % Capacitance between the board
F = 4; % Crystall frequency
Gm = 5; % Minimum gain for F4 

% Gmcrit need to be less than 1 for a F4 according to the data sheet
Gmcrit = (4*ESR*(2*pi*F*10^6)^2*(C0*10^(-12) + CL*10^(-12))^2*1000) % mA/V
% Gmargin need to be over 5 according to 
Gmargin = Gm/Gmcrit
% Find the capacitors for the crystal
X = 2*(CL-Cs)
% External load
R = 1/(2*pi*F*10^6*X*10^(-12))
% Final check with the external load
Gm > (4*(ESR+R)*(2*pi*F*10^6)^2*(C0*10^(-12) + CL*10^(-12))^2*1000)
screenshot_4.jpg
Orsaken varför jag valde en 4 Mhz kristall har med att man måste ha en Gmargin som är högre än 5. Jag vet dock inte varför. I detta fall så var mitt Gm = 5 för en F407 High Speed Clock.
screenshot_5.jpg
Efter man har beräknat fram dess CL1 och CL2 kondensatorerna så ska man räkna fram ett externt motstånd. Gäller dock bara extern High Speed Clock.
Men när man har räknat fram sitt externa motstånd så skulle man jämföra Gmcrit med Gm = 5. Gmcrit ska nu ha R inkluderad och summerad med ESR.
Här ska Gm vara större, eller mycket större än Gmcrit. Jag kunde bara lyckas med detta igenom att använda en 4 Mhz kristall. Tänkte först ha en 25 Mhz kristall.
screenshot_6.jpg
Nu till min spänningsregulator. Jag hade använt vanliga elektrolytkondensatorer istället för tantalumkondensatorer i mitt förra projekt. Men nu blir det tantalumkondensatorer. Jag utsätter dessa elektrolytkondensatorerna bara för 5 volt.
screenshot_7.jpg
Nu var grunden klar! Nu dags för eternet phy.
screenshot_8.jpg
Som ethernet phy så har jag valt en DP83848I och här har jag valt RMII för att man skipper koppla så många kablar.
För att deklarera inför DP83848I att jag vill använda RMII så måste jag sätta RX_DV till hög och TXD_3 till låg.
screenshot_9.jpg
För att deklarera inför DP83848I att jag tänker använda adveserat tillstånd 10 Mbits halv/hel duplex och 100 Mbits halv/hel duplex så sätter jag AE_EN = 1, AN1 = 1, AN0 = 1.
Nu har dom redan pullups, men notera att dessa pinnar är även för LED.
screenshot_10.jpg
För att samtidigt sätta dessa som höga och ändå använda LED så rekommenderas det att jag väljer denna inkoppling av dioder.
screenshot_11.jpg
Nu när jag har gjort denna dekleration, så börjar jag att koppla in den fysiska enheten, dvs där kabeln ska gå in. Ingången.
Här rekommenderas det att jag väljer denna uppkoppling.
screenshot_12.jpg
Men jag kan inte ta vilken ingång som helst! Det sitter en transformator i denna RJ45-ingång.
För att veta vilken jag ska ha, så rekommenderar databladet följande.
screenshot_13.jpg
Men det viktigaste är att dessa följs.
screenshot_14.jpg
Då har jag valt denna. Som jag kan se så är finns det likheter, men även skillnader. Jag kan ej avgöra om 7499010121A går att använda då 7499010121A kan vara allt mer nämare kraven, än vad de rekommendationerna ovan.
screenshot_15.jpg
Nu när jag har gjort denna grund, då är det bara börja med inkopplingen.
Jag börjar med spänningen. Här har jag gjort exakt som det sägs, dvs använda 0Ohms motstånd och även 100nF keramik för varje 3.3v ingång.
screenshot_16.jpg
Även behövs det återkopplingskondensatorer. Jag bara gör det databladet säger och jag kör allt på standardkonfigueringar. Som 10uF kondensator så har jag valt en sådan talatumkondensator.
screenshot_17.jpg
Det står även här. Dessutom ska RBIAS och alla RESERVED pinnar ha pull-up respektive en pull-down.
screenshot_18.jpg
Nu kunde man inte ha mer än 20 bilder. Så jag lägger upp befintliga schemat här.
Jag hoppas jag har gjort rätt. :)
screenshot_23.jpg
Övriga pinnar kan jag säga är/kräver:
  • MDC = Vanlig input som jag ansluter med STM32:s RMII_MDC pinne
  • MDIO = Input och Output som kräver en 1.5kOhm resistor pull-up. Denna pinne skall anslutas med STM32:s RMII_MDIO pinne
  • TX_CLK = Används inte i RMII tillståndet
  • TX_EN = Transmit enable. Kopplas ihop med STM32:s RMII_TX_EN pinne
  • TXD_x = Detta är alltså sendar-pinnar från 0 till 3, men i RMII-tillståndet används bara TXD_0 och TXD_1
  • RX_CLK = Används inte i RMII tillståndet
  • RX_DV = Kopplas ihop med STM32:s RMII_RX_DV pinne
  • RX_ER = Denna bara indikerar om vi har ett error eller inte. Få se om jag ska använda den till något. Den ger en HÖG utgång när det blir Recieve Error status.
  • RXD_x = Samma som TXD_x, Fast här tar vi emot data. Bara RXD_0 och RXD_1 används i RMII tillståndet
  • CRS_DV = Kopplas ihop med STM32:s RMII_CRS_DV pinne
  • COL = Används inte i RMII tillståndet
  • X1 = Denna pinne ska ha 50 Mhz frekvens in.
  • X2 = Denna pinne används inte om X1 har en extern kristall
  • 25MHz_OUT = Jag använder inte denna då det finns inget behov att skicka ut 25 Mhz.
  • TCK, TDI, TDO, TMS, TRST = Testpinnar bara. Jag använder dom inte
  • RESET_N = Denna kopplar jag till STM32:s digitala pinne. Fast jag vet inte om jag ska bara låta denna vara lös? Vad tror ni? RESET_N har intern pull-up.
  • PWR_DOWN = Denna pinne använder jag inte för jag har inget behov av att stänga utav Ethernet PHY. PWR_DOWN har intern pull-up.
Nu har jag undviktit att titta på andra. Men med tanke på att han här har gjort rätt och det fungerar för han, så borde det även fungera för mig. Han hade glömt PFBIN1 och PFBIN2 med PFBOUT, vilket framgår i diskussionen.
Han har dessutom en pull-up på MDC, vilket inte alls krävs dock enligt databladet. MDC har är bara en digital input, utan någon pull-up eller pull-down. Jag ser inte i databladet att en pull-up krävs för MDC.
https://e2e.ti.com/support/interface/f/ ... unication-
Bild

Det som skiljer från min bild och bilden nedan är att min CRS_DV har ingen extern pull-up resistor, då CRS_DV har en intern svag pull-up resistor.
Bild
https://www.programmersought.com/article/79004139143/
TomasL skrev: 26 januari 2021, 17:26:22 Nja, han är nog lite äldre, lite visare och lite kunnigare än DanielM.
Och mer skrytsam :wink:
Nästan som det går att mäta på richterskalan.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Senast redigerad av DanielM 28 januari 2021, 00:18:29, redigerad totalt 1 gång.
Användarvisningsbild
mankan
EF Sponsor
Inlägg: 908
Blev medlem: 18 juli 2015, 11:23:22
Ort: Linköping

Re: STM32 har allt - Utom trådlöshet

Inlägg av mankan »

Detta sas på om förra kortet du gjorde men verkar ha glömts men du kanske bara gjort en grov layout än så länge.
Avkopplingskondingar så nära ICn som möjligt. Nu har du ju lämnat plats för silkscreenen i mellan. Flytta den och kläm ihop dem mera. Silkscreen brukar jag placera sist och kan man inte ha den i anslutning till komponenten så får man rita den någon annanstans ihop med en pil. Ser inga jord vior heller. Kristallen ser också ut att vara långt borta.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45304
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: STM32 har allt - Utom trådlöshet

Inlägg av TomasL »

DanielM skrev: 27 januari 2021, 21:51:51Och mer skrytsam :wink:
Nä knappast, han skriver inte mycket här på forumet, men allt han skriver är väldigt intresssant.
Han har dessutom aldrig någonsin skrivit i några av dina trådar.
DanielM
Inlägg: 2194
Blev medlem: 5 september 2019, 14:19:58

Re: STM32 har allt - Utom trådlöshet

Inlägg av DanielM »

mankan skrev: 27 januari 2021, 22:58:27 Detta sas på om förra kortet du gjorde men verkar ha glömts men du kanske bara gjort en grov layout än så länge.
Avkopplingskondingar så nära ICn som möjligt. Nu har du ju lämnat plats för silkscreenen i mellan. Flytta den och kläm ihop dem mera. Silkscreen brukar jag placera sist och kan man inte ha den i anslutning till komponenten så får man rita den någon annanstans ihop med en pil. Ser inga jord vior heller. Kristallen ser också ut att vara långt borta.
Ja. Detta är bara en grov PCB tills vidare. Jag vet om att avlastningskondensatorerna ska vara så nära som möjligt. :tumupp:
Alltså kristallen är bara 10 mm bort. Är det långt?
TomasL skrev: 27 januari 2021, 23:01:54
DanielM skrev: 27 januari 2021, 21:51:51Och mer skrytsam :wink:
Nä knappast, han skriver inte mycket här på forumet, men allt han skriver är väldigt intresssant.
Han har dessutom aldrig någonsin skrivit i några av dina trådar.
Jo. Han skriver alltid i mina trådar. Han gjorde det nyss :D
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45304
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: STM32 har allt - Utom trådlöshet

Inlägg av TomasL »

Nej, det gjorde han inte
DanielM
Inlägg: 2194
Blev medlem: 5 september 2019, 14:19:58

Re: STM32 har allt - Utom trådlöshet

Inlägg av DanielM »

Jag tänkte ha en kamera och LCD med pekfunktion på mitt PCB kort. Ni får gärna rekommendera mig en bra LCD och en bra kamera. De flesta kamerna jag har sett på Youtube verkar vara rätt dåliga. Samma sak gäller LCD. Fungerar bra att titta på, men pekfunktionen är ostadig.

Som vanligt lägger jag upp projektet här sedan.
hummel
Inlägg: 2269
Blev medlem: 28 november 2009, 10:40:52
Ort: Stockholm

Re: STM32 har allt - Utom trådlöshet

Inlägg av hummel »

Vad är en bra kamera och LCD för dig?
Upplösning, storlek, färgdjup, uppdateringsfrekvenser är några parametrar att ta hänsyn till.
DanielM
Inlägg: 2194
Blev medlem: 5 september 2019, 14:19:58

Re: STM32 har allt - Utom trådlöshet

Inlägg av DanielM »

Det är det jag inte vet.

Men några som jag vet som jag tyker är hyfsat bra är: OV2640
En bra LCD är säkert: ILI9341

Målet är att lära sig använda FSMC och DMCI.

Någon som har använt FSMC?
Skriv svar