COM AM35 WinCE

From Wiki-DB
Revision as of 12:40, 9 April 2013 by Ageisreiter (talk | contribs) (Created page with "== DHHalLib (function library) == The DHHalLib provides hardware related functions for Windows Embedded CE 6 and Windows Embedded Compact 7. All the functionality is available fr...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

DHHalLib (function library)

The DHHalLib provides hardware related functions for Windows Embedded CE 6 and Windows Embedded Compact 7. All the functionality is available from the user mode.

Version numbers

Read DHHalLib version
unsigned long DHHalLibGetVersion()
Return value: unsigned long --> version number (e.g. 0x01040001 for version 1.4.0.1)
BSP version
unsigned long BSPGetVersion()
Return value: unsigned long --> version number (e.g. 0x01040001 for version 1.4.0.1)
Note: The version number information is stored in the following registry key: [HKEY_LOCAL_MACHINE\Ident] dword:"BSPVersionNumber"
Read image version
unsigned long WinCEImageGetVersion()
Return value: unsigned long --> version number (e.g. 0x01040001 for version 1.4.0.1)

I2C

Read
bool I2CRead( unsigned char cI2CPort, unsigned char cDevId, unsigned char cI2CReg, bool bSendStop, unsigned char *pOutBuffer)
Input values:
unsigned char cI2CPort = DHCOM I2C port number (1.. 2)
unsigned char iDevId = I2C device address (0..127)
unsigned char iI2CReg = I2C device register address (0..255)
bool bSendStop = send or not send stop bit at the end of the transfer (true --> stop bit is generated)
unsigned char *pOutBuffer = Pointer to the read byte
Return value: bool --> true = success; false = failed
Write
bool I2CWrite( unsigned char cI2CPort, unsigned char cDevId, unsigned char cI2CReg, unsigned char cValue, bool bSendStop)
Input values:
unsigned char cI2CPort = DHCOM I2C port number (1.. 2)
unsigned char iDevId = I2C device address (0..127)
unsigned char iI2CReg = I2C device register address (0..255)
unsigned char iValue = Value to be written
bool bSendStop = send or not send stop bit at the end of the transfer (true --> stop bit is generated)
Return value: bool --> true = success; false = failed
Read multiple bytes
bool I2CReadMultipleBytes( unsigned char cI2CPort, unsigned char cDevId, unsigned char cI2CReg, unsigned char cBytes, bool bSendStop, unsigned char *pOutBuffer)
Input values:
unsigned char cI2CPort = DHCOM I2C port number (1.. 2)
unsigned char iDevId = I2C device address (0..127)
unsigned char iI2CReg = I2C device register address (0..255)
unsigned char cBytes = Number of bytes to be read (max. 255)
bool bSendStop = send or not send stop bit at the end of the transfer (true --> stop bit is generated)
unsigned char *pOutBuffer = Pointer to the read buffer
Return value: bool --> true = success; false = failed
Write multiple bytes
bool I2CWriteMultipleBytes( unsigned char cI2CPort, unsigned char cDevId, unsigned char cI2CReg, unsigned char cBytes, bool bSendStop, unsigned char *pInBuffer)
Input values:
unsigned char cI2CPort = DHCOM I2C port number (1.. 2)
unsigned char iDevId = I2C device address (0..127)
unsigned char iI2CReg = I2C device register address (0..255)
unsigned char cBytes = Number of bytes to be written (max. 255)
bool bSendStop = send or not send stop bit at the end of the transfer (true --> stop bit is generated)
unsigned char *pInBuffer = Pointer to the input buffer
Return value: bool --> true = success; false = failed
Bus scan
bool I2CProbe(unsigned char cI2CPort, unsigned char cDevId)
Description:
Scans the bus for the specified device address. Is this achievable, then the function returns "true".
Input values:
unsigned char cI2CPort = DHCOM I2C port number (1.. 2)
unsigned char iDevId = I2C device address (0..127)
Return value: bool --> true = success; false = failed

GPIO

Note: These functions can only access the DHCOM standard GPIOs. The mapping is done with the following enum.
  enum DHCOM_GPIOEnum
  {
    DHCOM_GPIO_A,
    DHCOM_GPIO_B,
    DHCOM_GPIO_C,
    DHCOM_GPIO_D,
    DHCOM_GPIO_E,
    DHCOM_GPIO_F,
    DHCOM_GPIO_G,
    DHCOM_GPIO_H,
    DHCOM_GPIO_I,
    DHCOM_GPIO_J,
    DHCOM_GPIO_K,
    DHCOM_GPIO_L,
    DHCOM_GPIO_M,
    DHCOM_GPIO_N,
    DHCOM_GPIO_O,
    DHCOM_GPIO_P,
    DHCOM_GPIO_Q,
    DHCOM_GPIO_R,
    DHCOM_GPIO_S,
    DHCOM_GPIO_T,
    DHCOM_GPIO_U,
    DHCOM_GPIO_NOT_DEFINED
  };
Direction
bool GPIOSetDirection( DHCOM_GPIOEnum eGpio, bool bInOut, bool bDefaultState)
Input values:
DHCOM_GPIOEnum eGpio = DHCOM GPIO pin name
bool bInOut = GPIO direction (1 = input / 0 = output)
bool bDefaultState = Default state (0 = low / 1 = high)
Return value: bool --> true = success; false = failed
Set state
void GPIOSetPin(DHCOM_GPIOEnum eGpio, bool bState)
Input values:
DHCOM_GPIOEnum eGpio = DHCOM GPIO pin name
bool bState = pin state ( 0 = low / 1 = high)
Read state
bool GPIOGetPin(DHCOM_GPIOEnum eGpio)
Input values:
DHCOM_GPIOEnum eGpio = DHCOM GPIO pin name
Return value: bool --> 0 = low; 1 = high

Memory

Read physical address
int ReadPhysicalAddress(int iPhyAddr, unsigned char cRegSize)
Input values:
int iPhyAddr = Physical address
unsigned char cRegSize = Register size (16 = 16bit; 32 = 32bit)
Return value: int --> current value of the physical address
Write physical address
int WritePhysicalAddress( int iPhyAddr, unsigned char cRegSize, int iValue, bool bReadBack)
Input values:
int iPhyAddr = physical address
unsigned char cRegSize = Register size (16 = 16bit; 32 = 32bit)
int iValue = Value to be written
bool bReadBack = true --> the current value is read back after the write; false --> the current value isn’t read back after the write
Return value: int --> content of the physical address after write, if bReadBack = true. Otherwise the function returns 0.
Map physical memory
PVOID UserMmMapIoSpace(ULONG PhysicalAddress, ULONG NumberOfBytes, BOOLEAN CacheEnable)
Input values:
ULONG PhysicalAddress = physical address
ULONG NumberOfBytes = Number of bytes to map
BOOLEAN CacheEnable = true --> Cached memory map; false --> Uncached memory map
Return value: PVOID --> virtual base address of the mapped memory
Note: From WinCE 6, the function MmMapIoSpace() can not be called from the user mode. THis library function provides a workaround.
UnMap physical memory
void UserMmUnmapIoSpace(PVOID BaseAddress, ULONG NumberOfBytes)
Input values:
PVOID BaseAddress = pointer to virtual base address of the mapped memory
ULONG NumberOfBytes = Number of mapped bytes
Note: From WinCE 6, the function MmUnmapIoSpace() can not be called from the user mode. THis library function provides a workaround.


Backlight

PWM
bool SetBacklightPWM(int iPercent)
Input values:
int iPercent = Backlight brightness in percent
Return value: bool --> true = success; false = failed

Touch screen

Calibrate touch
bool CalibrateTouch()
Return value: bool --> true = success; false = failed
Save calibration data
bool SaveTouchCalibrationData()
Description:
This function sets the registry entry [HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\TOUCH] dword:"TouchCalibrationDone" to the value 1. For saving the value permanent please call SaveRegistry() afterwards.
Return value: bool --> true = success; false = failed
Clear calibration data
bool ClearTouchCalibrationData()
Description:
This function sets the registry entry [HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\TOUCH] dword:"TouchCalibrationDone" to the value 0. For saving the value permanent please call SaveRegistry() afterwards.
Return value: bool --> true = success; false = failed

Registry

Save HIVE registry
bool SaveRegistry()
Return value: bool --> true = success; false = failed
Create backup
bool CreateRegistryBackup()
Description:
This function generates the files ave_HKLM_Reg.srg and Save_HKLCU_Reg.srg in the folder \Storage Card\. These files can be used at a later time to restore the registry.
Return value: bool --> true = success; false = failed
Restore backup
bool RestoreRegistryBackup()
Description:
This function restores the registry from the files Save_HKLM_Reg.srg and Save_HKLCU_Reg.srg in the folder \Storage Card\. Afterwards a restart is carried out automatically. If the backup files are not present, then the function returns the return value flase.
Return value: bool --> true = this never happens because a soft reset is performed; false = failed

Watchdog & Reset

Soft reset
void SoftReset()
Set Watchdog Timer
void SetWatchdog(unsigned char cTime)
Input values:
unsigned char cTime = Watchdog timeout value (0 = 0.5sec., 1 = 1.0sec., ...)
Retrigger Watchdog Timer
void ReloadWatchdog()