Files
TweinStein/Documentation/html/e_disk_8h.html

711 lines
42 KiB
HTML
Raw Normal View History

2026-06-12 02:55:04 -07:00
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>RTOS_MSPM0: RTOS_Labs_common/eDisk.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="RobotSensors.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">RTOS_MSPM0
&#160;<span id="projectnumber">1.1</span>
</div>
<div id="projectbrief">ECE445M starter code</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d9737668015ddda3d9b152d7c8d1103c.html">RTOS_Labs_common</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">eDisk.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>low-level SDC driver
<a href="#details">More...</a></p>
<p><a href="e_disk_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a1dd0d2b46dce637878416d489d2ddde2"><td class="memItemLeft" align="right" valign="top"><a id="a1dd0d2b46dce637878416d489d2ddde2"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="e_disk_8h.html#a1dd0d2b46dce637878416d489d2ddde2">_USE_WRITE</a>&#160;&#160;&#160;1</td></tr>
<tr class="memdesc:a1dd0d2b46dce637878416d489d2ddde2"><td class="mdescLeft">&#160;</td><td class="mdescRight">set to 1 to enable disk write <br /></td></tr>
<tr class="separator:a1dd0d2b46dce637878416d489d2ddde2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afe6d1224687dede333375a2475c78ff6"><td class="memItemLeft" align="right" valign="top"><a id="afe6d1224687dede333375a2475c78ff6"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="e_disk_8h.html#afe6d1224687dede333375a2475c78ff6">_USE_IOCTL</a>&#160;&#160;&#160;1</td></tr>
<tr class="memdesc:afe6d1224687dede333375a2475c78ff6"><td class="mdescLeft">&#160;</td><td class="mdescRight">set to 1 to enable ioctl() <br /></td></tr>
<tr class="separator:afe6d1224687dede333375a2475c78ff6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd6503c70d862b979a3f7080a59e9acd"><td class="memItemLeft" align="right" valign="top"><a id="abd6503c70d862b979a3f7080a59e9acd"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="e_disk_8h.html#abd6503c70d862b979a3f7080a59e9acd">STA_NOINIT</a>&#160;&#160;&#160;0x01 /* Drive not initialized */</td></tr>
<tr class="memdesc:abd6503c70d862b979a3f7080a59e9acd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disk Status Bits (DSTATUS) <br /></td></tr>
<tr class="separator:abd6503c70d862b979a3f7080a59e9acd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec625080763d6cf487e550a6c9a2dd19"><td class="memItemLeft" align="right" valign="top"><a id="aec625080763d6cf487e550a6c9a2dd19"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>STA_NODISK</b>&#160;&#160;&#160;0x02 /* No medium in the drive */</td></tr>
<tr class="separator:aec625080763d6cf487e550a6c9a2dd19"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9ec6dc5f6620a33fabe388d3a111ca8c"><td class="memItemLeft" align="right" valign="top"><a id="a9ec6dc5f6620a33fabe388d3a111ca8c"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>STA_PROTECT</b>&#160;&#160;&#160;0x04 /* Write protected */</td></tr>
<tr class="separator:a9ec6dc5f6620a33fabe388d3a111ca8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b3c492f9aec325f0655941b75256f3c"><td class="memItemLeft" align="right" valign="top"><a id="a1b3c492f9aec325f0655941b75256f3c"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>CTRL_SYNC</b>&#160;&#160;&#160;0 /* Complete pending write process (needed at _FS_READONLY == 0) */</td></tr>
<tr class="separator:a1b3c492f9aec325f0655941b75256f3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a570216006f6a8fc4e1698b1bbb2d1dde"><td class="memItemLeft" align="right" valign="top"><a id="a570216006f6a8fc4e1698b1bbb2d1dde"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>GET_SECTOR_COUNT</b>&#160;&#160;&#160;1 /* Get media size (needed at _USE_MKFS == 1) */</td></tr>
<tr class="separator:a570216006f6a8fc4e1698b1bbb2d1dde"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac73b5cf2135cbd459d109b96c9aa346a"><td class="memItemLeft" align="right" valign="top"><a id="ac73b5cf2135cbd459d109b96c9aa346a"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>GET_SECTOR_SIZE</b>&#160;&#160;&#160;2 /* Get sector size (needed at _MAX_SS != _MIN_SS) */</td></tr>
<tr class="separator:ac73b5cf2135cbd459d109b96c9aa346a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec3bb4dfe075d0ba2f3b07b300a95500"><td class="memItemLeft" align="right" valign="top"><a id="aec3bb4dfe075d0ba2f3b07b300a95500"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>GET_BLOCK_SIZE</b>&#160;&#160;&#160;3 /* Get erase block size (needed at _USE_MKFS == 1) */</td></tr>
<tr class="separator:aec3bb4dfe075d0ba2f3b07b300a95500"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af09fd84bea8d4e889e272471f44d60d6"><td class="memItemLeft" align="right" valign="top"><a id="af09fd84bea8d4e889e272471f44d60d6"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>CTRL_TRIM</b>&#160;&#160;&#160;4 /* Inform device that the data on the block of sectors is no longer used (needed at _USE_TRIM == 1) */</td></tr>
<tr class="separator:af09fd84bea8d4e889e272471f44d60d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:add07021167069f5914211a2f8830fabb"><td class="memItemLeft" align="right" valign="top"><a id="add07021167069f5914211a2f8830fabb"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>CTRL_FORMAT</b>&#160;&#160;&#160;5 /* Create physical format on the media */</td></tr>
<tr class="separator:add07021167069f5914211a2f8830fabb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a69bec9079062f809c3586977b2dc5d79"><td class="memItemLeft" align="right" valign="top"><a id="a69bec9079062f809c3586977b2dc5d79"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>CTRL_POWER_IDLE</b>&#160;&#160;&#160;6 /* Put the device idle state */</td></tr>
<tr class="separator:a69bec9079062f809c3586977b2dc5d79"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa1f5a55ea2a24d274c16e51c111c97d8"><td class="memItemLeft" align="right" valign="top"><a id="aa1f5a55ea2a24d274c16e51c111c97d8"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>CTRL_POWER_OFF</b>&#160;&#160;&#160;7 /* Put the device off state */</td></tr>
<tr class="separator:aa1f5a55ea2a24d274c16e51c111c97d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af40e5cf3000553a978ff6e30dae70858"><td class="memItemLeft" align="right" valign="top"><a id="af40e5cf3000553a978ff6e30dae70858"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>CTRL_LOCK</b>&#160;&#160;&#160;8 /* Lock media removal */</td></tr>
<tr class="separator:af40e5cf3000553a978ff6e30dae70858"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d06770de580667138ca6101ae5138ac"><td class="memItemLeft" align="right" valign="top"><a id="a5d06770de580667138ca6101ae5138ac"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>CTRL_UNLOCK</b>&#160;&#160;&#160;9 /* Unlock media removal */</td></tr>
<tr class="separator:a5d06770de580667138ca6101ae5138ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5e40e16d2d7ce196858950f070b9ec03"><td class="memItemLeft" align="right" valign="top"><a id="a5e40e16d2d7ce196858950f070b9ec03"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>CTRL_EJECT</b>&#160;&#160;&#160;10 /* Eject media */</td></tr>
<tr class="separator:a5e40e16d2d7ce196858950f070b9ec03"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aba3a81a9a47c7d1bf3ac7749bc72dcfd"><td class="memItemLeft" align="right" valign="top"><a id="aba3a81a9a47c7d1bf3ac7749bc72dcfd"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>MMC_GET_TYPE</b>&#160;&#160;&#160;50 /* Get card type */</td></tr>
<tr class="separator:aba3a81a9a47c7d1bf3ac7749bc72dcfd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae3b858b81287929f7c7bea3b7aec3087"><td class="memItemLeft" align="right" valign="top"><a id="ae3b858b81287929f7c7bea3b7aec3087"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>MMC_GET_CSD</b>&#160;&#160;&#160;51 /* Get CSD */</td></tr>
<tr class="separator:ae3b858b81287929f7c7bea3b7aec3087"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a17ad303dd18b19a4c90ab30a8a1c14c4"><td class="memItemLeft" align="right" valign="top"><a id="a17ad303dd18b19a4c90ab30a8a1c14c4"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>MMC_GET_CID</b>&#160;&#160;&#160;52 /* Get CID */</td></tr>
<tr class="separator:a17ad303dd18b19a4c90ab30a8a1c14c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff118ba6bd7a9fe7699cee049cff5d6c"><td class="memItemLeft" align="right" valign="top"><a id="aff118ba6bd7a9fe7699cee049cff5d6c"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>MMC_GET_OCR</b>&#160;&#160;&#160;53 /* Get OCR */</td></tr>
<tr class="separator:aff118ba6bd7a9fe7699cee049cff5d6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5cc43c8449b872e16ea5ab42592f793e"><td class="memItemLeft" align="right" valign="top"><a id="a5cc43c8449b872e16ea5ab42592f793e"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>MMC_GET_SDSTAT</b>&#160;&#160;&#160;54 /* Get SD status */</td></tr>
<tr class="separator:a5cc43c8449b872e16ea5ab42592f793e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a23f5fff3341e98825ea1f7367fd09f1a"><td class="memItemLeft" align="right" valign="top"><a id="a23f5fff3341e98825ea1f7367fd09f1a"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>ATA_GET_REV</b>&#160;&#160;&#160;60 /* Get F/W revision */</td></tr>
<tr class="separator:a23f5fff3341e98825ea1f7367fd09f1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a31f556ab98ab80c39058b38d9283865d"><td class="memItemLeft" align="right" valign="top"><a id="a31f556ab98ab80c39058b38d9283865d"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>ATA_GET_MODEL</b>&#160;&#160;&#160;61 /* Get model name */</td></tr>
<tr class="separator:a31f556ab98ab80c39058b38d9283865d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a469c4f989757ee1ee404134fea3c74ba"><td class="memItemLeft" align="right" valign="top"><a id="a469c4f989757ee1ee404134fea3c74ba"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>ATA_GET_SN</b>&#160;&#160;&#160;62 /* Get serial number */</td></tr>
<tr class="separator:a469c4f989757ee1ee404134fea3c74ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac52ec66c278308382fdf7b2c57f0ad8c"><td class="memItemLeft" align="right" valign="top"><a id="ac52ec66c278308382fdf7b2c57f0ad8c"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>CT_MMC</b>&#160;&#160;&#160;0x01 /* MMC ver 3 */</td></tr>
<tr class="separator:ac52ec66c278308382fdf7b2c57f0ad8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad1c9fc863ec15d3320b3850dc571626e"><td class="memItemLeft" align="right" valign="top"><a id="ad1c9fc863ec15d3320b3850dc571626e"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>CT_SD1</b>&#160;&#160;&#160;0x02 /* SD ver 1 */</td></tr>
<tr class="separator:ad1c9fc863ec15d3320b3850dc571626e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0db1b71113e73184a5ba511e7020a922"><td class="memItemLeft" align="right" valign="top"><a id="a0db1b71113e73184a5ba511e7020a922"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>CT_SD2</b>&#160;&#160;&#160;0x04 /* SD ver 2 */</td></tr>
<tr class="separator:a0db1b71113e73184a5ba511e7020a922"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae76d94ac83c68d1f025cb0bcad77fa5d"><td class="memItemLeft" align="right" valign="top"><a id="ae76d94ac83c68d1f025cb0bcad77fa5d"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>CT_SDC</b>&#160;&#160;&#160;(CT_SD1|CT_SD2) /* SD */</td></tr>
<tr class="separator:ae76d94ac83c68d1f025cb0bcad77fa5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d48ce54c27f4f60666309e8627fab47"><td class="memItemLeft" align="right" valign="top"><a id="a7d48ce54c27f4f60666309e8627fab47"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>CT_BLOCK</b>&#160;&#160;&#160;0x08 /* Block addressing */</td></tr>
<tr class="separator:a7d48ce54c27f4f60666309e8627fab47"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adaaf74fb14f944682c41a495b64ede08"><td class="memItemLeft" align="right" valign="top"><a id="adaaf74fb14f944682c41a495b64ede08"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>_DISKIO</b></td></tr>
<tr class="separator:adaaf74fb14f944682c41a495b64ede08"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:ae5275e848e7ce7204e4ef11bc4523ced"><td class="memItemLeft" align="right" valign="top"><a id="ae5275e848e7ce7204e4ef11bc4523ced"></a>
typedef signed int&#160;</td><td class="memItemRight" valign="bottom"><b>INT</b></td></tr>
<tr class="separator:ae5275e848e7ce7204e4ef11bc4523ced"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a36cb3b01d81ffd844bbbfb54003e06ec"><td class="memItemLeft" align="right" valign="top"><a id="a36cb3b01d81ffd844bbbfb54003e06ec"></a>
typedef unsigned int&#160;</td><td class="memItemRight" valign="bottom"><b>UINT</b></td></tr>
<tr class="separator:a36cb3b01d81ffd844bbbfb54003e06ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abdfff23a0f3483b45f7abc457927a1e8"><td class="memItemLeft" align="right" valign="top"><a id="abdfff23a0f3483b45f7abc457927a1e8"></a>
typedef signed char&#160;</td><td class="memItemRight" valign="bottom"><b>CHAR</b></td></tr>
<tr class="separator:abdfff23a0f3483b45f7abc457927a1e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4f4bb67531a9bf6f0b9c6ad76aeba587"><td class="memItemLeft" align="right" valign="top"><a id="a4f4bb67531a9bf6f0b9c6ad76aeba587"></a>
typedef unsigned char&#160;</td><td class="memItemRight" valign="bottom"><b>UCHAR</b></td></tr>
<tr class="separator:a4f4bb67531a9bf6f0b9c6ad76aeba587"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ae1dab0fb4b072a66584546209e7d58"><td class="memItemLeft" align="right" valign="top"><a id="a4ae1dab0fb4b072a66584546209e7d58"></a>
typedef unsigned char&#160;</td><td class="memItemRight" valign="bottom"><b>BYTE</b></td></tr>
<tr class="separator:a4ae1dab0fb4b072a66584546209e7d58"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a439bf4effbb8f7831abda94bbbb45f1c"><td class="memItemLeft" align="right" valign="top"><a id="a439bf4effbb8f7831abda94bbbb45f1c"></a>
typedef signed short&#160;</td><td class="memItemRight" valign="bottom"><b>SHORT</b></td></tr>
<tr class="separator:a439bf4effbb8f7831abda94bbbb45f1c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5850d5316caf7f4cedd742fdf8cd7c02"><td class="memItemLeft" align="right" valign="top"><a id="a5850d5316caf7f4cedd742fdf8cd7c02"></a>
typedef unsigned short&#160;</td><td class="memItemRight" valign="bottom"><b>USHORT</b></td></tr>
<tr class="separator:a5850d5316caf7f4cedd742fdf8cd7c02"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a197942eefa7db30960ae396d68339b97"><td class="memItemLeft" align="right" valign="top"><a id="a197942eefa7db30960ae396d68339b97"></a>
typedef unsigned short&#160;</td><td class="memItemRight" valign="bottom"><b>WORD</b></td></tr>
<tr class="separator:a197942eefa7db30960ae396d68339b97"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a73a5fec9b19159a6647fbf000017b221"><td class="memItemLeft" align="right" valign="top"><a id="a73a5fec9b19159a6647fbf000017b221"></a>
typedef signed long&#160;</td><td class="memItemRight" valign="bottom"><b>LONG</b></td></tr>
<tr class="separator:a73a5fec9b19159a6647fbf000017b221"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af632da489ebc3708ec3ab6791ee53fa4"><td class="memItemLeft" align="right" valign="top"><a id="af632da489ebc3708ec3ab6791ee53fa4"></a>
typedef unsigned long&#160;</td><td class="memItemRight" valign="bottom"><b>ULONG</b></td></tr>
<tr class="separator:af632da489ebc3708ec3ab6791ee53fa4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad342ac907eb044443153a22f964bf0af"><td class="memItemLeft" align="right" valign="top"><a id="ad342ac907eb044443153a22f964bf0af"></a>
typedef unsigned long&#160;</td><td class="memItemRight" valign="bottom"><b>DWORD</b></td></tr>
<tr class="separator:ad342ac907eb044443153a22f964bf0af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adba6790898ce4029c20a34b898ce73c1"><td class="memItemLeft" align="right" valign="top"><a id="adba6790898ce4029c20a34b898ce73c1"></a>
typedef BYTE&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="e_disk_8h.html#adba6790898ce4029c20a34b898ce73c1">DSTATUS</a></td></tr>
<tr class="memdesc:adba6790898ce4029c20a34b898ce73c1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Status of Disk Functions. <br /></td></tr>
<tr class="separator:adba6790898ce4029c20a34b898ce73c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:a3e5b8192e7d9ffaf3542f1210aec18dd"><td class="memItemLeft" align="right" valign="top"><a id="a3e5b8192e7d9ffaf3542f1210aec18dd"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="e_disk_8h.html#a3e5b8192e7d9ffaf3542f1210aec18dd">BOOL</a> { <b>FALSE</b> = 0
, <b>TRUE</b>
}</td></tr>
<tr class="memdesc:a3e5b8192e7d9ffaf3542f1210aec18dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Boolean type. <br /></td></tr>
<tr class="separator:a3e5b8192e7d9ffaf3542f1210aec18dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aacdfef1dad6565f65c26d12fe0ea4b2b"><td class="memItemLeft" align="right" valign="top"><a id="aacdfef1dad6565f65c26d12fe0ea4b2b"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><b>DRESULT</b> { <br />
&#160;&#160;<b>RES_OK</b> = 0
, <b>RES_ERROR</b>
, <b>RES_WRPRT</b>
, <b>RES_NOTRDY</b>
, <br />
&#160;&#160;<b>RES_PARERR</b>
<br />
}</td></tr>
<tr class="separator:aacdfef1dad6565f65c26d12fe0ea4b2b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a21fc1fc0f4ee284014ed5a79c90b503a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="e_disk_8h.html#adba6790898ce4029c20a34b898ce73c1">DSTATUS</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="e_disk_8h.html#a21fc1fc0f4ee284014ed5a79c90b503a">eDisk_Init</a> (BYTE drive)</td></tr>
<tr class="memdesc:a21fc1fc0f4ee284014ed5a79c90b503a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize the interface between microcontroller and the SD card. <a href="e_disk_8h.html#a21fc1fc0f4ee284014ed5a79c90b503a">More...</a><br /></td></tr>
<tr class="separator:a21fc1fc0f4ee284014ed5a79c90b503a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a661c0a5ef20fa55f5071904833038caa"><td class="memItemLeft" align="right" valign="top"><a class="el" href="e_disk_8h.html#adba6790898ce4029c20a34b898ce73c1">DSTATUS</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="e_disk_8h.html#a661c0a5ef20fa55f5071904833038caa">eDisk_Status</a> (BYTE drive)</td></tr>
<tr class="memdesc:a661c0a5ef20fa55f5071904833038caa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check the status of the SD card. <a href="e_disk_8h.html#a661c0a5ef20fa55f5071904833038caa">More...</a><br /></td></tr>
<tr class="separator:a661c0a5ef20fa55f5071904833038caa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac52891d5b5d2b157f0bc310800cce66e"><td class="memItemLeft" align="right" valign="top">DRESULT&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="e_disk_8h.html#ac52891d5b5d2b157f0bc310800cce66e">eDisk_Read</a> (BYTE drv, BYTE *buff, DWORD sector, UINT count)</td></tr>
<tr class="memdesc:ac52891d5b5d2b157f0bc310800cce66e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read bytes from SD card. <a href="e_disk_8h.html#ac52891d5b5d2b157f0bc310800cce66e">More...</a><br /></td></tr>
<tr class="separator:ac52891d5b5d2b157f0bc310800cce66e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e3f430b02e2559332f96954810f7199"><td class="memItemLeft" align="right" valign="top">DRESULT&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="e_disk_8h.html#a6e3f430b02e2559332f96954810f7199">eDisk_ReadBlock</a> (BYTE *buff, DWORD sector)</td></tr>
<tr class="memdesc:a6e3f430b02e2559332f96954810f7199"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read 512-byte block from SD card. <a href="e_disk_8h.html#a6e3f430b02e2559332f96954810f7199">More...</a><br /></td></tr>
<tr class="separator:a6e3f430b02e2559332f96954810f7199"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b99eac5fe78ee21c8aee551ea3aee26"><td class="memItemLeft" align="right" valign="top">DRESULT&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="e_disk_8h.html#a1b99eac5fe78ee21c8aee551ea3aee26">eDisk_Write</a> (BYTE drv, const BYTE *buff, DWORD sector, UINT count)</td></tr>
<tr class="memdesc:a1b99eac5fe78ee21c8aee551ea3aee26"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write bytes to SD card. <a href="e_disk_8h.html#a1b99eac5fe78ee21c8aee551ea3aee26">More...</a><br /></td></tr>
<tr class="separator:a1b99eac5fe78ee21c8aee551ea3aee26"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afefd560492e5613d2ddcff84e1449dc3"><td class="memItemLeft" align="right" valign="top">DRESULT&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="e_disk_8h.html#afefd560492e5613d2ddcff84e1449dc3">eDisk_WriteBlock</a> (const BYTE *buff, DWORD sector)</td></tr>
<tr class="memdesc:afefd560492e5613d2ddcff84e1449dc3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write 512-byte block from SD card. <a href="e_disk_8h.html#afefd560492e5613d2ddcff84e1449dc3">More...</a><br /></td></tr>
<tr class="separator:afefd560492e5613d2ddcff84e1449dc3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab3ad33fe379379962edd4c549bbc9ffa"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="e_disk_8h.html#gab3ad33fe379379962edd4c549bbc9ffa">CS_Init</a> (void)</td></tr>
<tr class="memdesc:gab3ad33fe379379962edd4c549bbc9ffa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Configure SDC chip select. <a href="e_disk_8h.html#gab3ad33fe379379962edd4c549bbc9ffa">More...</a><br /></td></tr>
<tr class="separator:gab3ad33fe379379962edd4c549bbc9ffa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a045f8898a243c16aca4e64e069c49c03"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="e_disk_8h.html#a045f8898a243c16aca4e64e069c49c03">disk_timerproc</a> (void)</td></tr>
<tr class="memdesc:a045f8898a243c16aca4e64e069c49c03"><td class="mdescLeft">&#160;</td><td class="mdescRight">This should be called every 10 ms. <a href="e_disk_8h.html#a045f8898a243c16aca4e64e069c49c03">More...</a><br /></td></tr>
<tr class="separator:a045f8898a243c16aca4e64e069c49c03"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac822cf3c1768a2c35e4858cc99b8f53b"><td class="memItemLeft" align="right" valign="top">DRESULT&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="e_disk_8h.html#ac822cf3c1768a2c35e4858cc99b8f53b">disk_ioctl</a> (BYTE drv, BYTE cmd, void *buff)</td></tr>
<tr class="memdesc:ac822cf3c1768a2c35e4858cc99b8f53b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disk input/output. <a href="e_disk_8h.html#ac822cf3c1768a2c35e4858cc99b8f53b">More...</a><br /></td></tr>
<tr class="separator:ac822cf3c1768a2c35e4858cc99b8f53b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>low-level SDC driver </p>
<p>This version of the driver has been configured to operate on the ST7735R, so that both the SDC card and the LCD use the same SSI port, but have different chip selects. </p><dl class="section version"><dt>Version</dt><dd>V1.0 </dd></dl>
<dl class="section author"><dt>Author</dt><dd>Valvano </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>Copyright 2026 by Jonathan W. Valvano, <a href="#" onclick="location.href='mai'+'lto:'+'val'+'va'+'no@'+'ma'+'il.'+'ut'+'exa'+'s.'+'edu'; return false;">valva<span style="display: none;">.nosp@m.</span>no@m<span style="display: none;">.nosp@m.</span>ail.u<span style="display: none;">.nosp@m.</span>texa<span style="display: none;">.nosp@m.</span>s.edu</a>, </dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>AS-IS </dd></dl>
<dl class="section note"><dt>Note</dt><dd>For more information see <a href="http://users.ece.utexas.edu/~valvano/">http://users.ece.utexas.edu/~valvano/</a> </dd></dl>
<dl class="section date"><dt>Date</dt><dd>December 29, 2026 </dd></dl>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="gab3ad33fe379379962edd4c549bbc9ffa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab3ad33fe379379962edd4c549bbc9ffa">&#9670;&nbsp;</a></span>CS_Init()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void CS_Init </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Configure SDC chip select. </p>
<p>Enable SDC chip select, so it is an output </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">none</td><td></td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>none </dd></dl>
</div>
</div>
<a id="ac822cf3c1768a2c35e4858cc99b8f53b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac822cf3c1768a2c35e4858cc99b8f53b">&#9670;&nbsp;</a></span>disk_ioctl()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">DRESULT disk_ioctl </td>
<td>(</td>
<td class="paramtype">BYTE&#160;</td>
<td class="paramname"><em>drv</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">BYTE&#160;</td>
<td class="paramname"><em>cmd</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>buff</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Disk input/output. </p>
<p>General purpose function for all disk I/O </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">drv</td><td>(only drive 0 is supported) </td></tr>
<tr><td class="paramname">cmd</td><td>disk command </td></tr>
<tr><td class="paramname">buff</td><td>pointer to RAM input/output data </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>result (0 means OK) </dd></dl>
</div>
</div>
<a id="a045f8898a243c16aca4e64e069c49c03"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a045f8898a243c16aca4e64e069c49c03">&#9670;&nbsp;</a></span>disk_timerproc()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void disk_timerproc </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This should be called every 10 ms. </p>
<p>This implements timeout functions </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">none</td><td></td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>none </dd></dl>
</div>
</div>
<a id="a21fc1fc0f4ee284014ed5a79c90b503a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a21fc1fc0f4ee284014ed5a79c90b503a">&#9670;&nbsp;</a></span>eDisk_Init()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="e_disk_8h.html#adba6790898ce4029c20a34b898ce73c1">DSTATUS</a> eDisk_Init </td>
<td>(</td>
<td class="paramtype">BYTE&#160;</td>
<td class="paramname"><em>drive</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Initialize the interface between microcontroller and the SD card. </p>
<p>Turn on PLL. Since this program initializes the disk, it must run with the disk periodic task operating. </p><a class="anchor" id="init"></a>
<table class="doxtable">
<caption>Return parameter</caption>
<tr>
<th>Return </th><th>Value </th><th>Meaning </th></tr>
<tr>
<td>RES_OK </td><td>0x00 </td><td>Successful </td></tr>
<tr>
<td>STA_NOINIT </td><td>0x01 </td><td>Drive not initialized </td></tr>
<tr>
<td>STA_NODISK </td><td>0x02 </td><td>No medium in the drive </td></tr>
<tr>
<td>STA_PROTECT </td><td>0x04 </td><td>Write protected </td></tr>
</table>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">drive</td><td>number (only drive 0 is supported) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>status (0 means OK) </dd></dl>
</div>
</div>
<a id="ac52891d5b5d2b157f0bc310800cce66e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac52891d5b5d2b157f0bc310800cce66e">&#9670;&nbsp;</a></span>eDisk_Read()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">DRESULT eDisk_Read </td>
<td>(</td>
<td class="paramtype">BYTE&#160;</td>
<td class="paramname"><em>drv</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">BYTE *&#160;</td>
<td class="paramname"><em>buff</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">DWORD&#160;</td>
<td class="paramname"><em>sector</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">UINT&#160;</td>
<td class="paramname"><em>count</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Read bytes from SD card. </p>
<p>Read data from the SD card (write to RAM) </p><a class="anchor" id="read"></a>
<table class="doxtable">
<caption>Return parameter</caption>
<tr>
<th>Return </th><th>Value </th><th>Meaning </th></tr>
<tr>
<td>RES_OK </td><td>0x00 </td><td>Successful </td></tr>
<tr>
<td>RES_ERROR </td><td>0x01 </td><td>R/W Error </td></tr>
<tr>
<td>RES_WRPRT </td><td>0x02 </td><td>Write Protected </td></tr>
<tr>
<td>RES_NOTRDY </td><td>0x03 </td><td>Not Ready </td></tr>
<tr>
<td>RES_PARERR </td><td>0x04 </td><td>Invalid Parameter </td></tr>
</table>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">drv</td><td>(only drive 0 is supported) </td></tr>
<tr><td class="paramname">buff</td><td>pointer to an empty RAM buffer </td></tr>
<tr><td class="paramname">sector</td><td>sector number of SD card to read: 0,1,2,... </td></tr>
<tr><td class="paramname">count</td><td>number of sectors to read </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>result (0 means OK) </dd></dl>
</div>
</div>
<a id="a6e3f430b02e2559332f96954810f7199"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6e3f430b02e2559332f96954810f7199">&#9670;&nbsp;</a></span>eDisk_ReadBlock()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">DRESULT eDisk_ReadBlock </td>
<td>(</td>
<td class="paramtype">BYTE *&#160;</td>
<td class="paramname"><em>buff</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">DWORD&#160;</td>
<td class="paramname"><em>sector</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Read 512-byte block from SD card. </p>
<p>Read one block from the SD card (write to RAM) </p><a class="anchor" id="readBlock"></a>
<table class="doxtable">
<caption>Return parameter</caption>
<tr>
<th>Return </th><th>Value </th><th>Meaning </th></tr>
<tr>
<td>RES_OK </td><td>0x00 </td><td>Successful </td></tr>
<tr>
<td>RES_ERROR </td><td>0x01 </td><td>R/W Error </td></tr>
<tr>
<td>RES_WRPRT </td><td>0x02 </td><td>Write Protected </td></tr>
<tr>
<td>RES_NOTRDY </td><td>0x03 </td><td>Not Ready </td></tr>
<tr>
<td>RES_PARERR </td><td>0x04 </td><td>Invalid Parameter </td></tr>
</table>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">buff</td><td>pointer to an empty RAM buffer </td></tr>
<tr><td class="paramname">sector</td><td>sector number of SD card to read: 0,1,2,... </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>result (0 means OK) </dd></dl>
</div>
</div>
<a id="a661c0a5ef20fa55f5071904833038caa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a661c0a5ef20fa55f5071904833038caa">&#9670;&nbsp;</a></span>eDisk_Status()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="e_disk_8h.html#adba6790898ce4029c20a34b898ce73c1">DSTATUS</a> eDisk_Status </td>
<td>(</td>
<td class="paramtype">BYTE&#160;</td>
<td class="paramname"><em>drive</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Check the status of the SD card. </p>
<p>Checks the status of the secure digital care. </p><a class="anchor" id="status"></a>
<table class="doxtable">
<caption>Return parameter</caption>
<tr>
<th>Return </th><th>Value </th><th>Meaning </th></tr>
<tr>
<td>RES_OK </td><td>0x00 </td><td>Successful </td></tr>
<tr>
<td>STA_NOINIT </td><td>0x01 </td><td>Drive not initialized </td></tr>
<tr>
<td>STA_NODISK </td><td>0x02 </td><td>No medium in the drive </td></tr>
<tr>
<td>STA_PROTECT </td><td>0x04 </td><td>Write protected </td></tr>
</table>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">drive</td><td>number (only drive 0 is supported) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>status (0 means OK) </dd></dl>
</div>
</div>
<a id="a1b99eac5fe78ee21c8aee551ea3aee26"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1b99eac5fe78ee21c8aee551ea3aee26">&#9670;&nbsp;</a></span>eDisk_Write()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">DRESULT eDisk_Write </td>
<td>(</td>
<td class="paramtype">BYTE&#160;</td>
<td class="paramname"><em>drv</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const BYTE *&#160;</td>
<td class="paramname"><em>buff</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">DWORD&#160;</td>
<td class="paramname"><em>sector</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">UINT&#160;</td>
<td class="paramname"><em>count</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Write bytes to SD card. </p>
<p>write data to the SD card (read to RAM) </p><a class="anchor" id="write"></a>
<table class="doxtable">
<caption>Return parameter</caption>
<tr>
<th>Return </th><th>Value </th><th>Meaning </th></tr>
<tr>
<td>RES_OK </td><td>0x00 </td><td>Successful </td></tr>
<tr>
<td>RES_ERROR </td><td>0x01 </td><td>R/W Error </td></tr>
<tr>
<td>RES_WRPRT </td><td>0x02 </td><td>Write Protected </td></tr>
<tr>
<td>RES_NOTRDY </td><td>0x03 </td><td>Not Ready </td></tr>
<tr>
<td>RES_PARERR </td><td>0x04 </td><td>Invalid Parameter </td></tr>
</table>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">drv</td><td>(only drive 0 is supported) </td></tr>
<tr><td class="paramname">buff</td><td>pointer to RAM buffer with data </td></tr>
<tr><td class="paramname">sector</td><td>sector number of SD card to write: 0,1,2,... </td></tr>
<tr><td class="paramname">count</td><td>number of sectors to write </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>result (0 means OK) </dd></dl>
</div>
</div>
<a id="afefd560492e5613d2ddcff84e1449dc3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afefd560492e5613d2ddcff84e1449dc3">&#9670;&nbsp;</a></span>eDisk_WriteBlock()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">DRESULT eDisk_WriteBlock </td>
<td>(</td>
<td class="paramtype">const BYTE *&#160;</td>
<td class="paramname"><em>buff</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">DWORD&#160;</td>
<td class="paramname"><em>sector</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Write 512-byte block from SD card. </p>
<p>Write one block to the SD card (read to RAM) </p><a class="anchor" id="writeBlock"></a>
<table class="doxtable">
<caption>Return parameter</caption>
<tr>
<th>Return </th><th>Value </th><th>Meaning </th></tr>
<tr>
<td>RES_OK </td><td>0x00 </td><td>Successful </td></tr>
<tr>
<td>RES_ERROR </td><td>0x01 </td><td>R/W Error </td></tr>
<tr>
<td>RES_WRPRT </td><td>0x02 </td><td>Write Protected </td></tr>
<tr>
<td>RES_NOTRDY </td><td>0x03 </td><td>Not Ready </td></tr>
<tr>
<td>RES_PARERR </td><td>0x04 </td><td>Invalid Parameter </td></tr>
</table>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">buff</td><td>pointer to RAM buffer with 512 bytes of data </td></tr>
<tr><td class="paramname">sector</td><td>sector number of SD card to write: 0,1,2,... </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>result (0 means OK) </dd></dl>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>