1 /*******************************************************************************
2 * Copyright (C) 2019, Huada Semiconductor Co.,Ltd All rights reserved.
3 *
4 * This software is owned and published by:
5 * Huada Semiconductor Co.,Ltd ("HDSC").
6 *
7 * BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
8 * BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
9 *
10 * This software contains source code for use with HDSC
11 * components. This software is licensed by HDSC to be adapted only
12 * for use in systems utilizing HDSC components. HDSC shall not be
13 * responsible for misuse or illegal use of this software for devices not
14 * supported herein. HDSC is providing this software "AS IS" and will
15 * not be responsible for issues arising from incorrect user implementation
16 * of the software.
17 *
18 * Disclaimer:
19 * HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
20 * REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
21 * ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
22 * WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
23 * WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
24 * WARRANTY OF NONINFRINGEMENT.
25 * HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
26 * NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
27 * LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
28 * LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
29 * INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
30 * INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
31 * SAVINGS OR PROFITS,
32 * EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
33 * YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
34 * INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
35 * FROM, THE SOFTWARE.
36 *
37 * This software may be replicated in part or whole for the licensed use,
38 * with the restriction that this Disclaimer and Copyright notice must be
39 * included with each copy of this software, whether used in part or whole,
40 * at all times.
41 */
42 /******************************************************************************/
43 /** \file OPA.h
44  **
45  ** Headerfile for OPA functions
46  ** @link OPA Group Some description @endlink
47  **
48  ** History:
49  **   - 2019-04-11       First Version
50  **
51  ******************************************************************************/
52 
53 #ifndef __OPA_H__
54 #define __OPA_H__
55 
56 /*******************************************************************************
57  * Include files
58  ******************************************************************************/
59 #include "ddl.h"
60 
61 #ifdef __cplusplus
62 extern "C"
63 {
64 #endif
65 
66 /**
67  ******************************************************************************
68  ** \defgroup OPAGroup  (OPA)
69   **
70  ******************************************************************************/
71 //@{
72 
73 /**
74  *******************************************************************************
75  ** function prototypes.
76  ******************************************************************************/
77 
78 typedef enum en_opa_oenx
79 {
80     OpaOen1  = 3u,            //OUT1
81     OpaOen2  = 4u,            //OUT2
82     OpaOen3  = 5u,            //OUT3
83     OpaOen4  = 6u             //OUT4
84 }en_opa_oenx_t;
85 
86 typedef enum en_opa_clksrc    // 自动校准脉冲宽度设置
87 {
88     OpaM1Pclk     = 0u,       // 1个PCLK周期
89     OpaM2Pclk     = 1u,       // 2个PCLK周期
90     OpaM4Pclk     = 2u,       // 4个PCLK周期
91     OpaM8Pclk     = 3u,       // 8个PCLK周期
92     OpaM16Pclk    = 4u,       // 16个PCLK周期
93     OpaM32Pclk    = 5u,       // 32个PCLK周期
94     OpaM64Pclk    = 6u,       // 64个PCLK周期
95     OpaM128Pclk   = 7u,       // 128个PCLK周期
96     OpaM256Pclk   = 8u,       // 256个PCLK周期
97     OpaM512Pclk   = 9u,       // 512个PCLK周期
98     OpaM1024Pclk  = 10u,      // 1024个PCLK周期
99     OpaM2048Pclk  = 11u,      // 2048个PCLK周期
100     OpaM4096Pclk  = 12u       // 4096个PCLK周期
101 }en_opa_clksrc_t;
102 
103 typedef enum en_opa_set0ctrl
104 {
105     enClkSwSet = 3u,          // 软件校准使能
106     enAzPulse  = 2u,          // 软件校准
107     enTrigger  = 1u,          // 软件触发自动教零
108     enAdctr    = 1u           // 使能ADC启动触发OPA自动校准功能
109 }en_opa_set0ctrl_t;
110 
111 typedef struct
112 {
113     boolean_t         bAzen;        // 自动教零配置
114     boolean_t         bClk_sw_set;  // 自动教零选择
115     boolean_t         bAz_pulse;    // 软件校准设置
116     boolean_t         bTrigger;     // 软件触发校准设置
117     boolean_t         bAdctr_en;    // ADC启动触发OPA自动校准设置
118     en_opa_clksrc_t   enClksrc;     // 自动校准脉冲宽度设置
119 }stc_opa_zcfg_t;
120 
121 
122 /******************************************************************************
123  * Global variable declarations ('extern', definition in C source)
124  ******************************************************************************/
125 
126 /******************************************************************************
127  * Global function prototypes (definition in C source)
128  ******************************************************************************/
129 //OPA 通道使能
130 extern void Opa_Cmd(boolean_t NewStatus);
131 extern void Opa_CmdBuf(boolean_t NewStatus);
132 
133 //OPA零点校准配置
134 extern void Opa_SetZero(stc_opa_zcfg_t* InitZero);
135 
136 //使能输出OUTX
137 extern void Opa_CmdOnex(en_opa_oenx_t onex, boolean_t NewState);
138 
139 //配置校零相关的位
140 extern void Opa_ZeroBitCtrl(en_opa_set0ctrl_t CtrlBit, boolean_t NewState);
141 
142 //@} // OPA Group
143 
144 #ifdef __cplusplus
145 #endif
146 
147 #endif /* __OPA_H__ */
148 /*******************************************************************************
149  * EOF (not truncated)
150  ******************************************************************************/
151 
152 
153