Difference between revisions of "CM-X300: WinCE: GPIOs Programming"
(No difference) 
 | 
Latest revision as of 11:46, 15 March 2010
Contents
- 1 GPIO Sample Application
 - 2 GPIO Driver API
- 2.1 Data Types
 - 2.2 Functions
- 2.2.1 HANDLE GPIOOpen()
 - 2.2.2 void GPIOClose(HANDLE hDevice)
 - 2.2.3 BOOL GPIOSetValue(HANDLE hDevice,DWORD num, GPIO_VALUE val)
 - 2.2.4 BOOL GPIOGetValue(HANDLE hDevice,DWORD num,GPIO_VALUE *gpioVal)
 - 2.2.5 BOOL GPIOSetAsInput(HANDLE hDevice, DWORD num)
 - 2.2.6 BOOL GPIOSetAsOutput(HANDLE hDevice,DWORD num, GPIO_VALUE val)
 - 2.2.7 BOOL GPIORegisterInterrupt(HANDLE hDevice,GPIO_INTERRUPT interrupt)
 - 2.2.8 VOID GPIOInterruptDone(HANDLE hDevice, DWORD num)
 - 2.2.9 BOOL GPIOUnRegisterInterrupt(HANDLE hDevice, DWORD num)
 
 
 
GPIO Sample Application
Overview
This GPIOSample application demonstrates basic functionality of CM-X300 GPIOs under Windows CE:
- How to configure a GPIO pin as output and manipulate it.
 - How to configure a GPIO pin as input and respond to changes in signal level.
 - How to setup an edge triggered event.
 
Application Behavior
The GPIOSample manipulates the following GPIOs:
- GPIO 122 (pin 12 of connector P13 on the SB-X300) - Set as output
 - GPIO 124 (pin 14 of connector P13 on the SB-X300) - Set as input
 - GPIO 128 (Pin 24 of connector P11 on the SB-X300) - Set as input. (pin 0 on GPIO extender 0)
 
GPIO122 voltage level may be monitored with a DVM or an oscilloscope. GPIO124 and GPIO128 may be controlled by an external switch or button.
The GPIOSample performs the following actions:
- Edge detection on GPIO124 (cpu GPIO). Event handler is registered with GPIORegisterInterrupt. The handler calls GPIOInterruptDone to indicate interrupt completion.
 - Edge detection on GPIO128 (GPIO extender). Event handler is registered with GPIORegisterInterrupt. The handler calls GPIOInterruptDone to indicate interrupt completion.
 - Clock simulation on GPIO122 with a period of 3 seconds.
 - Input voltage level monitoring on GPIO122.
 
GPIO Driver API
Data Types
GPIO_VALUE
GPIO state enumeration
Values
- GPIO_LOW
 - GPIO_HIGH
 
GPIO_EDGE_SETTINGS
Values
- GPIO_REACT_ON_FALLING
 - GPIO_REACT_ON_RISING
 - GPIO_REACT_ON_BOTH
 - GPIO_DONT_REACT
 
GPIO_INTERRUPT
Fields
 Name   | 
 Description  
 | 
|---|---|
| DWORD dwGpioNum | |
| GPIO_EDGE_SETTINGS Edge | |
| HANDLE Event |   
 
 
  | 
Functions
HANDLE GPIOOpen()
Opens an instance of the GPIO Driver.
Return Values
- Returns a handle that should be used to access the driver. Nonzero indicates success.
 
void GPIOClose(HANDLE hDevice)
Closes the driver handle
Parameters
- hDevice - Handle to an open driver instance
 
BOOL GPIOSetValue(HANDLE hDevice,DWORD num, GPIO_VALUE val)
Sets the state of a GPIO.
Parameters
- hDevice - Handle to an open driver instance
 - num - GPIO number.
 - val - The desired logical state.
 
Return Values
- TRUE - indicates success
 - FALSE - indicates failure
 
Remarks
- Make sure the GPIO direction is setup as output.
 
BOOL GPIOGetValue(HANDLE hDevice,DWORD num,GPIO_VALUE *gpioVal)
Return the logical state of a GPIO.
Parameters
- hDevice - Handle to an open driver instance
 - num - GPIO number.
 - gpioVal - pointer to the GPIO state variable
 
Return Values
- TRUE - indicates success
 - FALSE - indicates failure
 
Remarks
- Make sure the GPIO direction is setup as input. Returned value for an output GPIO is undefined
 
BOOL GPIOSetAsInput(HANDLE hDevice, DWORD num)
Configures a GPIO as an input.
Parameters
- hDevice - Handle to an open driver instance.
 - num - GPIO number.
 
Return Values
- TRUE - indicates success
 - FALSE - indicates failure
 
BOOL GPIOSetAsOutput(HANDLE hDevice,DWORD num, GPIO_VALUE val)
Configures a GPIO as an output and sets its logical state.
Parameters
- hDevice - Handle to an open driver instance
 - num - GPIO number.
 - val - The initial GPIO value
 
Return Values
- TRUE - indicates success
 - FALSE - indicates failure
 
BOOL GPIORegisterInterrupt(HANDLE hDevice,GPIO_INTERRUPT interrupt)
Registers a GPIO as an interrupt source. The interrupt is triggered according to the configuration in GPIO_INTERRUPT.Edge member settings.
Parameters
- hDevice - Handle to an open driver instance
 - interrupt- data structure that defines parameters for the interrupt registration
 
Return Values
- TRUE - indicates success.
 - FALSE - indicates failure
 
Remarks
- The handle for the interrupt event is stored in GPIO_INTERRUPT.Event
 
VOID GPIOInterruptDone(HANDLE hDevice, DWORD num)
Signals to the kernel that GPIO interrupt processing is complete.
Parameters
- hDevice - Handle to an open driver instance
 - num - GPIO number.
 
Remarks
- A program calls GPIOInterruptDone when it has completed the interrupt processing and is ready for another interrupt.
 
BOOL GPIOUnRegisterInterrupt(HANDLE hDevice, DWORD num)
Disables the GPIO hardware interrupt.
Parameters
- hDevice - Handle to an open driver instance
 - num - GPIO number.
 
Return Values
- TRUE - indicates success.
 - FALSE - indicates failure
 
Remarks
- A program calls GPIOUnRegisterInterrupt to disable the hardware interrupt and to unregister the event that was registered by GPIOInterruptInitialize.