<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://w.electrodragon.com/w/index.php?action=history&amp;feed=atom&amp;title=Category%3AFlash</id>
	<title>Category:Flash - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://w.electrodragon.com/w/index.php?action=history&amp;feed=atom&amp;title=Category%3AFlash"/>
	<link rel="alternate" type="text/html" href="https://w.electrodragon.com/w/index.php?title=Category:Flash&amp;action=history"/>
	<updated>2026-06-04T09:13:29Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.37.2</generator>
	<entry>
		<id>https://w.electrodragon.com/w/index.php?title=Category:Flash&amp;diff=32519&amp;oldid=prev</id>
		<title>Chao: /* Documents */</title>
		<link rel="alternate" type="text/html" href="https://w.electrodragon.com/w/index.php?title=Category:Flash&amp;diff=32519&amp;oldid=prev"/>
		<updated>2022-02-07T08:48:53Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Documents&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Knowlege ==&lt;br /&gt;
* 绝大多数的单片机和微控制器（ARM,x86)，地址空间都是以字节为单位的，也就是说一个地址是一个字节。&lt;br /&gt;
* Flash存储器有个特点，就是只能写0，不能写1。所以如果原来的地址有数据了，意味着有一些位为0，这些位就相当于无效了。所以必须写之前确保他们都为1，只有擦除才可以。另外每次擦除都必须擦除一个4K大小的扇区，这是flash的特性所决定的。&lt;br /&gt;
* 对Flash操作前必需打开内部振荡器。&lt;br /&gt;
&lt;br /&gt;
== STM32 Code ==&lt;br /&gt;
Read, notice address should be 0x08006900 ... 0x08006910 ... 0x08006920&lt;br /&gt;
 uint8_t dat1 = *(__IO uint32_t *)(0x08006900);&lt;br /&gt;
 uint8_t dat2 = *(__IO uint32_t *)(0x08006910);&lt;br /&gt;
 uint8_t dat3 = *(__IO uint32_t *)(0x08006920);&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Flash_address_map.png | address map of STM32F030&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SPI Flash ==&lt;br /&gt;
* SST - SST25VF016B-50-4C-S2AF&lt;br /&gt;
* Winbond - W25Q64FVSSIG &lt;br /&gt;
[[File:25Q128FVSG.png|thumbnail]]&lt;br /&gt;
* Simple wiring &lt;br /&gt;
 D13, D12, D11, D10 of arduino to SPI flash - CLK, DO, DI and CS, &lt;br /&gt;
 3V3 arduino to 3v3, wp, hold, and GND of arduino to GND&lt;br /&gt;
* Data need to be erased before write again.&lt;br /&gt;
* flash winbond W25Q SPI Flash &lt;br /&gt;
[[File:W25Q SPI Flash.jpeg|400px]]&lt;br /&gt;
* [https://github.com/Marzogh/SPIFlash Arduino SPIFlash library]&lt;br /&gt;
== Programming ==&lt;br /&gt;
=== Programming by CH341 ===&lt;br /&gt;
[[File:Spi flash prog.png|thumb|right]]&lt;br /&gt;
* Use tool CH341 Programmer from github, download below&lt;br /&gt;
* wiring please refer to page [[Flash#Pin_Wiring]], use CE0 for this board&lt;br /&gt;
* Switch board power supply to 3V3, and MODE to others&lt;br /&gt;
* press &amp;quot;detect&amp;quot; in tools and you should see like this.&lt;br /&gt;
&lt;br /&gt;
=== (Obsolete) Update on-board SPI-Flash ===&lt;br /&gt;
Here is an example of our MT7688AN board, flash uboot or firmware&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Update_spi_flash.png | 01 wire up&lt;br /&gt;
File:Update_spi_flash_02.png | 02 connect to programmer&lt;br /&gt;
File:Update_spi_flash_03.png | Click program to upload&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
* No need to connect anymore, use programmer power supply&lt;br /&gt;
* Connect pin VDD, MOSI, CLK, MISO, CS, GND&lt;br /&gt;
* Detect on board SPI Flash size 16Mb, which is W25Q128FVSSIG&lt;br /&gt;
* Upload you file, uboot or firmware&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[category: Memory]]&lt;/div&gt;</summary>
		<author><name>Chao</name></author>
	</entry>
</feed>