Files
picovga-cmake/docs/group__OverclockGroup.html
2025-08-26 20:47:11 -07:00

307 lines
14 KiB
HTML

<!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>PicoVGA: CPU Overclocking</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="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.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" />
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
<link href="custom.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="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">PicoVGA
&#160;<span id="projectnumber">1.2-cmake</span>
</div>
<div id="projectbrief">VGA/TV display on Raspberry Pico</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>
</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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('group__OverclockGroup.html',''); initResizable(); });
/* @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">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">CPU Overclocking</div> </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
<p>Some display functions may be CPU speed intensive and may require overclocking to a higher speed. It should be understood that overclocking places the processor in areas where proper function is not guaranteed. The PicoVGA library allows you to control the overclocking of the processor, according to the desired video mode. The minimum and maximum processor frequency can be specified in the <a class="el" href="group__VideoModeGroup.html#ga5a8c9c954becaf3532bb45f3801ca916" title="Calculate the structure for setting up the video mode.">VgaCfg()</a> function. By default, the library allows a range of 120 to 270 MHz. However, it may happen that at higher frequencies the processor will not operate correctly and it may be necessary to lower the upper limit. The searched processor frequency can be set with the set_sys_clock_pll() function. </p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gaa67652684354cbb38a893670ad1dc77d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__OverclockGroup.html#gaa67652684354cbb38a893670ad1dc77d">vcocalc</a> (u32 reqkhz, u32 input, u32 vcomin, u32 vcomax, bool lowvco, u32 *outkhz, u32 *outvco, u16 *outfbdiv, u8 *outpd1, u8 *outpd2)</td></tr>
<tr class="memdesc:gaa67652684354cbb38a893670ad1dc77d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Search PLL setup. <a href="group__OverclockGroup.html#gaa67652684354cbb38a893670ad1dc77d">More...</a><br /></td></tr>
<tr class="separator:gaa67652684354cbb38a893670ad1dc77d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5264c2d64500b5cb904a1fe219881085"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__OverclockGroup.html#ga5264c2d64500b5cb904a1fe219881085">FindSysClock</a> (u32 reqkhz, u32 *outkhz, u32 *outvco, u16 *outfbdiv, u8 *outpd1, u8 *outpd2)</td></tr>
<tr class="memdesc:ga5264c2d64500b5cb904a1fe219881085"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find PLL generator settings with default parameters. (use set_sys_clock_pll to set sysclock) <a href="group__OverclockGroup.html#ga5264c2d64500b5cb904a1fe219881085">More...</a><br /></td></tr>
<tr class="separator:ga5264c2d64500b5cb904a1fe219881085"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf9d1d6fad0d19be3df1b10882c03e99f"><td class="memItemLeft" align="right" valign="top">void __not_in_flash_func()&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__OverclockGroup.html#gaf9d1d6fad0d19be3df1b10882c03e99f">FlashSpeedSetup</a> (int baud)</td></tr>
<tr class="memdesc:gaf9d1d6fad0d19be3df1b10882c03e99f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Setting the interface speed for external flash. <a href="group__OverclockGroup.html#gaf9d1d6fad0d19be3df1b10882c03e99f">More...</a><br /></td></tr>
<tr class="separator:gaf9d1d6fad0d19be3df1b10882c03e99f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a id="gaa67652684354cbb38a893670ad1dc77d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa67652684354cbb38a893670ad1dc77d">&#9670;&nbsp;</a></span>vcocalc()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool vcocalc </td>
<td>(</td>
<td class="paramtype">u32&#160;</td>
<td class="paramname"><em>reqkhz</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u32&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u32&#160;</td>
<td class="paramname"><em>vcomin</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u32&#160;</td>
<td class="paramname"><em>vcomax</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>lowvco</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u32 *&#160;</td>
<td class="paramname"><em>outkhz</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u32 *&#160;</td>
<td class="paramname"><em>outvco</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u16 *&#160;</td>
<td class="paramname"><em>outfbdiv</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8 *&#160;</td>
<td class="paramname"><em>outpd1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8 *&#160;</td>
<td class="paramname"><em>outpd2</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Search PLL setup. </p>
<p>Function for finding the optimal setting of the PLL system clock generator. The function is used to specify the desired output frequency, the input frequency of the crystal (12 MHz in Raspberry Pico), the minimum and maximum frequency of the VCO oscillator. The output is the parameters for setting the PLL oscillator. The function returns True if it was able to find a setting for the exact value of the desired frequency. Otherwise, it searches for the setting for the closest frequency and returns False. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">reqkhz</td><td>Required output frequency in kHz </td></tr>
<tr><td class="paramname">input</td><td>PLL input frequency in kHz (default 12000, or use clock_get_hz(clk_ref)/1000) </td></tr>
<tr><td class="paramname">vcomin</td><td>Minimal VCO frequency in kHz (default 400000) </td></tr>
<tr><td class="paramname">vcomax</td><td>Maximal VCO frequency in kHz (default 1600000) </td></tr>
<tr><td class="paramname">lowvco</td><td>Prefer low VCO (lower power but more jiter) </td></tr>
<tr><td class="paramname">outkhz</td><td>Output achieved frequency in kHz (0=not found) </td></tr>
<tr><td class="paramname">outvco</td><td>Output VCO frequency in kHz </td></tr>
<tr><td class="paramname">outfbdiv</td><td>Output fbdiv (16..320) </td></tr>
<tr><td class="paramname">outpd1</td><td>Output postdiv1 (1..7) </td></tr>
<tr><td class="paramname">outpd2</td><td>Output postdiv2 (1..7) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if precise frequency has been found, or near frequency used otherwise. </dd></dl>
</div>
</div>
<a id="ga5264c2d64500b5cb904a1fe219881085"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga5264c2d64500b5cb904a1fe219881085">&#9670;&nbsp;</a></span>FindSysClock()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool FindSysClock </td>
<td>(</td>
<td class="paramtype">u32&#160;</td>
<td class="paramname"><em>reqkhz</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u32 *&#160;</td>
<td class="paramname"><em>outkhz</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u32 *&#160;</td>
<td class="paramname"><em>outvco</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u16 *&#160;</td>
<td class="paramname"><em>outfbdiv</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8 *&#160;</td>
<td class="paramname"><em>outpd1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8 *&#160;</td>
<td class="paramname"><em>outpd2</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Find PLL generator settings with default parameters. (use set_sys_clock_pll to set sysclock) </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">reqkhz</td><td>Required frequency in kHz </td></tr>
<tr><td class="paramname">outkhz</td><td>Output achieved frequency in kHz (0=not found) </td></tr>
<tr><td class="paramname">outvco</td><td>Output VCO frequency in kHz </td></tr>
<tr><td class="paramname">outfbdiv</td><td>Output fbdiv (16..320) </td></tr>
<tr><td class="paramname">outpd1</td><td>Output postdiv1 (1..7) </td></tr>
<tr><td class="paramname">outpd2</td><td>Output postdiv2 (1..7) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if precise frequency has been found, or near frequency used otherwise. </dd></dl>
</div>
</div>
<a id="gaf9d1d6fad0d19be3df1b10882c03e99f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf9d1d6fad0d19be3df1b10882c03e99f">&#9670;&nbsp;</a></span>FlashSpeedSetup()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void __not_in_flash_func() FlashSpeedSetup </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>baud</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Setting the interface speed for external flash. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">baud</td><td>Flash SSI speed (4 default, &lt;4 faster, &gt;4 slower) </td></tr>
</table>
</dd>
</dl>
</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="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.9.1 </li>
</ul>
</div>
</body>
</html>