<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Embedded-Code.com &#187; Memory</title>
	<atom:link href="http://www.embedded-code.com/source-code/category/memory/feed" rel="self" type="application/rss+xml" />
	<link>http://www.embedded-code.com/source-code</link>
	<description></description>
	<lastBuildDate>Fri, 27 Jan 2012 10:18:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Atmel AT45DB081 Serial SPI Bus DataFlash Driver</title>
		<link>http://www.embedded-code.com/source-code/memory/flash-memory-ics/atmel-at45db081-serial-spi-bus-dataflash-driver</link>
		<comments>http://www.embedded-code.com/source-code/memory/flash-memory-ics/atmel-at45db081-serial-spi-bus-dataflash-driver#comments</comments>
		<pubDate>Wed, 18 May 2011 10:29:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Flash Memory IC's]]></category>

		<guid isPermaLink="false">http://www.embedded-code.com/source-code/?p=305</guid>
		<description><![CDATA[[product_image:/images/products/product_free_driver.png] [ProductType:1] (0=normal, 1=quick/free project (must be 1 char) [product_attributes_end] [product_section_start:product_page_section_overview.png] The Atmel AT45DB081D is an 8-megabit SPI serial bus flash memory device. [product_section_start:product_info_include_free_driver_top_box] [product_section_start:product_page_section_details.png] The Atmel AT45DB081 flash memory IC is a SPI bus device. It provides very low cost bulk memory to embedded designs. Memory organisation: 0&#215;000000 &#8211; 0x0FFFFF 1048576 bytes x 8 [...]]]></description>
			<content:encoded><![CDATA[<p>[product_image:/images/products/product_free_driver.png]<br />
[ProductType:1] (0=normal, 1=quick/free project (must be 1 char)<br />
[product_attributes_end]<br />
<span id="more-305"></span></p>
<p>[product_section_start:product_page_section_overview.png]</p>
<p>The Atmel AT45DB081D is an 8-megabit SPI serial bus flash memory device.</p>
<p>[product_section_start:product_info_include_free_driver_top_box]</p>
<p>[product_section_start:product_page_section_details.png]</p>
<p>The Atmel AT45DB081 flash memory IC is a SPI bus device. It provides very low cost bulk memory to embedded designs.</p>
<p>Memory organisation:</p>
<p>0&#215;000000 &#8211; 0x0FFFFF</p>
<p>1048576 bytes x 8 (1024KB / 1MB)</p>
<p>Organised as 4096 pages of 256 bytes (To avoid non binary complexities this driver only uses 256 bytes of each page instead of the 264 which are actually available)</p>
<p>This driver provides the following functions:</p>
<p><span class="code_function_title">TEST FLASH MEMORY</span></p>
<p><strong></strong> <span class="code_function_definition">BYTE flash_test_memory (void)</span></p>
<p>An example of how to use this drivers functions.</p>
<p>Also a useful function if you want to verify the flash memory driver is working properly.</p>
<p>Returns 1 if test passed, 0 if not.</p>
<p><span class="code_function_title">IS FLASH IC PRESENT</span></p>
<p><span class="code_function_definition">BYTE flash_check_present (void)</span></p>
<p>Useful to check flash chip is there and working</p>
<p><span class="code_function_title">ERASE PAGE OF FLASH MEMORY</span></p>
<pre><code>void flash_erase_page (DWORD address)</code></pre>
<p>address is the binary byte address (must be a byte within the page)</p>
<p><span class="code_function_title">ERASE BLOCK OF FLASH MEMORY</span></p>
<pre><code>void flash_erase_block (DWORD address)</code></pre>
<p>address is the binary byte address (must be a byte within the block)</p>
<p><span class="code_function_title">ERASE ALL FLASH MEMORY</span></p>
<p><span class="code_function_definition">void flash_erase_all (void)</span></p>
<p><span class="code_function_title">WRITE PAGE</span></p>
<p><span class="code_function_definition">void flash_write_page (DWORD address, BYTE *buffer, BYTE erase_first)</span></p>
<p>Call with:</p>
<p>address			Binary byte address (must be the 1st byte of a page)</p>
<p>buffer			Array of 256 bytes of data to be written</p>
<p>erase_first		1 = erase buffer first, 0 = don&#8217;t erase (if you&#8217;ve previously called flash_erase_all)</p>
<p><span class="code_function_title">READ PAGE</span></p>
<p><span class="code_function_definition">void flash_read_page (DWORD address, BYTE *buffer)</span></p>
<p>Call with:</p>
<p>address			Binary byte address (must be the 1st byte of a page)</p>
<p>buffer			Array of 256 bytes of data to store read bytes in</p>
<p><span class="code_function_title">READ STATUS</span></p>
<p><span class="code_function_definition">BYTE flash_read_status (void)</span></p>
<p>Returns status byte (bit 7 low = device is busy)</p>
<p>Please view the sample source code files for full information regarding the driver.</p>
<p>[product_section_start:product_page_section_compilers.png]</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td height="15" align="left" valign="middle"></td>
<td width="10"></td>
<td></td>
</tr>
<tr>
<td width="140" height="50" align="center" valign="middle">
<div><img src="/images/compilers/ansi_c_compiler.jpg" border="0" alt="" width="140" height="40" /></div>
</td>
<td class="main"></td>
<td class="main">
<div>This source code product is written in C and has been designed to be used with any ANSI compliant C compiler on any platform. Direct compatibility has been tested with the compilers and processors / microcontrollers listed below. Using the driver with other ANSI compliant C compilers and devices should not present significant problems.</div>
</td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td height="15" align="left" valign="middle"></td>
<td width="10"></td>
<td></td>
</tr>
<tr>
<td width="140" height="50" align="center" valign="middle">
<div><a href="http://www.microchip.com/" target="_blank"><img src="/images/compilers/microchip_small_logo.gif" border="0" alt="" width="37" height="39" /></a></div>
</td>
<td class="main"></td>
<td class="main">
<div>Tested with the Microchip C18 MPLAB C Compiler for PIC18 family of 8 bit microcontrollers. Free version of the compiler available from Microchip.</div>
</td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td height="15" align="left" valign="middle"></td>
<td width="10"></td>
<td></td>
</tr>
<tr>
<td width="140" height="50" align="center" valign="middle">
<div><a href="http://www.microchip.com/" target="_blank"><img src="/images/compilers/microchip_small_logo.gif" border="0" alt="" width="37" height="39" /></a></div>
</td>
<td class="main"></td>
<td class="main">
<div>Tested with the Microchip C30 MPLAB C Compiler for PIC24 family of 16 bit microcontrollers. Free version of the compiler available from Microchip.</div>
</td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td height="15" align="left" valign="middle"></td>
<td width="10"></td>
<td></td>
</tr>
<tr>
<td width="140" height="50" align="center" valign="middle">
<div><a href="http://www.microchip.com/" target="_blank"><img src="/images/compilers/microchip_small_logo.gif" border="0" alt="" width="37" height="39" /></a></div>
</td>
<td class="main"></td>
<td class="main">
<div>Tested with the Microchip C32 MPLAB C Compiler for PIC32 family of 32 bit microcontrollers. Free version of the compiler available from Microchip.</div>
</td>
</tr>
</tbody>
</table>
<p>[product_section_start:product_page_section_project_files.png]</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td height="6"></td>
<td></td>
</tr>
<tr>
<td width="60" align="left" valign="middle">
<div><a href="http://dl.dropbox.com/u/20637505/_Programming/C_Lib/Generic_Header_File/EC/main.h" target="_blank"><img src="/images/icons/download_file.png" border="0" alt="" width="36" height="36" /></a></div>
</td>
<td class="main">Download our generic header file</td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td height="6"></td>
<td></td>
</tr>
<tr>
<td width="60" align="left" valign="middle">
<div><a href="http://dl.dropbox.com/u/20637505/_Programming/C_Lib/Flash_Memory/Atmel_AT45DB081-EC/mem-at45db081.h" target="_blank"><img src="/images/icons/download_file.png" border="0" alt="" width="36" height="36" /></a></div>
</td>
<td class="main">Download driver .h header file</td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td height="6"></td>
<td></td>
</tr>
<tr>
<td width="60" align="left" valign="middle">
<div><a href="http://dl.dropbox.com/u/20637505/_Programming/C_Lib/Flash_Memory/Atmel_AT45DB081-EC/mem-at45db081.c" target="_blank"><img src="/images/icons/download_file.png" border="0" alt="" width="36" height="36" /></a></div>
</td>
<td class="main">Download driver .c code file</td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td height="6"></td>
<td></td>
</tr>
<tr>
<td width="60" align="left" valign="middle">
<div><a href="http://dl.dropbox.com/u/20637505/_Programming/C_Lib/Flash_Memory/Atmel_AT45DB081-EC/AT45DB081D.pdf" target="_blank"><img src="/images/icons/download_datasheet.png" border="0" alt="" width="36" height="36" /></a></div>
</td>
<td class="main">Download AT45DB081D datasheet</td>
</tr>
</tbody>
</table>
<p>[product_section_start:product_info_include_free_driver]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.embedded-code.com/source-code/memory/flash-memory-ics/atmel-at45db081-serial-spi-bus-dataflash-driver/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microchip PIC18 Internal EEprom Memory Driver</title>
		<link>http://www.embedded-code.com/source-code/memory/flash-memory-ics/microchip-pic18-internal-eeprom-memory-driver</link>
		<comments>http://www.embedded-code.com/source-code/memory/flash-memory-ics/microchip-pic18-internal-eeprom-memory-driver#comments</comments>
		<pubDate>Wed, 18 May 2011 08:01:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Flash Memory IC's]]></category>

		<guid isPermaLink="false">http://www.embedded-code.com/source-code/?p=284</guid>
		<description><![CDATA[[product_image:/images/products/product_free_driver.png] [ProductType:1] (0=normal, 1=quick/free project (must be 1 char) [product_attributes_end] [product_section_start:product_page_section_overview.png] Many Microchip PIC18 devices incorporate eeprom non-volatile memory.  This driver provides fucntions to read and write the eeprom memory with checkum error detection. [product_section_start:product_info_include_free_driver_top_box] [product_section_start:product_page_section_details.png] This driver provides the following functions: CHECK FOR FACTORY START BYTE check_factory_start (void) Returns 1 if this is a [...]]]></description>
			<content:encoded><![CDATA[<p>[product_image:/images/products/product_free_driver.png]<br />
[ProductType:1] (0=normal, 1=quick/free project (must be 1 char)<br />
[product_attributes_end]<br />
<span id="more-284"></span></p>
<p>[product_section_start:product_page_section_overview.png]</p>
<p>Many Microchip PIC18 devices incorporate eeprom non-volatile memory.  This driver provides fucntions to read and write the eeprom memory with checkum error detection.</p>
<p>[product_section_start:product_info_include_free_driver_top_box]</p>
<p>[product_section_start:product_page_section_details.png]</p>
<p>This driver provides the following functions:</p>
<p><span class="code_function_title">CHECK FOR FACTORY START</span></p>
<pre><code>BYTE check_factory_start (void)</code></pre>
<p>Returns 1 if this is a factory start (eeprom signature is not present), 0 if not</p>
<p><span class="code_function_title">STORE FACTORY START SIGNATURE</span></p>
<pre><code>void store_factory_start_signature (void)</code></pre>
<p>After carying out factory start tasks, such as storing default eeprom values, call this fucntion to store the factory start doen signature in eeprom.</p>
<p><span class="code_function_title">READ PIC EEPROM</span></p>
<pre><code>BYTE read_pic_eeprom (WORD eeprom_start_address, BYTE *ram_start_address, BYTE len, BYTE checksum_offset)</code></pre>
<p>Returns 0 if checkum was OK, 1 if it failed (the ram_start_address buffer will have been set to 0&#215;00)<br />
If no checksum is used set checksum_offset to 0.</p>
<p><span class="code_function_title">WRITE PIC EEPROM</span></p>
<pre><code>void write_pic_eeprom (WORD eeprom_start_address, BYTE *ram_start_address, BYTE len, BYTE checksum_offset)</code></pre>
<p>To not store a checksum set checksum_offset to 0.</p>
<p>Please view the sample source code files for full information regarding the driver.</p>
<p>[product_section_start:product_page_section_compilers.png]</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td height="15" align="left" valign="middle"></td>
<td width="10"></td>
<td></td>
</tr>
<tr>
<td width="140" height="50" align="center" valign="middle">
<div><img src="/images/compilers/ansi_c_compiler.jpg" border="0" alt="" width="140" height="40" /></div>
</td>
<td class="main"></td>
<td class="main">
<div>This source code product is written in C and has been designed to be used with any ANSI compliant C compiler on any platform. Direct compatibility has been tested with the compilers and processors / microcontrollers listed below. Using the driver with other ANSI compliant C compilers and devices should not present significant problems.</div>
</td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td height="15" align="left" valign="middle"></td>
<td width="10"></td>
<td></td>
</tr>
<tr>
<td width="140" height="50" align="center" valign="middle">
<div><a href="http://www.microchip.com/" target="_blank"><img src="/images/compilers/microchip_small_logo.gif" border="0" alt="" width="37" height="39" /></a></div>
</td>
<td class="main"></td>
<td class="main">
<div>Tested with the Microchip C18 MPLAB C Compiler for PIC18 family of 8 bit microcontrollers. Free version of the compiler available from Microchip.</div>
</td>
</tr>
</tbody>
</table>
<p>[product_section_start:product_page_section_project_files.png]</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td height="6"></td>
<td></td>
</tr>
<tr>
<td width="60" align="left" valign="middle">
<div><a href="http://dl.dropbox.com/u/20637505/_Programming/C_Lib/Generic_Header_File/EC/main.h" target="_blank"><img src="/images/icons/download_file.png" border="0" alt="" width="36" height="36" /></a></div>
</td>
<td class="main">Download our generic header file</td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td height="6"></td>
<td></td>
</tr>
<tr>
<td width="60" align="left" valign="middle">
<div><a href="http://dl.dropbox.com/u/20637505/_Programming/C_Lib/EEprom/PIC18_Internal_Eeprom-EC/pic-eeprom.h" target="_blank"><img src="/images/icons/download_file.png" border="0" alt="" width="36" height="36" /></a></div>
</td>
<td class="main">Download driver .h header file</td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td height="6"></td>
<td></td>
</tr>
<tr>
<td width="60" align="left" valign="middle">
<div><a href="http://dl.dropbox.com/u/20637505/_Programming/C_Lib/EEprom/PIC18_Internal_Eeprom-EC/pic-eeprom.c" target="_blank"><img src="/images/icons/download_file.png" border="0" alt="" width="36" height="36" /></a></div>
</td>
<td class="main">Download driver .c code file</td>
</tr>
</tbody>
</table>
<p>[product_section_start:product_info_include_free_driver]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.embedded-code.com/source-code/memory/flash-memory-ics/microchip-pic18-internal-eeprom-memory-driver/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Atmel AT45DB041 Serial SPI Bus DataFlash Driver</title>
		<link>http://www.embedded-code.com/source-code/memory/flash-memory-ics/atmel-at45db041-serial-spi-bus-dataflash-driver</link>
		<comments>http://www.embedded-code.com/source-code/memory/flash-memory-ics/atmel-at45db041-serial-spi-bus-dataflash-driver#comments</comments>
		<pubDate>Mon, 05 Apr 2010 12:48:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Flash Memory IC's]]></category>

		<guid isPermaLink="false">http://www.embedded-code.com/source-code/?p=136</guid>
		<description><![CDATA[[product_image:/images/products/product_free_driver.png] [ProductType:1] (0=normal, 1=quick/free project (must be 1 char) [product_attributes_end] [product_section_start:product_page_section_overview.png] The Atmel AT45DB041D is a 4-megabit SPI serial bus flash memory device. [product_section_start:product_info_include_free_driver_top_box] [product_section_start:product_page_section_details.png] The Atmel AT45DB041 flash memory IC is a SPI bus device. It provides very low cost bulk memory to embedded designs. Memory organisation: 0&#215;00000 &#8211; 0x7FFFF 524288 bytes x 8 [...]]]></description>
			<content:encoded><![CDATA[<p>[product_image:/images/products/product_free_driver.png]<br />
[ProductType:1] (0=normal, 1=quick/free project (must be 1 char)<br />
[product_attributes_end]<br />
<span id="more-136"></span></p>
<p>[product_section_start:product_page_section_overview.png]</p>
<p>The Atmel AT45DB041D is a 4-megabit SPI serial bus flash memory device.</p>
<p>[product_section_start:product_info_include_free_driver_top_box]</p>
<p>[product_section_start:product_page_section_details.png]</p>
<p>The Atmel AT45DB041 flash memory IC is a SPI bus device. It provides very low cost bulk memory to embedded designs.</p>
<p>Memory organisation:</p>
<p>0&#215;00000 &#8211; 0x7FFFF</p>
<p>524288 bytes x 8 (512KB)</p>
<p>Organised as 2,048 pages of 256 bytes (To avoid non binary complexities this driver only uses 256 bytes of each page instead of the 264 which are actually available)</p>
<p>This driver provides the following functions:</p>
<p><span class="code_function_title">TEST FLASH MEMORY</span><strong> </strong></p>
<p><strong></strong> <span class="code_function_definition">BYTE flash_test_memory (void)</span></p>
<p>An example of how to use this drivers functions.</p>
<p>Also a useful function if you want to verify the flash memory driver is working properly.</p>
<p>Returns 1 if test passed, 0 if not.</p>
<p><span class="code_function_title">IS FLASH IC PRESENT</span></p>
<p><span class="code_function_definition">BYTE flash_check_present (void)</span></p>
<p>Useful to check flash chip is there and working</p>
<p><span class="code_function_title">ERASE FLASH MEMORY</span></p>
<p><span class="code_function_definition">void flash_erase_all (void)</span></p>
<p><span class="code_function_title">WRITE PAGE</span></p>
<p><span class="code_function_definition">void flash_write_page (DWORD address, BYTE *buffer, BYTE erase_first)</span></p>
<p>Call with:</p>
<p>address			Binary byte address (must be the 1st byte of a page)</p>
<p>buffer			Array of 256 bytes of data to be written</p>
<p>erase_first		1 = erase buffer first, 0 = don&#8217;t erase (if you&#8217;ve previously called flash_erase_all)</p>
<p><span class="code_function_title">READ PAGE</span></p>
<p><span class="code_function_definition">void flash_read_page (DWORD address, BYTE *buffer)</span></p>
<p>Call with:</p>
<p>address			Binary byte address (must be the 1st byte of a page)</p>
<p>buffer			Array of 256 bytes of data to store read bytes in</p>
<p><span class="code_function_title">READ STATUS</span></p>
<p><span class="code_function_definition">BYTE flash_read_status (void)</span></p>
<p>Returns status byte (bit 7 low = device is busy)</p>
<p>Please view the sample source code files for full information regarding the driver.</p>
<p>[product_section_start:product_page_section_compilers.png]</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td height="15" align="left" valign="middle"></td>
<td width="10"></td>
<td></td>
</tr>
<tr>
<td width="140" height="50" align="center" valign="middle">
<div><img src="/images/compilers/ansi_c_compiler.jpg" border="0" alt="" width="140" height="40" /></div>
</td>
<td class="main"></td>
<td class="main">
<div>This source code product is written in C and has been designed to be used with any ANSI compliant C compiler on any platform. Direct compatibility has been tested with the compilers and processors / microcontrollers listed below. Using the driver with other ANSI compliant C compilers and devices should not present significant problems.</div>
</td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td height="15" align="left" valign="middle"></td>
<td width="10"></td>
<td></td>
</tr>
<tr>
<td width="140" height="50" align="center" valign="middle">
<div><a href="http://www.microchip.com/" target="_blank"><img src="/images/compilers/microchip_small_logo.gif" border="0" alt="" width="37" height="39" /></a></div>
</td>
<td class="main"></td>
<td class="main">
<div>Tested with the Microchip C18 MPLAB C Compiler for PIC18 family of 8 bit microcontrollers. Free version of the compiler available from Microchip.</div>
</td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td height="15" align="left" valign="middle"></td>
<td width="10"></td>
<td></td>
</tr>
<tr>
<td width="140" height="50" align="center" valign="middle">
<div><a href="http://www.microchip.com/" target="_blank"><img src="/images/compilers/microchip_small_logo.gif" border="0" alt="" width="37" height="39" /></a></div>
</td>
<td class="main"></td>
<td class="main">
<div>Tested with the Microchip C30 MPLAB C Compiler for PIC24 family of 16 bit microcontrollers. Free version of the compiler available from Microchip.</div>
</td>
</tr>
</tbody>
</table>
<p>[product_section_start:product_page_section_project_files.png]</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td height="6"></td>
<td></td>
</tr>
<tr>
<td width="60" align="left" valign="middle">
<div><a href="http://dl.dropbox.com/u/20637505/_Programming/C_Lib/Generic_Header_File/EC/main.h" target="_blank"><img src="/images/icons/download_file.png" border="0" alt="" width="36" height="36" /></a></div>
</td>
<td class="main">Download our generic header file</td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td height="6"></td>
<td></td>
</tr>
<tr>
<td width="60" align="left" valign="middle">
<div><a href="http://dl.dropbox.com/u/20637505/_Programming/C_Lib/Flash_Memory/Atmel_AT45DB041-EC/mem-at45db041.h" target="_blank"><img src="/images/icons/download_file.png" border="0" alt="" width="36" height="36" /></a></div>
</td>
<td class="main">Download driver .h header file</td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td height="6"></td>
<td></td>
</tr>
<tr>
<td width="60" align="left" valign="middle">
<div><a href="http://dl.dropbox.com/u/20637505/_Programming/C_Lib/Flash_Memory/Atmel_AT45DB041-EC/mem-at45db041.c" target="_blank"><img src="/images/icons/download_file.png" border="0" alt="" width="36" height="36" /></a></div>
</td>
<td class="main">Download driver .c code file</td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td height="6"></td>
<td></td>
</tr>
<tr>
<td width="60" align="left" valign="middle">
<div><a href="http://dl.dropbox.com/u/20637505/_Programming/C_Lib/Flash_Memory/Atmel_AT45DB041-EC/AT45DB041D.pdf" target="_blank"><img src="/images/icons/download_datasheet.png" border="0" alt="" width="36" height="36" /></a></div>
</td>
<td class="main">Download AT45DB041D datasheet</td>
</tr>
</tbody>
</table>
<p>[product_section_start:product_info_include_free_driver]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.embedded-code.com/source-code/memory/flash-memory-ics/atmel-at45db041-serial-spi-bus-dataflash-driver/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Secure Digital / MMC Memory Card FAT16 / FAT32 Driver</title>
		<link>http://www.embedded-code.com/source-code/memory/secure-digital-mmc-memory-cards/secure-digital-mmc-memory-card-fat16-fat32-driver</link>
		<comments>http://www.embedded-code.com/source-code/memory/secure-digital-mmc-memory-cards/secure-digital-mmc-memory-card-fat16-fat32-driver#comments</comments>
		<pubDate>Mon, 05 Apr 2010 12:40:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Secure Digital / MMC Memory Cards]]></category>

		<guid isPermaLink="false">http://www.embedded-code.com/source-code/?p=133</guid>
		<description><![CDATA[[ProductCodeName:memory_sd_mmc_sd_mmc_memory_card_driver] [product_image:/images/products/product_sd_mmc_card_driver.png] [product_price_private:55.00] (0 = not available) [product_price_commercial:100.00] [product_price_upgrade:65.00] (0 = not available) [product_price_renew:25.00] (0 = not available) [ProductType:0] (0=normal, 1=quick project (must be 1 char) [product_attributes_end] [product_section_start:product_page_section_overview.png] MMC (MultiMediaCard) and SD (Secure Digital) memory cards provide a very convenient and inexpensive means of storing large quantities of data on a removable card. However providing [...]]]></description>
			<content:encoded><![CDATA[<p>[ProductCodeName:memory_sd_mmc_sd_mmc_memory_card_driver]<br />
[product_image:/images/products/product_sd_mmc_card_driver.png]<br />
[product_price_private:55.00] (0 = not available)<br />
[product_price_commercial:100.00]<br />
[product_price_upgrade:65.00] (0 = not available)<br />
[product_price_renew:25.00] (0 = not available)<br />
[ProductType:0] (0=normal, 1=quick project (must be 1 char)<br />
[product_attributes_end]<br />
<span id="more-133"></span></p>
<p>[product_section_start:product_page_section_overview.png]</p>
<p>MMC (MultiMediaCard) and SD (Secure Digital) memory cards provide a very convenient and inexpensive means of storing large quantities of data on a removable card. However providing a FAT16 / FAT 32 driver for a MMC or SD card, so that the files on the card may also be written and read by a PC is a daunting and complex task.</p>
<p>This MMC / SD card driver provides standard C library fopen() etc functions for FAT16 and FAT32 formatted cards, allowing you to add a MMC / SD card interface to your project with ease.</p>
<p>[product_section_start:product_page_section_details.png]</p>
<p>The driver provides the following main features:-</p>
<ul>
<li>Designed for both FAT16 and FAT32 formatted SD, SDHC (high capacity), MMC and MMCplus (high capacity) cards.</li>
<li>Uses the licence free SPI bus interface for both MMC and SD cards allowing either type to be used with the same driver (the more complex 4 bit interface requires licence payments). Also fully compatible with the  miniaturised versions of MMC and SD cards for space critical applications.</li>
<li>Optimised for embedded designs. Only a single 512 data buffer is required for all operations. (It is not possible to write to MMC or SD cards without a 512 byte buffer as sectors have to be read to local memory, modified and written back as a whole).</li>
<li>Intelligent use of the local ram sector buffer. Read and writes of sector data only occur when necessary, avoiding unnecessary and slow repeated read or write operations to the  card.</li>
<li>Optimised file delete function for fast deleting of large files. Instead of altering each FAT table entry one at a time, a complete sector of FAT table entries are altered in one operation before writing back to the card, resulting in a large speed improvement.</li>
<li>Provides the following standard ANSI-C functions:- fopen, fseek, ftell, fgetpos, fsetpos, ffs_rewind, fputc, putc, fgetc, getc, fputs, fgets, fwrite, fread, fflush, fclose, remove, rename, clearer, feof and ferror</li>
<li>Standard DOS ‘*’ and ‘?’ wildcard characters may be used in file operations.</li>
<li>Multiple files may be opened, accessed and written at the same time.</li>
<li>Optional real time clock support for applications that include time keeping.  File creation, last modified and last accessed time and date values are automatically stored.</li>
<li>Detailed project technical manual with a wealth  of information on the FAT filing system and the structure of a FAT disk / memory card.</li>
<li>No reliance on compiler specific libraries.</li>
<li>Full source code supplied for you to use and modify as required.</li>
</ul>
<p><strong>Don&#8217;t think you need FAT32?</strong></p>
<p>You may think that you don’t need anything more than FAT16 for your application if you don’t plan to store more than 2GB of data on a MMC or SD card. After all, many embedded applications only need to store relatively small amounts of data. However MMC and SD cards with capacities greater than 256MB are typically supplied pre-formatted with FAT32. Also Windows  will typically format a MMC or SD card with a capacity greater than 32MB as FAT32 by default. This is because FAT32 uses larger volumes more efficiently than FAT16 and is also less susceptible to a single point of failure due to the use of a backup copy of critical data structures in the boot record. Therefore if you use a driver that only supports FAT16 for your application your users will need to find a PC with a MMC or SD card adaptor to re-format larger capacity cards to be FAT16 before they can be used with your device. You also run the risk of increased technical support demands from users who haven’t read your instructions or don&#8217;t understand how to format a card as FAT16 instead of the default FAT32 and can’t work out why their new MMC or SD card won’t work in your device. Using a driver that supports FAT16 and FAT32 doesn&#8217;t result in a large amount of additional code space by today’s standards, as the two systems are very similar, and it makes life a lot easier for you and your users.</p>
<p>[product_section_start:product_page_section_specifications.png]</p>
<p><strong>Hardware Specifications</strong></p>
<p>The driver is designed to support the licence free SPI bus MMC / SD memory card interface.</p>
<p>For full specifications please see the project technical manual.</p>
<p>[product_section_start:product_page_section_compilers.png]</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td height="15" align="left" valign="middle"></td>
<td width="10"></td>
<td></td>
</tr>
<tr>
<td width="140" height="50" align="center" valign="middle">
<div><img src="/images/compilers/ansi_c_compiler.jpg" border="0" alt="" width="140" height="40" /></div>
</td>
<td class="main"></td>
<td class="main">
<div>This source code product is written in C and has been designed to be used with any ANSI compliant C compiler on any platform. Direct compatibility has been tested with the compilers and processors / microcontrollers listed below. Using the driver with other ANSI compliant C compilers and devices should not present significant problems.</div>
</td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td height="15" align="left" valign="middle"></td>
<td width="10"></td>
<td></td>
</tr>
<tr>
<td width="140" height="50" align="center" valign="middle">
<div><a href="http://www.rowley.co.uk/" target="_blank"><img src="/images/compilers/rowley_crossworks.jpg" border="0" alt="" width="117" height="40" /></a></div>
</td>
<td class="main"></td>
<td class="main">
<div>Tested with the Rowley Associates CrossWorks for ARM C Compiler, with sample project for the NXP LPC23xx family of 32 bit ARM microcontrollers included.</div>
</td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td height="15" align="left" valign="middle"></td>
<td width="10"></td>
<td></td>
</tr>
<tr>
<td width="140" height="50" align="center" valign="middle">
<div><a href="http://www.microchip.com/" target="_blank"><img src="/images/compilers/microchip_small_logo.gif" border="0" alt="" width="37" height="39" /></a></div>
</td>
<td class="main"></td>
<td class="main">
<div>Tested with the Microchip C18 MPLAB C Compiler for PIC18 family of 8 bit microcontrollers with sample project included. Free version of the compiler available from Microchip.</div>
</td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td height="15" align="left" valign="middle"></td>
<td width="10"></td>
<td></td>
</tr>
<tr>
<td width="140" height="50" align="center" valign="middle">
<div><a href="http://www.microchip.com/" target="_blank"><img src="/images/compilers/microchip_small_logo.gif" border="0" alt="" width="37" height="39" /></a></div>
</td>
<td class="main"></td>
<td class="main">
<div>Tested with the Microchip C30 MPLAB C Compiler for PIC24 family of 16 bit microcontrollers and dsPIC  digital signal controllers with sample project included. Free version of the compiler available from Microchip.</div>
</td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td height="15" align="left" valign="middle"></td>
<td width="10"></td>
<td></td>
</tr>
<tr>
<td width="140" height="50" align="center" valign="middle">
<div><a href="http://www.microchip.com/" target="_blank"><img src="/images/compilers/microchip_small_logo.gif" border="0" alt="" width="37" height="39" /></a></div>
</td>
<td class="main"></td>
<td class="main">
<div>Tested with the Microchip C32 MPLAB C Compiler for PIC32 family of 32 bit microcontrollers. Free version of the compiler available from Microchip.</div>
</td>
</tr>
</tbody>
</table>
<p>[product_section_start:product_page_section_documentation.png]</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td height="15" align="left" valign="middle"></td>
<td></td>
</tr>
<tr>
<td width="60" align="left" valign="middle">
<div><a href="http://www.secure-digital-card-source-code-driver.com/" target="_blank"><img src="/images/icons/book_icon_boxed.gif" border="0" alt="" width="46" height="46" /></a></div>
</td>
<td class="main">View the project technical manual</td>
</tr>
<tr>
<td height="15"></td>
<td></td>
</tr>
<tr>
<td height="20"><a href="http://www.secure-digital-card-source-code-driver.com/category/revision-history" target="_blank"><img src="/images/icons/pdf_icon_boxed.gif" border="0" alt="" width="46" height="46" /></a></td>
<td class="main">View the most recent project revision history (useful for past customers to check for any modifications since they received their files)</td>
</tr>
<tr>
<td height="15"></td>
<td></td>
</tr>
<tr>
<td height="20"><a href="/source-code/resources/signal-noise-issues-with-mmc-sd-memory-cards-clocked-devices-in-general" target="_blank"><img src="/images/icons/book_icon_boxed.gif" border="0" alt="" width="46" height="46" /></a></td>
<td class="main">Please also read our application note regarding SPI data bus signal noise.</td>
</tr>
<tr>
<td height="20"></td>
<td></td>
</tr>
</tbody>
</table>
<p>[product_section_start:product_page_section_sample_files.png]</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td height="15" align="left" valign="middle"></td>
<td></td>
</tr>
<tr>
<td width="60" align="left" valign="middle">
<div><a href="/download/mmc_sd_memory_card_driver_sample_project_files.zip" target="_blank"><img src="/images/icons/zip_boxed.gif" border="0" alt="" width="46" height="46" /></a></div>
</td>
<td class="main">Download sample source code files</td>
</tr>
<tr>
<td height="20"></td>
<td></td>
</tr>
</tbody>
</table>
<p>[product_section_start:product_page_section_alternatives.png]</p>
<p>A version of this driver designed for CompactFlash memory cards is also available &#8211; click <a href="/source-code/memory/compact-flash-memory-cards/compact-flash-memory-card-fat16-fat32-driver;"><span style="text-decoration: underline;">here</span></a>.</p>
<p>[product_section_start:product_info_include_1]</p>
<p>[product_section_start:place_order]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.embedded-code.com/source-code/memory/secure-digital-mmc-memory-cards/secure-digital-mmc-memory-card-fat16-fat32-driver/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CompactFlash Memory Card FAT16 / FAT32 Driver</title>
		<link>http://www.embedded-code.com/source-code/memory/compact-flash-memory-cards/compact-flash-memory-card-fat16-fat32-driver</link>
		<comments>http://www.embedded-code.com/source-code/memory/compact-flash-memory-cards/compact-flash-memory-card-fat16-fat32-driver#comments</comments>
		<pubDate>Mon, 05 Apr 2010 12:28:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CompactFlash Memory Cards]]></category>

		<guid isPermaLink="false">http://www.embedded-code.com/source-code/?p=131</guid>
		<description><![CDATA[[ProductCodeName:memory_compactflash_compactflash_memory_card_driver] [product_image:/images/products/product_compact_flash_driver.png] [product_price_private:55.00] (0 = not available) [product_price_commercial:110.00] [product_price_upgrade:65.00] (0 = not available) [product_price_renew:25.00] (0 = not available) [ProductType:0] (0=normal, 1=quick project (must be 1 char) [product_attributes_end] [product_section_start:product_page_section_overview.png] CompactFlash memory cards provide a very convenient and inexpensive means of storing large quantities of data on a removable card. However providing a FAT16 / FAT 32 [...]]]></description>
			<content:encoded><![CDATA[<p>[ProductCodeName:memory_compactflash_compactflash_memory_card_driver]<br />
[product_image:/images/products/product_compact_flash_driver.png]<br />
[product_price_private:55.00] (0 = not available)<br />
[product_price_commercial:110.00]<br />
[product_price_upgrade:65.00] (0 = not available)<br />
[product_price_renew:25.00] (0 = not available)<br />
[ProductType:0] (0=normal, 1=quick project (must be 1 char)<br />
[product_attributes_end]<br />
<span id="more-131"></span></p>
<p>[product_section_start:product_page_section_overview.png]</p>
<p>CompactFlash memory cards provide a very convenient and inexpensive means of storing large quantities of data on a removable card. However providing a FAT16 / FAT 32 driver for a CompactFlash card, so that the files on the card may also be written and read by a PC is a daunting and complex task.</p>
<p>This CompactFlash card driver provides standard C library fopen() etc functions for FAT16 and FAT32 formatted CompactFlash cards, allowing you to add a CompactFlash card interface to your project with ease.</p>
<p>[product_section_start:product_page_section_details.png]</p>
<p>The driver provides the following main features:-</p>
<ul>
<li>Designed for both FAT16 and FAT32 formatted CompactFlash cards.</li>
<li>Optimised for embedded designs. Only a single 512 data buffer is required for all operations. (It is not possible to write to CompactFlash cards without a 512 byte buffer as sectors have to be read to local memory, modified and written back as a whole).</li>
<li>Intelligent use of the local ram sector buffer. Read and writes of sector data only occur when necessary, avoiding unnecessary and slow repeated read or write operations to the CompactFlash card.</li>
<li>Optimised file delete function for fast deleting of large files. Instead of altering each FAT table entry one at a time, a complete sector of FAT table entries are altered in one operation before writing back to the card, resulting in a large speed improvement.</li>
<li>Provides the following standard ANSI-C functions:- fopen, fseek, ftell, fgetpos, fsetpos, ffs_rewind, fputc, putc, fgetc, getc, fputs, fgets, fwrite, fread, fflush, fclose, remove, rename, clearer, feof and ferror</li>
<li>Standard DOS ‘*’ and ‘?’ wildcard characters may be used in file operations.</li>
<li>Multiple files may be opened and accessed at the same time.</li>
<li>Detailed project technical manual with a wealth  of information on the FAT filing system and the structure of a FAT disk / memory card.</li>
<li>No reliance on compiler specific libraries.</li>
<li>Full source code supplied for you to use and modify as required.</li>
</ul>
<p><strong>Don&#8217;t think you need FAT32?</strong><br />
You may think that you don’t need anything more than FAT16 for your application if you don’t plan to store more than 2GB of data on a CompactFlash card. After all, many embedded applications only need to store relatively small amounts of data. However CompactFlash cards with capacities greater than 256MB are typically supplied pre-formatted with FAT32. Also Windows  will typically format a CompactFlash card with a capacity greater than 32MB as FAT32 by default. This is because FAT32 uses larger volumes more efficiently than FAT16 and is also less susceptible to a single point of failure due to the use of a backup copy of critical data structures in the boot record. Therefore if you use a driver that only supports FAT16 for your application your users will need to find a PC with a CompactFlash adaptor to re-format larger capacity cards to be FAT16 before they can be used with your device. You also run the risk of increased technical support demands from users who haven’t read your instructions or don&#8217;t understand how to format a card as FAT16 instead of the default FAT32 and can’t work out why their new CompactFlash card won’t work in your device. Using a driver that supports FAT16 and FAT32 doesn&#8217;t result in a large amount of additional code space by today’s standards, as the two systems are very similar, and it makes life a lot easier for you and your users.</p>
<p>[product_section_start:product_page_section_specifications.png]</p>
<p><strong>Hardware Specifications</strong><br />
The driver is designed to support 8 bit CompactFlash card interfaces.<br />
For full specifications please see the project technical manual.</p>
<p>[product_section_start:product_page_section_compilers.png]</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td height="15" align="left" valign="middle"></td>
<td width="10"></td>
<td></td>
</tr>
<tr>
<td width="140" height="50" align="center" valign="middle">
<div><img src="/images/compilers/ansi_c_compiler.jpg" border="0" alt="" width="140" height="40" /></div>
</td>
<td class="main"></td>
<td class="main">
<div>This source code product is written in C and has been designed to be used with any ANSI compliant C compiler on any platform. Direct compatibility has been tested with the compilers and processors / microcontrollers listed below. Using the driver with other ANSI compliant C compilers and devices should not present significant problems.</div>
</td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td height="15" align="left" valign="middle"></td>
<td width="10"></td>
<td></td>
</tr>
<tr>
<td width="140" height="50" align="center" valign="middle">
<div><a href="http://www.microchip.com/" target="_blank"><img src="/images/compilers/microchip_small_logo.gif" border="0" alt="" width="37" height="39" /></a></div>
</td>
<td class="main"></td>
<td class="main">
<div>Tested with the Microchip C18 MPLAB C Compiler for PIC18 family of 8 bit microcontrollers with sample project included. Free version of the compiler available from Microchip.</div>
</td>
</tr>
</tbody>
</table>
<p>[product_section_start:product_page_section_documentation.png]</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td height="15" align="left" valign="middle"></td>
<td></td>
</tr>
<tr>
<td width="60" align="left" valign="middle">
<div><a href="/ec_includes/manuals/compactflash_memory_card_driver_technical_manual.php" target="_blank"><img src="/images/icons/book_icon_boxed.gif" border="0" alt="" width="46" height="46" /></a></div>
</td>
<td class="main">View the project technical manual</td>
</tr>
<tr>
<td height="15"></td>
<td></td>
</tr>
<tr>
<td height="20"><a href="/download/compactflash_memory_card_driver_revision_history.pdf" target="_blank"><img src="/images/icons/pdf_icon_boxed.gif" border="0" alt="" width="46" height="46" /></a></td>
<td class="main">View the most recent project revision history (useful for past customers to check for any modifications since they received their files)</td>
</tr>
<tr>
<td height="20"></td>
<td></td>
</tr>
</tbody>
</table>
<p>[product_section_start:product_page_section_sample_files.png]</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td height="15" align="left" valign="middle"></td>
<td></td>
</tr>
<tr>
<td width="60" align="left" valign="middle">
<div><a href="/download/compactflash_memory_card_driver_sample_project_files.zip" target="_blank"><img src="/images/icons/zip_boxed.gif" border="0" alt="" width="46" height="46" /></a></div>
</td>
<td class="main">Download sample source code files</td>
</tr>
<tr>
<td height="20"></td>
<td></td>
</tr>
</tbody>
</table>
<p>[product_section_start:product_page_section_alternatives.png]</p>
<p>A version of this driver designed for MMC (MultiMediaCard) and SD (Secure Digital) memory cards is also available &#8211; click <a href="/source-code/memory/secure-digital-mmc-memory-cards/secure-digital-mmc-memory-card-fat16-fat32-driver;"><span style="text-decoration: underline;">here</span></a>.</p>
<p>[product_section_start:product_info_include_1]</p>
<p>[product_section_start:place_order]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.embedded-code.com/source-code/memory/compact-flash-memory-cards/compact-flash-memory-card-fat16-fat32-driver/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

