Fórum témák

» Több friss téma
Fórum » W25Q128FV Flash sikertelen írás!
Lapozás: OK   1 / 1
(#) mcucoder hozzászólása Ápr 7, 2016 /
 
Üdv Mindenkinek !

A címbeli SPI FLAHST-t használom dsPIC33EP256MC502-vel, de az írási művelet sajnos nem működik.

A STATUS regisztereket tudom írni/olvasni.
A memória terület írása előtt :
- engedélyezem a STATUS1-ben az írást (WEL = 1),
- kikapcsolom a csipben az összes védelmet (Global Block/Sector Unlock - 0x98)
- STATUS regisztereket beolvasva mindhárom értéke = 0, (védelmek törölve),
- engedélyezem a STATUS1-ben az írást (WEL = 1),
- törlöm az aktuális szektort (0.-at),
- megvárom a törlés végét (BUSY vizsgálat),
- újból engedélyezem a STATUS1-ben az írást (WEL = 1),
- beírok 10 byte-ot a 0. címmel kezdödöen, (0,1,2,3,4,5,6,7,8,9 értékeket),
- megvárom az írás végét (BUSY vizsgálat), (BUSY=0 lesz, de a WEL=1 marad, ami jelzi az írás sikertelenségét),
- beolvasok a 0. címtől kezdve 10 byte-t, mind 0xFF !!!

Következtetések :
- a "vezetékezés, szoftver SPI kezelés jó, hiszen tudom olvasni/írni a STATUS regisztereket,
- be tudom olvasni a gyártói kódokat, ami szintén az SPI kezelés helyességét jelzi,
- sikertelen a memória terület írása, mivel nem tudtam "felül írni" a szektor törléskor beíródott 0xFF értékeket,
- a hiba oka talán a látszat ellenére is sikertelen írásvédelem kikapcsolás.

Mi lehet a megoldás ? Egyéb írásvédelem kikapcsolási módok ...?

mcucoder
(mellékelve a forráskód részlet)
(#) Buvarruha válasza mcucoder hozzászólására (») Ápr 7, 2016 /
 
Próbáltál másik flash IC-t? Csak mert előfordul ilyen hiba.
(#) mcucoder válasza Buvarruha hozzászólására (») Ápr 7, 2016 /
 
Sajnos csak ez az 1 db volt itthon, pedig fél nap hibakeresés után én is gondoltam a cserére.
Ami a csere ellen szól, hogy a memória írásán kívül megy minden. Ezért egyelőre - de a cserét sem kizárva- az írásvédelem bekapcsolt állapotára "gyanakszom".

safi
(#) Buvarruha válasza mcucoder hozzászólására (») Ápr 7, 2016 /
 
Nem valószínű azok alapján amit leírtál, mivel azok a regiszterek olvashatók és jó az eredmény is miszerint sikerült a letiltás. Gyakori hiba ám ez.
(#) mcucoder válasza Buvarruha hozzászólására (») Ápr 7, 2016 /
 
Nem nyugtattál meg.
Küldjem vissza a Chipcad-nek ?
A cserét, vagy rendelést csak leghamarabb kedden tudom "megejteni", ha holnap rendelek pár másik példányt.
Ahhoz azonban elég drága jószág hogy én teszteljem őket... (Ne 800 Ft !!)

mcucoder
A hozzászólás módosítva: Ápr 7, 2016
(#) Lucifer válasza mcucoder hozzászólására (») Ápr 7, 2016 /
 
Simán kinyírhattad őket ESD-vel pld.

No de, hogy konstruktív is legyek. Mekkora az SCLK frekvencia? Nem lehet, hogy valami signal integrity probléma viccel meg? Ha van szkópod érdemes lehet megnézni a jelalakokat.

Van megfelelő tápszűrésed? Én flashrommal szívtam egyszer, hogy bedrótoztam egy SPI flashet paraszt módban majd detektálni, olvasni tudtam de írni nem, mert ott nagyobb áramot vesz fel.
(#) mcucoder hozzászólása Ápr 8, 2016 /
 
Lehet hogy szerencsém volt, de eddig ESD-vel még nem "sikerült" semmit elrontanom.

SCLK :
Szoftver SPI, a PIC 60 MHz-ről megy, kb. 20-30 MHz lehet.
Igazad van, megpróbálom kisebb frekv.-val is......

Kapcs.üzemű 3,3V-os táp, kimenetén 470 uF, erről megy minden PIC, FLASH, ESP8266.
Ez utóbbi miatt raktam be nagyobb tápot.1 A-es terhelésnél még nem változik a kimenete.
A FLASH lábán 100 nF ott van. (talán még 1 nF-ot és 1 µF-ot is pluszban lehetne berakni)

Na kipróbálom ... (csak közben írom az ESP8266 kezelést is, hogy valami sikerélményem is legyen)
(#) Brian88 válasza mcucoder hozzászólására (») Ápr 8, 2016 /
 
Szia
Gondolom a WP meg HOLD lábak rendben vannak.
Én így írom az SPI flasht (m95m01) Mivel 256 byte a "page" memóriája így max ennyit lehet egyszerre betolni a saját pufferjébe.

Bitrate 1000kHZ
A parancsok sorrendben:
Kilövöm a védelmet: 0x06
Írás parancs 0x02
Memória cím (3byte címzés)pl 0x00 0x00 0x00
Majd jön x mennyiségű adat, max 256 byte: 0xdata
Majd elkezdem nézni a Busy flag-et
Állapot lekérdezés: 0x05
Válaszban ha az 1 bit nem 0 akkor még dolgozik.

Nekem az olvasással volt több szívás mindig csak 0xFF kaptam vissza annak ellenére hogy benne volt az adat:
Olvasás parancsok sorrendben:
Read parancs: 0x03
Cím parancs 3 byte: 0x00 0x00 0x00
Majd max 256db 0x00 kell küldeni így az SPI buszon válaszban visszaküldi az eredményeket.
Ez azért kell, mert mikor beírod az x mennyiségű 0x00-kat a memória tudja, hogy várod a választ (illetve így adod neki az órajelet is), és szépen visszaadja a memória tartalmát.

Nagyon fontos max adatmennyiség mind olvasásnál mind írásnál a "page" mérete határozza meg. Annál több adat esetén újra kell kezdeni a parancsot a megfelelő memória címmel.
A hozzászólás módosítva: Ápr 8, 2016
(#) Brian88 válasza mcucoder hozzászólására (») Ápr 8, 2016 /
 
És még egy apró megjegyzés ESP8266-ra lehet FW írni Arduino alatt, így nincs szükség másik MCU-ra, persze csak ha megfelel az ESP tudása az adott feladatra. Többek között ezért nem is használok mostanában AVR, ha lehet egyből megy az ESP a ketyerébe.
(#) mcucoder hozzászólása Ápr 23, 2016 /
 
Megoldódott a probléma.
Vettem M25P128 16MByte-os FLASH-t, az feléledt "5 perc" alatt, tudom írni/olvasni.
A W25Q128FV FLASH lehet hogy hibás volt, azért nem boldogultam vele.
Következő: »»   1 / 1
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