📄 sspescape.h
字号:
//-----------------------------------------------------------------------------
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
// Copyright (c) 2003 Silicon Motion, Inc.
//
// Module Name: ssp.h
//
// Abstract: SSP API
//
//-----------------------------------------------------------------------------
#ifndef _SSPESCAPE_H_
#define _SSPESCAPE_H_
///////////////////////////////////////////////////////////////////////////////
// SSP return results.
typedef enum _VGXSSP_RESULTS
{
VGXSSP_SUCCESS = 1, // Success
VGXSSP_INVALID_PARAMETER = -1, // Invalid parameters
VGXSSP_FIFO_OVERRUN = -2, // Receive FIFO overrun
VGXSSP_TIMEOUT = -3, // Timeout occured
VGXSSP_INVALID_SSP = -4, // Invalid SSP has been specified
VGXSSP_UART1_ACTIVE = -5, // SSP1 init error - UART1 is active
VGXSSP_INT_FAILED = -6, // SSP0 interrupt initialization failed
VGXSSP_INVALID_PRESCALE = -7, // "clock_prescale" value is invalid
VGXSSP_INVALID_DATA_SIZE = -8, // "data_size" value is invalid
VGXSSP_INVALID_FORMAT = -9, // "format" value is invalid
VGXSSP_INVALID_PHASE = -10, // "phase" value is invalid
VGXSSP_INVALID_POLARITY = -11, // "polarity" value is invalid
VGXSSP_NOT_ACTIVE = -12, // Requested SSP is not open
VGXSSP_NOT_SUPPORTED = -13 // SSP API is not supported
}
VGXSSP_RESULTS, *PVGXSSP_RESULTS;
///////////////////////////////////////////////////////////////////////////////
// Command constants for use with Esc-structures.
typedef enum _VGXSSP_COMMANDS
{
VGXSSPCMD_OPEN,
VGXSSPCMD_CLOSE,
VGXSSPCMD_READ,
VGXSSPCMD_WRITE,
VGXSSPCMD_RESET_BUFFER
}
VGXSSP_COMMANDS, *PVGXSSP_COMMANDS;
///////////////////////////////////////////////////////////////////////////////
// SSP index enumeration.
typedef enum _VGXSSP_ENUM
{
SSP0,
SSP1,
SSP_COUNT
}
VGXSSP_ENUM, *PVGXSSP_ENUM;
///////////////////////////////////////////////////////////////////////////////
// Valid frame types.
typedef enum _SPI_FRAME_FORMAT
{
MOTOROLA_SPI = 0,
TI_SSP = 1,
MICROWIRE = 2
}
SPI_FRAME_FORMAT, *PSPI_FRAME_FORMAT;
///////////////////////////////////////////////////////////////////////////////
// Valid polarities for Motorola SPI frame.
typedef enum _MOTOROLA_POLARITY
{
RISING_EDGE = 0,
FALLING_EDGE = 1
}
MOTOROLA_POLARITY, *PMOTOROLA_POLARITY;
///////////////////////////////////////////////////////////////////////////////
// Valid phases for Motorola SPI frame.
typedef enum _MOTOROLA_PHASE
{
PH0 = 0,
PH1 = 1
}
MOTOROLA_PHASE, *PMOTOROLA_PHASE;
///////////////////////////////////////////////////////////////////////////////
// Structures used in ExtEscape calls to access SSP API.
typedef struct _VGXSSP_STRUCT
{
VGXSSP_ENUM ssp; // One of VGXSSP_ENUM
VGXSSP_COMMANDS command; // One of VGXSSP_COMMANDS
}
VGXSSP_STRUCT, *PVGXSSP_STRUCT;
typedef struct _VGXSSP_OPEN_STRUCT
{
VGXSSP_ENUM ssp; // One of VGXSSP_ENUM
VGXSSP_COMMANDS command; // One of VGXSSP_COMMANDS
BYTE serial_clock_rate; // Serial Clock Rate to generate the bit rate.
BYTE clock_prescale; // Divison factor by which the input SSPCLK
// should be internally divided. It has to
// be an even number between 2 to 254.
BYTE data_size; // Data size in bits, has to be a value
// between 4 to 16.
SPI_FRAME_FORMAT format; // SPI frame format.
MOTOROLA_PHASE phase; // For Motorola SPI frames only
// (ignored for other frame types)
MOTOROLA_POLARITY polarity; // For Motorola SPI frames only
// (ignored for other frame types)
BOOL master; // TRUE for master, FALSE for slave.
BOOL loopback; // TRUE for enable, FALSE for disable.
DWORD read_timeout; // Read timeout in milliseconds.
DWORD write_timeout; // Write timeout in milliseconds.
}
VGXSSP_OPEN_STRUCT, *PVGXSSP_OPEN_STRUCT;
typedef struct _VGXSSP_TRANSMIT_RESULT
{
union
{
DWORD read; // For read operations (in data units).
DWORD written; // For write operations (in data units).
};
}
VGXSSP_TRANSMIT_RESULT, *PVGXSSP_TRANSMIT_RESULT;
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -