221 lines
6.2 KiB
C
221 lines
6.2 KiB
C
|
/********************************** (C) COPYRIGHT *******************************
|
||
|
* File Name : ch32l103_opa.h
|
||
|
* Author : WCH
|
||
|
* Version : V1.0.0
|
||
|
* Date : 2023/07/08
|
||
|
* Description : This file contains all the functions prototypes for the
|
||
|
* OPA firmware library.
|
||
|
*********************************************************************************
|
||
|
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
|
||
|
* Attention: This software (modified or not) and binary are used for
|
||
|
* microcontroller manufactured by Nanjing Qinheng Microelectronics.
|
||
|
*******************************************************************************/
|
||
|
#ifndef __CH32L103_OPA_H
|
||
|
#define __CH32L103_OPA_H
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
#include "ch32l103.h"
|
||
|
|
||
|
/* OPA_member_enumeration */
|
||
|
typedef enum
|
||
|
{
|
||
|
OPA1 = 0,
|
||
|
} OPA_Num_TypeDef;
|
||
|
|
||
|
/* OPA_out_channel_enumeration */
|
||
|
typedef enum
|
||
|
{
|
||
|
OUT_IO_OUT0 = 0, /* PA3 */
|
||
|
OUT_IO_OUT1, /* PB1 */
|
||
|
OUT_IO_OUT2, /* PA2 */
|
||
|
OUT_IO_OUT3, /* PA4 */
|
||
|
OUT_IO_OUT4, /* PB0 */
|
||
|
OUT_IO_OFF
|
||
|
} OPA_Mode_TypeDef;
|
||
|
|
||
|
/* OPA_PSEL_enumeration */
|
||
|
typedef enum
|
||
|
{
|
||
|
CHP0 = 0, /* PB15 */
|
||
|
CHP1, /* PB0 */
|
||
|
CHP2, /* PB14 */
|
||
|
CHP3, /* PA7 */
|
||
|
CHP4, /* PA0 */
|
||
|
CHP5, /* PA6 */
|
||
|
CHP_OFF
|
||
|
} OPA_PSEL_TypeDef;
|
||
|
|
||
|
/* OPA_FB_enumeration */
|
||
|
typedef enum
|
||
|
{
|
||
|
FB_OFF = 0,
|
||
|
FB_ON
|
||
|
} OPA_FB_TypeDef;
|
||
|
|
||
|
/* OPA_NSEL_enumeration */
|
||
|
typedef enum
|
||
|
{
|
||
|
CHN0 = 0, /* PB11 */
|
||
|
CHN1, /* PA6 */
|
||
|
CHN2, /* PB10 */
|
||
|
CHN3, /* PA5 */
|
||
|
CHN4, /* PA1 */
|
||
|
CHN5, /* PA7 */
|
||
|
CHN2_PGA_32xIN, /* PB10 */
|
||
|
CHN_PGA_8xIN,
|
||
|
CHN_PGA_16xIN,
|
||
|
CHN_PGA_32xIN,
|
||
|
CHN_PGA_64xIN,
|
||
|
CHN_OFF = 0xF
|
||
|
} OPA_NSEL_TypeDef;
|
||
|
|
||
|
/* OPA_PSEL_POLL_enumeration */
|
||
|
typedef enum
|
||
|
{
|
||
|
CHP_OPA1_OFF = 0,
|
||
|
CHP_OPA1_ON,
|
||
|
} OPA_PSEL_POLL_TypeDef;
|
||
|
|
||
|
/* OPA_BKIN_EN_enumeration */
|
||
|
typedef enum
|
||
|
{
|
||
|
BKIN_OPA1_OFF = 0, /* TIM1 braking signal source form IO input */
|
||
|
BKIN_OPA1_ON, /* TIM1 braking signal source form OPA output */
|
||
|
} OPA_BKIN_EN_TypeDef;
|
||
|
|
||
|
/* OPA_RST_EN_enumeration */
|
||
|
typedef enum
|
||
|
{
|
||
|
RST_OPA1_OFF = 0,
|
||
|
RST_OPA1_ON,
|
||
|
} OPA_RST_EN_TypeDef;
|
||
|
|
||
|
/* OPA_OUT_IE_enumeration */
|
||
|
typedef enum
|
||
|
{
|
||
|
OUT_IE_OPA1_OFF = 0,
|
||
|
OUT_IE_OPA1_ON,
|
||
|
} OPA_OUT_IE_TypeDef;
|
||
|
|
||
|
/* OPA_CNT_IE_enumeration */
|
||
|
typedef enum
|
||
|
{
|
||
|
CNT_IE_OFF = 0,
|
||
|
CNT_IE_ON,
|
||
|
} OPA_CNT_IE_TypeDef;
|
||
|
|
||
|
/* OPA_NMI_IE_enumeration */
|
||
|
typedef enum
|
||
|
{
|
||
|
NMI_IE_OFF = 0,
|
||
|
NMI_IE_ON,
|
||
|
} OPA_NMI_IE_TypeDef;
|
||
|
|
||
|
/* OPA_PSEL_POLL_NUM_enumeration */
|
||
|
typedef enum
|
||
|
{
|
||
|
CHP_POLL_NUM_1 = 0,
|
||
|
CHP_POLL_NUM_2,
|
||
|
CHP_POLL_NUM_3,
|
||
|
CHP_POLL_NUM_4,
|
||
|
CHP_POLL_NUM_5,
|
||
|
CHP_POLL_NUM_6
|
||
|
} OPA_PSEL_POLL_NUM_TypeDef;
|
||
|
|
||
|
/* Offset_voltage_adjustment_value_polarity */
|
||
|
typedef enum
|
||
|
{
|
||
|
OPA_Vos_Ads_N = 0,
|
||
|
OPA_Vos_Ads_P
|
||
|
} OPA_Vos_ADS_POLARITY_TypeDef;
|
||
|
|
||
|
/* OPA Init Structure definition */
|
||
|
typedef struct
|
||
|
{
|
||
|
uint16_t OPA_POLL_Interval; /* OPA polling interval = (OPA_POLL_Interval+1)*1us
|
||
|
This parameter must range from 0 to 0x1FF.*/
|
||
|
OPA_Num_TypeDef OPA_NUM; /* Specifies the members of OPA */
|
||
|
OPA_Mode_TypeDef Mode; /* Specifies the mode of OPA */
|
||
|
OPA_PSEL_TypeDef PSEL; /* Specifies the positive channel of OPA */
|
||
|
OPA_FB_TypeDef FB; /* Specifies the internal feedback resistor of OPA */
|
||
|
OPA_NSEL_TypeDef NSEL; /* Specifies the negative channel of OPA */
|
||
|
OPA_PSEL_POLL_TypeDef PSEL_POLL; /* Specifies the positive channel poll of OPA */
|
||
|
OPA_BKIN_EN_TypeDef BKIN_EN; /* Specifies the brake input source of OPA */
|
||
|
OPA_RST_EN_TypeDef RST_EN; /* Specifies the reset source of OPA */
|
||
|
OPA_OUT_IE_TypeDef OUT_IE; /* Specifies the out interrupt of OPA */
|
||
|
OPA_CNT_IE_TypeDef CNT_IE; /* Specifies the out interrupt rising edge of sampling data */
|
||
|
OPA_NMI_IE_TypeDef NMI_IE; /* Specifies the out NIM interrupt of OPA */
|
||
|
OPA_PSEL_POLL_NUM_TypeDef POLL_NUM; /* Specifies the number of forward inputs*/
|
||
|
} OPA_InitTypeDef;
|
||
|
|
||
|
/* CMP_member_enumeration */
|
||
|
typedef enum
|
||
|
{
|
||
|
CMP1 = 0,
|
||
|
CMP2,
|
||
|
CMP3
|
||
|
} CMP_Num_TypeDef;
|
||
|
|
||
|
/* CMP_out_channel_enumeration */
|
||
|
typedef enum
|
||
|
{
|
||
|
OUT_IO0 = 0,
|
||
|
OUT_IO1,
|
||
|
OUT_IO_TIM2
|
||
|
} CMP_Mode_TypeDef;
|
||
|
|
||
|
/* CMP_NSEL_enumeration */
|
||
|
typedef enum
|
||
|
{
|
||
|
CMP_CHN0 = 0,
|
||
|
CMP_CHN1,
|
||
|
} CMP_NSEL_TypeDef;
|
||
|
|
||
|
/* CMP_PSEL_enumeration */
|
||
|
typedef enum
|
||
|
{
|
||
|
CMP_CHP1 = 0,
|
||
|
CMP_CHP2,
|
||
|
} CMP_PSEL_TypeDef;
|
||
|
|
||
|
/* CMP Init Structure definition */
|
||
|
typedef struct
|
||
|
{
|
||
|
CMP_Num_TypeDef CMP_NUM; /* Specifies the members of CMP */
|
||
|
CMP_Mode_TypeDef Mode; /* Specifies the mode of CMP */
|
||
|
CMP_NSEL_TypeDef NSEL; /* Specifies the negative channel of CMP */
|
||
|
CMP_PSEL_TypeDef PSEL; /* Specifies the positive channel of CMP */
|
||
|
} CMP_InitTypeDef;
|
||
|
|
||
|
/* OPA_flags_definition */
|
||
|
#define OPA_FLAG_OUT_OPA1 ((uint16_t)0x1000)
|
||
|
#define OPA_FLAG_OUT_CNT ((uint16_t)0x4000)
|
||
|
|
||
|
/* CMP_WakeUp_IO_mode_definition */
|
||
|
#define CMP_WakeUp_Rising_Falling ((uint32_t)0x01000000)
|
||
|
#define CMP_WakeUp_Rising ((uint32_t)0x02000000)
|
||
|
#define CMP_WakeUp_Falling ((uint32_t)0x03000000)
|
||
|
|
||
|
void OPCM_Unlock(void);
|
||
|
void OPCM_Lock(void);
|
||
|
void OPA_Init(OPA_InitTypeDef *OPA_InitStruct);
|
||
|
void OPA_StructInit(OPA_InitTypeDef *OPA_InitStruct);
|
||
|
void OPA_Cmd(OPA_Num_TypeDef OPA_NUM, FunctionalState NewState);
|
||
|
void OPA_LP_Cmd(FunctionalState NewState);
|
||
|
void OPA_CMP_Init(CMP_InitTypeDef *CMP_InitStruct);
|
||
|
void OPA_CMP_StructInit(CMP_InitTypeDef *CMP_InitStruct);
|
||
|
void OPA_CMP_Cmd(CMP_Num_TypeDef CMP_NUM, FunctionalState NewState);
|
||
|
void OPA_CMP_LP_Cmd(CMP_Num_TypeDef CMP_NUM, FunctionalState NewState);
|
||
|
void OPA_CMP_WakeUp_ModeConfig(uint32_t CMP_WakeUP_Mode);
|
||
|
FlagStatus OPA_GetFlagStatus( uint16_t OPA_FLAG);
|
||
|
void OPA_ClearFlag(uint16_t OPA_FLAG);
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif
|