![](templates/subSilver/images/CCSLogo.jpg) |
![CCS C Software and Maintenance Offers](templates/subSilver/images/forumAd6.jpg) |
View previous topic :: View next topic |
Author |
Message |
Shishido
Joined: 09 Mar 2014 Posts: 10
|
Copy data from SPI Flash ROM W25Q64C |
Posted: Wed Feb 25, 2015 7:51 pm |
|
|
Dear All, I would like to copy to new blank Flash W25Q64CROM data of BIOS flash ROM (Winbond W25Q64C )
which protocol is SPI by PIC18 or PIC 24.
we can get datasheet
http://www.alldatasheet.com/view.jsp?Searchword=W25Q64
I am sorry I have no idea how. Could you give me hint about this? |
|
![](templates/subSilver/images/spacer.gif) |
temtronic
Joined: 01 Jul 2010 Posts: 9173 Location: Greensville,Ontario
|
|
Posted: Wed Feb 25, 2015 8:19 pm |
|
|
Sounds like a school project but here's some help..
1) choose a PIC that is of a 3 volt design.Typically they 18LFxxx, where the L says it will run at 3 volts with a fast clock.
This is important as the memory device you have is a 3 volt device
2) choose a PIC with 2 HARDWARE SPI interfaces. This you need as it appears you want to copy from one SPI memory device to another.
3) choose a PIC with a large amount of RAM.Something 3-4 times bigger than whatever a 'page' or 'block' of memory the SPI device use.
4) build a minimal test board with the PIC,20MHz xtal, 2 caps, LED and resistor as well as ICSP interface.
5) cut code for a '1Hz LED ' program,compile, download, test.
get #5 WORKING before you proceed
6) cut code for a 'PIC to PC via UART' program. Have the PIC receive data from a 'terminal program kbd on the PC' and send it back to the PC screen.
get #6 working before you proceed.
7) read the datasheets and wire up the 'BIOS' flash ROM to the PIC,say using SPI port #1. cut code to read the chip and send that data to the PC terminal program.
get #7 working before you proceed
8) wire up the 'blank' chip to the SPI #2 port and cut code to read/display onto PC screen. When that works, try storing 'ABC' to it, read it back, dsp on PC.
When #8 works fine, cut code to read 'bios' save to 'blank', using a RAM buffer of the correct size,
These are general comments, more a less the 'plan of attack' I'd use to 'clone the device. The actual program for 'cloning ' is simple, maybe a nights work. Most of your time will be spent doing the hardware and 'basic' programs to prove you've got the hardware correct!
Jay |
|
![](templates/subSilver/images/spacer.gif) |
Shishido
Joined: 09 Mar 2014 Posts: 10
|
Thanks Jay san |
Posted: Thu Feb 26, 2015 3:15 am |
|
|
Dear Jay san, thank you for your good comments.
Actually, I have experienced developed I2C protocol device such as EEPROM ,I2C LCD ,etc controlled by PIC16,PIC18.
According datasheet of Winbond W25Q64C.
It seems to complicate write data about page write ,block write.
Anyway, I will try it spend my night time .
Thanks! |
|
![](templates/subSilver/images/spacer.gif) |
Ttelmah
Joined: 11 Mar 2010 Posts: 19366
|
|
Posted: Thu Feb 26, 2015 4:21 am |
|
|
Keep it simple.
Do the writes in pages.
Use the smallest erase sector (4KB).
The chip has three different 'sizes' associated with it for erase. a 4KB 'sector', or 32KB, and 64KB 'blocks' which automatically perform multi sector erases. Then a 256byte page for writes.
On wake up, send the 'continuous read disable' instruction. You need to do this if the chip has got into a confused state, otherwise it won't accept other commands. It shouldn't happen (since you won't use the continuous read mode), but can, so it's worth being safe. I had one arrive set in this mode, and swore at it till I realised what was wrong....
Then, erase the first 4KB sector on the target.
Then just use the simplest read operation to read 16 pages (4KB), non stop.
Then do 16 page writes to the target. For each one, 'write enable', 'page program', address (last byte 0), and clock in 256 bytes. Release CS. Then either just wait for the worst case write time (simple - 3mSec), or poll the busy flag (more complex but faster).
Get a PIC that has more than 4KB RAM (so a whole 4KB can be held).
I've played with another version from the same family (the X20), and provided I didn't try to do anything too complex/fast, it was easy to drive.
So long as you don't mind taking it slightly slowly, it is easy, but go faster and you then have to start doing a lot more work to avoid timing issues. Watch out for the delay needed after the first byte is transferred on the page write.
Just using timing, it'll take about 3 minutes to perform the copy on this chip. |
|
![](templates/subSilver/images/spacer.gif) |
Shishido
Joined: 09 Mar 2014 Posts: 10
|
Done COPY SPI memory tool |
Posted: Fri Apr 24, 2015 2:17 am |
|
|
Many Thanks , I done SPI memory copy tool .
Pic micom :PIC18F27J53 , clock 20M
When copy 64Mbit memory. the time is 6:30 sec include verify.
Since I hope speed up copy time. I will challenge update for using 32bit micom for the next time.
Ttelmah wrote: | Keep it simple.
Do the writes in pages.
Use the smallest erase sector (4KB).
The chip has three different 'sizes' associated with it for erase. a 4KB 'sector', or 32KB, and 64KB 'blocks' which automatically perform multi sector erases. Then a 256byte page for writes.
On wake up, send the 'continuous read disable' instruction. You need to do this if the chip has got into a confused state, otherwise it won't accept other commands. It shouldn't happen (since you won't use the continuous read mode), but can, so it's worth being safe. I had one arrive set in this mode, and swore at it till I realised what was wrong....
Then, erase the first 4KB sector on the target.
Then just use the simplest read operation to read 16 pages (4KB), non stop.
Then do 16 page writes to the target. For each one, 'write enable', 'page program', address (last byte 0), and clock in 256 bytes. Release CS. Then either just wait for the worst case write time (simple - 3mSec), or poll the busy flag (more complex but faster).
Get a PIC that has more than 4KB RAM (so a whole 4KB can be held).
I've played with another version from the same family (the X20), and provided I didn't try to do anything too complex/fast, it was easy to drive.
So long as you don't mind taking it slightly slowly, it is easy, but go faster and you then have to start doing a lot more work to avoid timing issues. Watch out for the delay needed after the first byte is transferred on the page write.
Just using timing, it'll take about 3 minutes to perform the copy on this chip. | ![Very Happy](images/smiles/icon_biggrin.gif) |
|
![](templates/subSilver/images/spacer.gif) |
ciccioc74
Joined: 23 Mar 2010 Posts: 30
|
|
Posted: Wed Oct 21, 2015 11:31 am |
|
|
hi shishido can you post the code? |
|
![](templates/subSilver/images/spacer.gif) |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|