Initial commit
This commit is contained in:
164
Clean_TMC2209/lib/tmc/hal/IOs.h
Normal file
164
Clean_TMC2209/lib/tmc/hal/IOs.h
Normal file
@@ -0,0 +1,164 @@
|
||||
/*******************************************************************************
|
||||
* Copyright © 2019 TRINAMIC Motion Control GmbH & Co. KG
|
||||
* (now owned by Analog Devices Inc.),
|
||||
*
|
||||
* Copyright © 2023 Analog Devices Inc. All Rights Reserved. This software is
|
||||
* proprietary & confidential to Analog Devices, Inc. and its licensors.
|
||||
*******************************************************************************/
|
||||
|
||||
|
||||
#ifndef _IO_H_
|
||||
#define _IO_H_
|
||||
|
||||
// #include "derivative.h"
|
||||
|
||||
typedef enum { // Give bits explicitly, because IDE relies on it.
|
||||
IOS_LOW = 0b00,
|
||||
IOS_HIGH = 0b01,
|
||||
IOS_OPEN = 0b10,
|
||||
IOS_NOCHANGE = 0b11
|
||||
} IO_States;
|
||||
|
||||
#if defined(Landungsbruecke) || defined(LandungsbrueckeSmall)
|
||||
// use ST like configuration structures also for Landungsbruecke
|
||||
|
||||
typedef enum
|
||||
{
|
||||
GPIO_Mode_AN = 0x00, /*!< GPIO Analog Mode, Pin disabled */
|
||||
GPIO_Mode_AF1 = 0x01, /*!< GPIO Alternate function Mode GPIO*/
|
||||
GPIO_Mode_AF2 = 0x02, /*!< GPIO Alternate function Mode*/
|
||||
GPIO_Mode_AF3 = 0x03, /*!< GPIO Alternate function Mode*/
|
||||
GPIO_Mode_AF4 = 0x04, /*!< GPIO Alternate function Mode*/
|
||||
GPIO_Mode_AF5 = 0x05, /*!< GPIO Alternate function Mode*/
|
||||
GPIO_Mode_AF6 = 0x06, /*!< GPIO Alternate function Mode*/
|
||||
GPIO_Mode_AF7 = 0x07, /*!< GPIO Alternate function Mode*/
|
||||
GPIO_Mode_IN = 0x08, /*!< GPIO Input Mode */
|
||||
GPIO_Mode_OUT = 0x09 /*!< GPIO Output Mode */
|
||||
} GPIOMode_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
GPIO_OType_PP = 0x00,
|
||||
GPIO_OType_OD = 0x01
|
||||
} GPIOOType_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
GPIO_PuPd_NOPULL = 0x00,
|
||||
GPIO_PuPd_UP = 0x01,
|
||||
GPIO_PuPd_DOWN = 0x02
|
||||
} GPIOPuPd_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
GPIO_Speed_2MHz = 0x00, /*!< Low speed */
|
||||
GPIO_Speed_25MHz = 0x01, /*!< Medium speed */
|
||||
GPIO_Speed_50MHz = 0x02, /*!< Fast speed */
|
||||
GPIO_Speed_100MHz = 0x03 /*!< High speed on 30 pF (80 MHz Output max speed on 15 pF) */
|
||||
} GPIOSpeed_TypeDef;
|
||||
|
||||
#include "hal/Landungsbruecke/freescale/PDD/GPIO_PDD.h"
|
||||
#elif defined(LandungsbrueckeV3)
|
||||
// typedef enum
|
||||
// {
|
||||
// GPIO_MODE_INPUT = 0x00, /*!< GPIO Input Mode */
|
||||
// GPIO_MODE_OUTPUT = 0x01, /*!< GPIO Output Mode */
|
||||
// GPIO_MODE_AF = 0x02, /*!< GPIO Alternate function Mode*/
|
||||
// GPIO_MODE_ANALOG = 0x03, /*!< GPIO Analog Mode*/
|
||||
// } GPIOMode_TypeDef;
|
||||
//
|
||||
// typedef enum
|
||||
// {
|
||||
// GPIO_OTYPE_PP = 0x00,
|
||||
// GPIO_OTYPE_OD = 0x01
|
||||
// } GPIOOType_TypeDef;
|
||||
//
|
||||
// typedef enum
|
||||
// {
|
||||
// GPIO_PUPD_NONE = 0x00,
|
||||
// GPIO_PUPD_PULLUP = 0x01,
|
||||
// GPIO_PUPD_PULLDOWN = 0x02
|
||||
// } GPIOPuPd_TypeDef;
|
||||
//
|
||||
// typedef enum
|
||||
// {
|
||||
// GPIO_OSPEED_2MHZ = 0x00, /*!< Low speed */
|
||||
// GPIO_OSPEED_25MHZ = 0x01, /*!< Medium speed */
|
||||
// GPIO_OSPEED_50MHZ = 0x02, /*!< Fast speed */
|
||||
// GPIO_OSPEED_MAX = 0x03 /*!< GPIO very high output speed, max speed more than 50MHz */
|
||||
// } GPIOSpeed_TypeDef;
|
||||
typedef uint32_t GPIOMode_TypeDef;
|
||||
typedef uint32_t GPIOOType_TypeDef;
|
||||
typedef uint32_t GPIOPuPd_TypeDef;
|
||||
typedef uint32_t GPIOSpeed_TypeDef;
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
enum IOsHighLevelFunctions { IO_DEFAULT, IO_DI, IO_AI, IO_DO, IO_PWM, IO_SD, IO_CLK16, IO_SPI };
|
||||
|
||||
typedef struct
|
||||
{
|
||||
const uint8_t DEFAULT;
|
||||
const uint8_t DI;
|
||||
const uint8_t AI;
|
||||
const uint8_t DO;
|
||||
const uint8_t PWM;
|
||||
const uint8_t SD;
|
||||
const uint8_t CLK16;
|
||||
const uint8_t SPI;
|
||||
} IOsHighLevelFunctionTypeDef;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
GPIOMode_TypeDef GPIO_Mode;
|
||||
GPIOSpeed_TypeDef GPIO_Speed;
|
||||
GPIOOType_TypeDef GPIO_OType;
|
||||
GPIOPuPd_TypeDef GPIO_PuPd;
|
||||
} IOPinInitTypeDef;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
#if defined(LandungsbrueckeV3)
|
||||
uint32_t port;
|
||||
volatile uint32_t *setBitRegister;
|
||||
volatile uint32_t *resetBitRegister;
|
||||
#elif defined(Landungsbruecke) || defined(LandungsbrueckeSmall)
|
||||
PORT_MemMapPtr portBase;
|
||||
GPIO_MemMapPtr GPIOBase;
|
||||
volatile uint32_t *setBitRegister;
|
||||
volatile uint32_t *resetBitRegister;
|
||||
#endif
|
||||
uint32_t bitWeight;
|
||||
unsigned char bit;
|
||||
IOPinInitTypeDef configuration;
|
||||
IOPinInitTypeDef resetConfiguration;
|
||||
enum IOsHighLevelFunctions highLevelFunction;
|
||||
IO_States state;
|
||||
} IOPinTypeDef;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
void (*set)(IOPinTypeDef *pin);
|
||||
void (*copy)(IOPinInitTypeDef *from, IOPinTypeDef*to);
|
||||
void (*reset)(IOPinTypeDef *pin);
|
||||
void (*toOutput)(IOPinTypeDef *pin);
|
||||
void (*toInput)(IOPinTypeDef *pin);
|
||||
|
||||
void (*setHigh)(IOPinTypeDef *pin);
|
||||
void (*setLow)(IOPinTypeDef *pin);
|
||||
void (*setToState)(IOPinTypeDef *pin, IO_States state);
|
||||
IO_States (*getState)(IOPinTypeDef *pin);
|
||||
unsigned char (*isHigh)(IOPinTypeDef *pin);
|
||||
void (*init)(void);
|
||||
IOsHighLevelFunctionTypeDef HIGH_LEVEL_FUNCTIONS;
|
||||
} IOsTypeDef;
|
||||
|
||||
extern IOsTypeDef IOs;
|
||||
|
||||
// A bit weight of 0 is used to indicate a nonexistent pin
|
||||
#define DUMMY_BITWEIGHT 0
|
||||
#define IS_DUMMY_PIN(pin) (pin->bitWeight == DUMMY_BITWEIGHT)
|
||||
|
||||
#endif /* _IO_H_ */
|
||||
Reference in New Issue
Block a user