Fórum témák
» Több friss téma |
Ü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)
Próbáltál másik flash IC-t? Csak mert előfordul ilyen hiba.
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
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.
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
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.
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)
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
É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.
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. |
Bejelentkezés
Hirdetés |