Symbian3/PDK/Source/GUID-5471CDD4-030E-4509-8B7C-603C9B7953B4.dita
author Dominic Pinkman <Dominic.Pinkman@Nokia.com>
Tue, 30 Mar 2010 11:56:28 +0100
changeset 5 f345bda72bc4
permissions -rw-r--r--
Week 12 contribution of PDK documentation_content. See release notes for details. Fixes Bug 2054, Bug 1583, Bug 381, Bug 390, Bug 463, Bug 1897, Bug 344, Bug 1319, Bug 394, Bug 1520, Bug 1522, Bug 1892"

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
<!-- This component and the accompanying materials are made available under the terms of the License 
"Eclipse Public License v1.0" which accompanies this distribution, 
and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". -->
<!-- Initial Contributors:
    Nokia Corporation - initial contribution.
Contributors: 
-->
<!DOCTYPE concept
  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
<concept id="GUID-5471CDD4-030E-4509-8B7C-603C9B7953B4" xml:lang="en"><title>GPIO
Technology Guide</title><shortdesc>Discusses GPIO technology as specified for implementation as a
SHAI.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
<section id="GUID-087A2FDD-8879-5944-9C0E-05ABD9FFAF50"><title>Purpose</title><p>GPIO
(General Purpose Input/Output) is a communication interface between microprocessor
components. GPIOs consist of binary inputs/outputs called pins, arranged in
groups called modules, typically of up to 32 pins in a module. GPIO is often
used to implement hardware interrupts and CPU wakeup and also to control peripherals. </p> <p>Symbian
platform defines a single static exported class <xref href="GUID-C93C53D3-2BE8-36AE-83B8-4CDB4195649B.dita"><apiname>GPIO</apiname></xref> for
device drivers to use to access the GPIO hardware on the device. The SHAI
does not provide an implementation of the class. When you implement a board
support package for device hardware with GPIO hardware, you should provide
an implementation of the class in a variant-specific component. </p> </section>
<section id="GUID-48176C53-72DC-5A2E-8124-9FA222AE91AB"><title>Key concepts</title> <p>Certain
terms have a specific meaning in the context of GPIO. </p> <dl>
<dlentry>
<dt>module</dt>
<dd><p>A group of pins which can be mapped on to a register. </p> </dd>
</dlentry>
<dlentry>
<dt>function</dt>
<dd><p>The purpose for which the pins and modules are used. GPIO is one such
purpose: serial bus line signals are an example of a different function. </p> </dd>
</dlentry>
<dlentry>
<dt>state</dt>
<dd><p>Electrical states as mapped on to mode, direction and logical state. </p> </dd>
</dlentry>
<dlentry>
<dt>configuration</dt>
<dd><p>The current configuration of all the pins on a module: their direction,
electrical and logical state, interrupt and wakeup enablement status. </p> </dd>
</dlentry>
</dl> </section>
<section id="GUID-35C041B8-F3F0-544B-A67E-0A25BE140D8B"><title>Design features</title> <p>The
Symbian platform GPIO interface reserves most decisions about design to implementers
in accordance with the platform they are writing for. However, certain design
features are implicit in the interface provided. </p> <p>These are the main
features of the Symbian platform GPIO interface: </p> <ul>
<li id="GUID-DD56DA4D-C0A7-5180-9142-81887C7538C2"><p>The interface is supplied
as a single static exported interface to be implemented as a variant specific
component. </p> </li>
<li id="GUID-B201623E-64E2-5FEF-959F-9C096F424D7E"><p>The access APIs are
specified at pin level. There are no module level APIs. </p> </li>
<li id="GUID-D8FF221C-F0EB-5F1B-886B-0F6AAC4023A9"><p>The pin IDs are to be
defined in a single enumeration with values to be determined at build time. </p> </li>
<li id="GUID-7F703C00-FE1D-5DE6-8E0E-29E4138E1060"><p>Bidirectional input/output
is not supported. </p> </li>
<li id="GUID-2CF55AD5-B98C-5207-A78F-B4C7654E677A"><p>Electrical states intermediate
between High and Low are not supported. </p> </li>
<li id="GUID-C3982CA3-04F3-58C4-B907-EE6A82FBD548"><p>It is strongly recommended
that debouncing should be implemented in software if it is not provided with
the hardware. </p> </li>
<li id="GUID-CD64A653-AB5C-575A-A3D3-0151FD8ADCF4"><p>There is limited support
for extensions to the functionality within the framework of the static interface. </p> </li>
</ul> </section>
</conbody></concept>