Files
RS485_T1_Transition/Source/include/apt32f102_sio.h

211 lines
5.3 KiB
C
Raw Normal View History

/*
******************************************************************************
* @file apt32f102_sio.h
* @author APT AE Team
* @version V1.08
* @date 2021/06/21
******************************************************************************
*THIS SOFTWARE WHICH IS FOR ILLUSTRATIVE PURPOSES ONLY WHICH PROVIDES
*CUSTOMER WITH CODING INFORMATION REGARDING THEIR PRODUCTS.
*APT CHIP SHALL NOT BE HELD RESPONSIBILITY ADN LIABILITY FOR ANY DIRECT,
*INDIRECT DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF
*SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
*CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.AND APT CHIP RESERVES
*THE RIGHT TO MAKE CHANGES IN THE SOFTWARE WITHOUT NOTIFICATION
******************************************************************************
*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef _apt32f102_sio_H
#define _apt32f102_sio_H
/* Includes ------------------------------------------------------------------*/
#include "apt32f102.h"
#define SIO_RESET_VALUE (0x00000000)
//--------------------------------------------------------------------------------
//-----------------------------SIO value enum define--------------------------
//--------------------------------------------------------------------------------
/**
* @brief SIO IO group register
*/
typedef enum
{
SIO_PA02 = 0,
SIO_PA03 = 1,
SIO_PA012 = 2,
SIO_PB01 = 3,
}SIO_IOG_TypeDef;
/**
* @brief SIO CLK EN register
*/
typedef enum
{
SIOCLK_DIS = 0,
SIOCLK_EN = 1,
}SIO_CLK_TypeDef;
/**
* @brief SIO TXDEB register
*/
typedef enum
{
SIO_TXDEB_1CYCLE = (0<<1),
SIO_TXDEB_2CYCLE = (1<<1),
SIO_TXDEB_3CYCLE = (2<<1),
SIO_TXDEB_4CYCLE = (3<<1),
SIO_TXDEB_5CYCLE = (4<<1),
SIO_TXDEB_6CYCLE = (5<<1),
SIO_TXDEB_7CYCLE = (6<<1),
SIO_TXDEB_8CYCLE = (7<<1),
}SIO_RXDEB_TypeDef;
/**
* @brief SIO IO IDLE STATUS register
*/
typedef enum
{
SIO_IDLE_Z = 0,
SIO_IDLE_HIGH = 1,
SIO_IDLE_LOW = 2,
}SIO_IDLEST_TypeDef;
/**
* @brief SIO TX DIR register
*/
typedef enum
{
SIO_TX_LSB = (0<<2),
SIO_TX_MSB = (1<<2),
}SIO_TXDIR_TypeDef;
/**
* @brief SIO LENOBH register
*/
typedef enum
{
SIO_OBH_1BIT = (0<<8),
SIO_OBH_2BIT = (1<<8),
SIO_OBH_3BIT = (2<<8),
SIO_OBH_4BIT = (3<<8),
SIO_OBH_5BIT = (4<<8),
SIO_OBH_6BIT = (5<<8),
SIO_OBH_7BIT = (6<<8),
SIO_OBH_8BIT = (7<<8),
}SIO_LENOBH_TypeDef;
/**
* @brief SIO LENOBL register
*/
typedef enum
{
SIO_OBL_1BIT = (0<<11),
SIO_OBL_2BIT = (1<<11),
SIO_OBL_3BIT = (2<<11),
SIO_OBL_4BIT = (3<<11),
SIO_OBL_5BIT = (4<<11),
SIO_OBL_6BIT = (5<<11),
SIO_OBL_7BIT = (6<<11),
SIO_OBL_8BIT = (7<<11),
}SIO_LENOBL_TypeDef;
/**
* @brief SIO RX EDGE register
*/
typedef enum
{
SIO_RX_RISE = 0,
SIO_RX_FALL = 1,
SIO_RX_RISE_FALL = 2,
}SIO_BSTSEL_TypeDef;
/**
* @brief SIO RX TRG MODE register
*/
typedef enum
{
SIO_RX_DEB = (0<<3),
SIO_RX_FLT30NS = (1<<3),
}SIO_TRGMODE_TypeDef;
/**
* @brief SIO RX ALIGNEN register
*/
typedef enum
{
SIO_RX_ALIGNDIS = (0<<28),
SIO_RX_ALIGNEN = (1<<28),
}SIO_ALIGNEN_TypeDef;
/**
* @brief SIO RX DIR register
*/
typedef enum
{
SIO_RX_MSB = (0<<29),
SIO_RX_LSB = (1<<29),
}SIO_RXDIR_TypeDef;
/**
* @brief SIO RX MODE register
*/
typedef enum
{
SIO_RMODE0 = (0<<30),
SIO_RMODE1 = (1<<30),
}SIO_RXMODE_TypeDef;
/**
* @brief SIO BREAKEN register
*/
typedef enum
{
SIO_BREAKDIS = (0<<0),
SIO_BREAKEN = (1<<0),
}SIO_BREAKEN_TypeDef;
/**
* @brief SIO BREAKLVL register
*/
typedef enum
{
SIO_BREAKLVL_LOW = (0<<1),
SIO_BREAKLVL_HIGH = (1<<1),
}SIO_BREAKLVL_TypeDef;
/**
* @brief SIO TORSTEN register
*/
typedef enum
{
SIO_TORSTDIS = (0<<15),
SIO_TORSTEN = (1<<15),
}SIO_TORSTEN_TypeDef;
/**
* @brief LPT INT MASK SET/CLR Set
*/
typedef enum
{
SIO_TXDNE = (0x01 << 0),
SIO_RXDNE = (0x01 << 1),
SIO_TXBUFEMPT = (0x01 << 2),
SIO_RXBUFEMPT = (0x01 << 3),
SIO_BREAK = (0x01 << 4),
SIO_TIME = (0x01 << 5),
}SIO_IMSCR_TypeDef;
#define TX_D0 (0X00)
#define TX_D1 (0X01)
#define TX_DL (0X02)
#define TX_DH (0X03)
extern void SIO_DeInit(void);
extern void SIO_IO_Init(SIO_IOG_TypeDef IOGx);
extern void SIO_TX_Init(SIO_CLK_TypeDef CLKX,U8_T TCKPRSX);
extern void SIO_TX_Configure(SIO_IDLEST_TypeDef IDLEX,SIO_TXDIR_TypeDef TXDIRX,U8_T TXBUFLENX,U8_T TXCNTX,U8_T D0DURX,U8_T D1DURX,SIO_LENOBH_TypeDef LENOBHX,
SIO_LENOBL_TypeDef LENOBLX,U8_T HSQX,U8_T LSQX);
extern void SIO_TXBUF_Set(U8_T D30,U8_T D28,U8_T D26,U8_T D24,U8_T D22,U8_T D20,U8_T D18,U8_T D16,
U8_T D14,U8_T D12,U8_T D10,U8_T D08,U8_T D06,U8_T D04,U8_T D02,U8_T D00);
extern void SIO_RX_Init(SIO_CLK_TypeDef CLKX,SIO_RXDEB_TypeDef RXDEBX,U8_T DEBCKSX);
extern void SIO_RX_Configure0(SIO_BSTSEL_TypeDef BSTSELX,SIO_TRGMODE_TypeDef TRGMX,U8_T SPLCNTX,U8_T EXTRACTX,U8_T HITHRX,
SIO_ALIGNEN_TypeDef ALIGNX,SIO_RXDIR_TypeDef RXDIRX,SIO_RXMODE_TypeDef RXMODEX,U8_T RXLENX,U8_T RXBUFLENX,U8_T RXKPRSX);
extern void SIO_RX_Configure1(SIO_BREAKEN_TypeDef BREAKX,SIO_BREAKLVL_TypeDef BREAKLVLX,U8_T BREKCNTX,SIO_TORSTEN_TypeDef TORSTX,U8_T TOCNTX);
extern void SIO_ConfigInterrupt_CMD(FunctionalStatus NewState,SIO_IMSCR_TypeDef SIO_IMSCR_X);
extern void SIO_INT_ENABLE(void);
extern void SIO_INT_DISABLE(void);
/*************************************************************/
#endif /**< apt32f102_sio_H */