Loading files
c02386ffcThis file is pinned to the selected release. Download the original to open it in your design tool.
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.11.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Metal Detector: C:/Users/Viktor/Desktop/labaratorni/Projects/Metal_Detector/software/Program/Display/Src/ili9341.c 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>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.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>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</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 id="projectrow">
<td id="projectalign">
<div id="projectname">Metal Detector
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()"> </span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.11.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
$(function(){initNavTree('ili9341_8c.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- 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">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#define-members">Macros</a> |
<a href="#func-members">Functions</a> |
<a href="#var-members">Variables</a> </div>
<div class="headertitle"><div class="title">ili9341.c File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Implementation file for the ILI9341 LCD driver.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include <string.h></code><br />
<code>#include <stdint.h></code><br />
<code>#include "<a class="el" href="ili9341_8h_source.html">ili9341.h</a>"</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:abe51e65f3263d4aa970f51b0b159ca01" id="r_abe51e65f3263d4aa970f51b0b159ca01"><td class="memItemLeft" align="right" valign="top"><a id="abe51e65f3263d4aa970f51b0b159ca01" name="abe51e65f3263d4aa970f51b0b159ca01"></a>
#define </td><td class="memItemRight" valign="bottom"><b>DMA_CHUNK_MAX_LEN</b>   (uint16_t)0xFFFFFF</td></tr>
<tr class="separator:abe51e65f3263d4aa970f51b0b159ca01"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a549a883f79aa5ee2af1209bef1858112" id="r_a549a883f79aa5ee2af1209bef1858112"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a549a883f79aa5ee2af1209bef1858112">ConvHL</a> (uint8_t *s, int32_t l)</td></tr>
<tr class="memdesc:a549a883f79aa5ee2af1209bef1858112"><td class="mdescLeft"> </td><td class="mdescRight">Converts high and low bytes. <br /></td></tr>
<tr class="separator:a549a883f79aa5ee2af1209bef1858112"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ad5cdca394aae512e37176b6a30332a68" id="r_ad5cdca394aae512e37176b6a30332a68"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#ad5cdca394aae512e37176b6a30332a68">ILI9341_Init</a> (void)</td></tr>
<tr class="memdesc:ad5cdca394aae512e37176b6a30332a68"><td class="mdescLeft"> </td><td class="mdescRight">Initializes the ILI9341 LCD. <br /></td></tr>
<tr class="separator:ad5cdca394aae512e37176b6a30332a68"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a32dc1a25dba771348cc10ccb2487cb87" id="r_a32dc1a25dba771348cc10ccb2487cb87"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a32dc1a25dba771348cc10ccb2487cb87">ILI9341_WriteCommand</a> (uint8_t cmd)</td></tr>
<tr class="memdesc:a32dc1a25dba771348cc10ccb2487cb87"><td class="mdescLeft"> </td><td class="mdescRight">Writes a command to the ILI9341 LCD. <br /></td></tr>
<tr class="separator:a32dc1a25dba771348cc10ccb2487cb87"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a2fd7f0b26c0ffcd016123e1393630f57" id="r_a2fd7f0b26c0ffcd016123e1393630f57"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a2fd7f0b26c0ffcd016123e1393630f57">ILI9341_WriteData</a> (uint8_t *data_buff, uint32_t data_len)</td></tr>
<tr class="memdesc:a2fd7f0b26c0ffcd016123e1393630f57"><td class="mdescLeft"> </td><td class="mdescRight">Writes data to the ILI9341 LCD. <br /></td></tr>
<tr class="separator:a2fd7f0b26c0ffcd016123e1393630f57"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a74e9c176e21ab18d5cafc8529f1dfe23" id="r_a74e9c176e21ab18d5cafc8529f1dfe23"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a74e9c176e21ab18d5cafc8529f1dfe23">ILI9341_SetWindow</a> (uint16_t x_axis_start, uint16_t x_axis_end, uint16_t y_axis_start, uint16_t y_axis_end)</td></tr>
<tr class="memdesc:a74e9c176e21ab18d5cafc8529f1dfe23"><td class="mdescLeft"> </td><td class="mdescRight">Sets the window area for the ILI9341 LCD. <br /></td></tr>
<tr class="separator:a74e9c176e21ab18d5cafc8529f1dfe23"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a93951349738b46ba84c4786d33afa71a" id="r_a93951349738b46ba84c4786d33afa71a"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a93951349738b46ba84c4786d33afa71a">ILI9341_FillWindowDMA</a> (uint8_t *buff, uint32_t buff_len)</td></tr>
<tr class="memdesc:a93951349738b46ba84c4786d33afa71a"><td class="mdescLeft"> </td><td class="mdescRight">Fills the window area of the ILI9341 LCD using DMA. <br /></td></tr>
<tr class="separator:a93951349738b46ba84c4786d33afa71a"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:aed7ce558686d97070d711d23b09039e1" id="r_aed7ce558686d97070d711d23b09039e1"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#aed7ce558686d97070d711d23b09039e1">ILI9341_FillWindow</a> (uint8_t *buff, uint32_t buff_len)</td></tr>
<tr class="memdesc:aed7ce558686d97070d711d23b09039e1"><td class="mdescLeft"> </td><td class="mdescRight">Fills the window area of the ILI9341 LCD. <br /></td></tr>
<tr class="separator:aed7ce558686d97070d711d23b09039e1"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ac864bb1c0150636af050c0613b7511dd" id="r_ac864bb1c0150636af050c0613b7511dd"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#ac864bb1c0150636af050c0613b7511dd">ILI9341_SPICmpltHandler</a> (void)</td></tr>
<tr class="memdesc:ac864bb1c0150636af050c0613b7511dd"><td class="mdescLeft"> </td><td class="mdescRight">Handles SPI DMA transfer completion. <br /></td></tr>
<tr class="separator:ac864bb1c0150636af050c0613b7511dd"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a38f8a77ec69173869a99d61674202dda" id="r_a38f8a77ec69173869a99d61674202dda"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a38f8a77ec69173869a99d61674202dda">ILI9341_Rotate</a> (uint16_t degrees, uint8_t bgr)</td></tr>
<tr class="memdesc:a38f8a77ec69173869a99d61674202dda"><td class="mdescLeft"> </td><td class="mdescRight">Rotates the ILI9341 LCD display. <br /></td></tr>
<tr class="separator:a38f8a77ec69173869a99d61674202dda"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:af9aace1b44b73111e15aa39f06f43456" id="r_af9aace1b44b73111e15aa39f06f43456"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="#af9aace1b44b73111e15aa39f06f43456">__attribute__</a> ((weak))</td></tr>
<tr class="memdesc:af9aace1b44b73111e15aa39f06f43456"><td class="mdescLeft"> </td><td class="mdescRight">Weak callback function for window fill completion. <br /></td></tr>
<tr class="separator:af9aace1b44b73111e15aa39f06f43456"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:af05b437ec963adb184588f800fea1d50" id="r_af05b437ec963adb184588f800fea1d50"><td class="memItemLeft" align="right" valign="top">SPI_HandleTypeDef * </td><td class="memItemRight" valign="bottom"><a class="el" href="#af05b437ec963adb184588f800fea1d50">ili9341_spi</a></td></tr>
<tr class="separator:af05b437ec963adb184588f800fea1d50"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ac17ecd08b266851a30f7995a58ef4843" id="r_ac17ecd08b266851a30f7995a58ef4843"><td class="memItemLeft" align="right" valign="top"><a id="ac17ecd08b266851a30f7995a58ef4843" name="ac17ecd08b266851a30f7995a58ef4843"></a>
static <a class="el" href="struct_i_l_i9341_current_buffer__t.html">ILI9341CurrentBuffer_t</a> </td><td class="memItemRight" valign="bottom"><b>_gILI9341CurrentBuffer</b> = {0}</td></tr>
<tr class="separator:ac17ecd08b266851a30f7995a58ef4843"><td class="memSeparator" colspan="2"> </td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Implementation file for the ILI9341 LCD driver. </p>
<p>This file contains the implementation of the ILI9341 LCD driver. It includes functions for initialization, command and data transmission, setting window areas, filling windows, and handling DMA completion. The driver is designed to interface with the ILI9341 LCD controller using SPI.</p>
<p>Created on: Apr 5, 2024 Author: Viktor </p>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="af9aace1b44b73111e15aa39f06f43456" name="af9aace1b44b73111e15aa39f06f43456"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af9aace1b44b73111e15aa39f06f43456">◆ </a></span>__attribute__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">__attribute__ </td>
<td>(</td>
<td class="paramtype">(weak)</td> <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Weak callback function for window fill completion. </p>
<p>This function is a weakly defined callback that can be overridden by the user. It is called when the window fill operation is completed. </p>
</div>
</div>
<a id="a549a883f79aa5ee2af1209bef1858112" name="a549a883f79aa5ee2af1209bef1858112"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a549a883f79aa5ee2af1209bef1858112">◆ </a></span>ConvHL()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void ConvHL </td>
<td>(</td>
<td class="paramtype">uint8_t *</td> <td class="paramname"><span class="paramname"><em>s</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t</td> <td class="paramname"><span class="paramname"><em>l</em></span> )</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Converts high and low bytes. </p>
<p>This function swaps the high and low bytes in the given buffer. It is used to convert the byte order of pixel data before sending it to the LCD.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">s</td><td>Pointer to the buffer. </td></tr>
<tr><td class="paramname">l</td><td>Length of the buffer. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="aed7ce558686d97070d711d23b09039e1" name="aed7ce558686d97070d711d23b09039e1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aed7ce558686d97070d711d23b09039e1">◆ </a></span>ILI9341_FillWindow()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ILI9341_FillWindow </td>
<td>(</td>
<td class="paramtype">uint8_t *</td> <td class="paramname"><span class="paramname"><em>buff</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t</td> <td class="paramname"><span class="paramname"><em>buff_len</em></span> )</td>
</tr>
</table>
</div><div class="memdoc">
<p>Fills the window area of the ILI9341 LCD. </p>
<p>This function fills the defined window area on the LCD with pixel data from a buffer. It converts the high and low bytes of the buffer, writes the RAM write (RAMWR) command, and transmits the data via SPI.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">buff</td><td>Pointer to the buffer containing the data to be written to the LCD. </td></tr>
<tr><td class="paramname">buff_len</td><td>Length of the data buffer. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a93951349738b46ba84c4786d33afa71a" name="a93951349738b46ba84c4786d33afa71a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a93951349738b46ba84c4786d33afa71a">◆ </a></span>ILI9341_FillWindowDMA()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ILI9341_FillWindowDMA </td>
<td>(</td>
<td class="paramtype">uint8_t *</td> <td class="paramname"><span class="paramname"><em>buff</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t</td> <td class="paramname"><span class="paramname"><em>buff_len</em></span> )</td>
</tr>
</table>
</div><div class="memdoc">
<p>Fills the window area of the ILI9341 LCD using DMA. </p>
<p>This function fills the defined window area on the LCD with pixel data from a buffer using DMA. It converts the high and low bytes of the buffer, writes the RAM write (RAMWR) command, and initiates the DMA transfer.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">buff</td><td>Pointer to the buffer containing the data to be written to the LCD. </td></tr>
<tr><td class="paramname">buff_len</td><td>Length of the data buffer. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ad5cdca394aae512e37176b6a30332a68" name="ad5cdca394aae512e37176b6a30332a68"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad5cdca394aae512e37176b6a30332a68">◆ </a></span>ILI9341_Init()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ILI9341_Init </td>
<td>(</td>
<td class="paramtype">void</td> <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Initializes the ILI9341 LCD. </p>
<p>This function initializes the ILI9341 LCD by sending a sequence of commands and data to set up the display. It performs a software reset, sets up power control, VCOM control, pixel format, and display orientation. It also configures frame rate and gamma settings if enabled. </p>
</div>
</div>
<a id="a38f8a77ec69173869a99d61674202dda" name="a38f8a77ec69173869a99d61674202dda"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a38f8a77ec69173869a99d61674202dda">◆ </a></span>ILI9341_Rotate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ILI9341_Rotate </td>
<td>(</td>
<td class="paramtype">uint16_t</td> <td class="paramname"><span class="paramname"><em>degrees</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t</td> <td class="paramname"><span class="paramname"><em>bgr</em></span> )</td>
</tr>
</table>
</div><div class="memdoc">
<p>Rotates the ILI9341 LCD display. </p>
<p>This function sets the memory access control (MADCTL) register to rotate the display by the specified angle. It can rotate the display by 0, 90, 180, or 270 degrees and optionally change the color order to BGR.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">degrees</td><td>Rotation angle in degrees (0, 90, 180, 270). </td></tr>
<tr><td class="paramname">bgr</td><td>BGR color order flag (1 for BGR, 0 for RGB). </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a74e9c176e21ab18d5cafc8529f1dfe23" name="a74e9c176e21ab18d5cafc8529f1dfe23"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a74e9c176e21ab18d5cafc8529f1dfe23">◆ </a></span>ILI9341_SetWindow()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ILI9341_SetWindow </td>
<td>(</td>
<td class="paramtype">uint16_t</td> <td class="paramname"><span class="paramname"><em>x_axis_start</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t</td> <td class="paramname"><span class="paramname"><em>x_axis_end</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t</td> <td class="paramname"><span class="paramname"><em>y_axis_start</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t</td> <td class="paramname"><span class="paramname"><em>y_axis_end</em></span> )</td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the window area for the ILI9341 LCD. </p>
<p>This function defines the rectangular area on the LCD where subsequent pixel data will be written. It sends the column address set (CASET) and page address set (PASET) commands with the specified coordinates.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">x_axis_start</td><td>Starting X-axis position. </td></tr>
<tr><td class="paramname">x_axis_end</td><td>Ending X-axis position. </td></tr>
<tr><td class="paramname">y_axis_start</td><td>Starting Y-axis position. </td></tr>
<tr><td class="paramname">y_axis_end</td><td>Ending Y-axis position. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ac864bb1c0150636af050c0613b7511dd" name="ac864bb1c0150636af050c0613b7511dd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac864bb1c0150636af050c0613b7511dd">◆ </a></span>ILI9341_SPICmpltHandler()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ILI9341_SPICmpltHandler </td>
<td>(</td>
<td class="paramtype">void</td> <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Handles SPI DMA transfer completion. </p>
<p>This function handles the completion of SPI DMA transfers by checking the remaining buffer length and continuing the transfer if needed, or finalizing it. If the entire buffer has been transferred, it resets the chip select pin, clears the current buffer structure, and calls the completion callback function. </p>
</div>
</div>
<a id="a32dc1a25dba771348cc10ccb2487cb87" name="a32dc1a25dba771348cc10ccb2487cb87"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a32dc1a25dba771348cc10ccb2487cb87">◆ </a></span>ILI9341_WriteCommand()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ILI9341_WriteCommand </td>
<td>(</td>
<td class="paramtype">uint8_t</td> <td class="paramname"><span class="paramname"><em>cmd</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Writes a command to the ILI9341 LCD. </p>
<p>This function sends a command byte to the ILI9341 LCD controller. It resets the chip select and data/command pins, transmits the command via SPI, and then sets the chip select and data/command pins back.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">cmd</td><td>Command byte to be sent to the LCD. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a2fd7f0b26c0ffcd016123e1393630f57" name="a2fd7f0b26c0ffcd016123e1393630f57"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2fd7f0b26c0ffcd016123e1393630f57">◆ </a></span>ILI9341_WriteData()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ILI9341_WriteData </td>
<td>(</td>
<td class="paramtype">uint8_t *</td> <td class="paramname"><span class="paramname"><em>data_buff</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t</td> <td class="paramname"><span class="paramname"><em>data_len</em></span> )</td>
</tr>
</table>
</div><div class="memdoc">
<p>Writes data to the ILI9341 LCD. </p>
<p>This function sends a data buffer to the ILI9341 LCD controller. It resets the chip select pin, transmits the data via SPI, and then sets the chip select pin back.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">data_buff</td><td>Pointer to the data buffer to be sent to the LCD. </td></tr>
<tr><td class="paramname">data_len</td><td>Length of the data buffer. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a id="af05b437ec963adb184588f800fea1d50" name="af05b437ec963adb184588f800fea1d50"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af05b437ec963adb184588f800fea1d50">◆ </a></span>ili9341_spi</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">SPI_HandleTypeDef* ili9341_spi</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">extern</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>SPI handle for the ILI9341 display </p>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_24817a301ba3256d5cc3ff5fb28dbe0b.html">Display</a></li><li class="navelem"><a class="el" href="dir_bd0f8823100e88f56087202c553e40bd.html">Src</a></li><li class="navelem"><a class="el" href="ili9341_8c.html">ili9341.c</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.11.0 </li>
</ul>
</div>
</body>
</html>