536 lines
25 KiB
Plaintext
536 lines
25 KiB
Plaintext
C51 COMPILER V9.59.0.0 SC92F_ADC 01/18/2024 10:03:13 PAGE 1
|
||
|
||
|
||
C51 COMPILER V9.59.0.0, COMPILATION OF MODULE SC92F_ADC
|
||
OBJECT MODULE PLACED IN ..\Output\sc92f_adc.obj
|
||
COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\FWLib\SC92F_Lib\src\sc92f_adc.c LARGE OBJECTADVANCED OPTIMIZE(8,SIZE)
|
||
- BROWSE INCDIR(..\FWLib\SC92F_Lib\inc;..\User;..\Apps;..\Apps;..\User) DEFINE(SC92F836xB) DEBUG PRINT(..\List\sc92f_adc.
|
||
-lst) OBJECT(..\Output\sc92f_adc.obj)
|
||
|
||
line level source
|
||
|
||
1 //************************************************************
|
||
2 // Copyright (c) 深圳市赛元微电子有限公司
|
||
3 // 文件名称: sc92f_adc.c
|
||
4 // 作者: 赛元应用团队
|
||
5 // 模块功能: ADC固件库函数C文件
|
||
6 // 最后更正日期: 2022年3月23日
|
||
7 // 版本: V1.10005
|
||
8 // 说明:
|
||
9 //*************************************************************
|
||
10
|
||
11 /* 头文件引用 */
|
||
12 #include "sc92f_adc.h"
|
||
13
|
||
14 #if !defined(SC92F827X) && !defined(SC92F837X)
|
||
15 /**************************************************
|
||
16 *函数名称:void ADC_DeInit(void)
|
||
17 *函数功能:ADC相关寄存器复位至缺省值
|
||
18 *入口参数:void
|
||
19 *出口参数:void
|
||
20 **************************************************/
|
||
21 void ADC_DeInit(void)
|
||
22 {
|
||
23 1 ADCCON = 0x00;
|
||
24 1 ADCCFG0 = 0X00;
|
||
25 1 ADCCFG1 = 0X00;
|
||
26 1 #if defined(SC92F854x) || defined(SC92F754x) || defined(SC92F844xB) || defined(SC92F744xB) || defined(SC92
|
||
-F84Ax_2) || defined(SC92F74Ax_2)\
|
||
27 1 || defined(SC92F846xB) || defined(SC92F746xB) || defined(SC92F836xB) || defined(SC92F736xB) || defined(SC
|
||
-92F84Ax) || defined(SC92F74Ax)\
|
||
28 1 || defined(SC92F83Ax) || defined(SC92F73Ax) || defined(SC92F848x) || defined(SC92F748x) || defined (SC92F
|
||
-859x) || defined (SC92F759x)\
|
||
29 1 || defined (SC92L853x) || defined (SC92L753x)
|
||
30 1 ADCCFG2 = 0X00;
|
||
31 1 #endif
|
||
32 1 ADCVL = 0X00;
|
||
33 1 ADCVH = 0X00;
|
||
34 1 EADC = 0;
|
||
35 1 IPADC = 0;
|
||
36 1 }
|
||
37
|
||
38 /**************************************************
|
||
39 *函数名称:void ADC_Init(ADC_PresSel_TypeDef ADC_PrescalerSelection, ADC_Cycle_TypeDef ADC_Cycle)
|
||
40 *函数功能:ADC初始化配置函数
|
||
41 *入口参数:
|
||
42 ADC_PresSel_TypeDef:ADC_PrescalerSelection:预分频选择
|
||
43 ADC_Cycle_TypeDef:ADC_Cycle:采样时钟周期选择
|
||
44 *出口参数:void
|
||
45 **************************************************/
|
||
46 #if defined(SC92F854x) || defined(SC92F754x) || defined(SC92F844xB) || defined(SC92F744xB) || defined(SC92
|
||
-F84Ax_2) || defined(SC92F74Ax_2)\
|
||
47 || defined(SC92F846xB) || defined(SC92F746xB) || defined(SC92F836xB) || defined(SC92F736xB) || defined(SC
|
||
-92F84Ax) || defined(SC92F74Ax)\
|
||
48 || defined(SC92F83Ax) || defined(SC92F73Ax) || defined(SC92FWxx) || defined(SC92F848x) || defined(SC92F74
|
||
C51 COMPILER V9.59.0.0 SC92F_ADC 01/18/2024 10:03:13 PAGE 2
|
||
|
||
-8x)\
|
||
49 || defined (SC92F859x) || defined (SC92F759x)
|
||
50 void ADC_Init(ADC_PresSel_TypeDef ADC_PrescalerSelection,
|
||
51 ADC_Cycle_TypeDef ADC_Cycle)
|
||
52 {
|
||
53 1 /* 配置ADC时钟分频和采样周期 */
|
||
54 1 ADCCFG2 = ADC_PrescalerSelection | ADC_Cycle;
|
||
55 1 }
|
||
56 #elif defined(SC92F7003) || defined(SC92F8003) || defined(SC92F740x)
|
||
void ADC_Init(ADC_PresSel_TypeDef ADC_PrescalerSelection,
|
||
ADC_Cycle_TypeDef ADC_Cycle)
|
||
{
|
||
/* 配置ADC时钟分频和采样周期 */
|
||
ADCCFG1 = ADC_PrescalerSelection | ADC_Cycle;
|
||
}
|
||
#elif defined(SC92F742x) || defined(SC92F725X) || defined(SC92F735X) || defined(SC92F730x) || defined(SC92
|
||
-F732X) || defined(SC92F7490)\
|
||
|| defined(SC93F833x) || defined(SC93F843x) || defined(SC93F743x)
|
||
void ADC_Init(ADC_PresSel_TypeDef ADC_PrescalerSelection,
|
||
ADC_Cycle_TypeDef ADC_Cycle)
|
||
{
|
||
ADC_Cycle = 0; //SC92F742x无此功能
|
||
/* 配置ADC时钟分频 */
|
||
ADCCON = (ADCCON & 0xDF) | ADC_PrescalerSelection;
|
||
}
|
||
#elif defined (SC92L853x) || defined (SC92L753x)
|
||
void ADC_Init(ADC_PresSel_TypeDef ADC_PrescalerSelection, ADC_Cycle_TypeDef ADC_Cycle)
|
||
{
|
||
ADC_Cycle = 0x00; //该入参在92L系列无效
|
||
/* 配置ADC时钟分频 */
|
||
ADCCFG2 = ADC_PrescalerSelection;
|
||
}
|
||
#endif
|
||
80
|
||
81 /**************************************************
|
||
82 *函数名称:void ADC_ChannelConfig(ADC_Channel_TypeDef ADC_Channel, FunctionalState NewState)
|
||
83 *函数功能:ADC输入口配置函数,并且使能相关功能
|
||
84 *入口参数:
|
||
85 ADC_Channel_TypeDef:ADC_Channel:ADC输入口选择
|
||
86 FunctionalState:NewState:ADCx使能/关闭选择
|
||
87 *出口参数:void
|
||
88 **************************************************/
|
||
89 #if defined(SC92F854x) || defined(SC92F754x) || defined(SC92F844xB) || defined(SC92F744xB) || defined(SC92
|
||
-F84Ax_2) || defined(SC92F74Ax_2)\
|
||
90 || defined(SC92F846xB) || defined(SC92F746xB) || defined(SC92F836xB) || defined(SC92F736xB) || defined(S
|
||
-C92F84Ax) || defined(SC92F74Ax)\
|
||
91 || defined(SC92F83Ax) || defined(SC92F73Ax) || defined(SC92FWxx) || defined(SC92F848x) || defined(SC92F7
|
||
-48x)\
|
||
92 || defined(SC92F859x) || defined(SC92F759x) || defined (SC92L853x) || defined (SC92L753x)
|
||
93 void ADC_ChannelConfig(ADC_Channel_TypeDef ADC_Channel, FunctionalState NewState)
|
||
94 {
|
||
95 1 uint16_t TempReg;
|
||
96 1 /* 配置ADC转换通道 */
|
||
97 1 ADCCON = (ADCCON & 0XE0) | ADC_Channel;
|
||
98 1
|
||
99 1 /* 配置ADC外部采样通道 */
|
||
100 1 if (ADC_Channel < ADC_CHANNEL_VDD_D4) //内部采样通道无需配置
|
||
101 1 {
|
||
102 2 TempReg = (0x0001 << ADC_Channel);
|
||
103 2 if (NewState == DISABLE)// 使能ADC采样通道
|
||
104 2 {
|
||
105 3 ADCCFG0 &= (~(uint8_t)TempReg);
|
||
C51 COMPILER V9.59.0.0 SC92F_ADC 01/18/2024 10:03:13 PAGE 3
|
||
|
||
106 3 ADCCFG1 &= (~(uint8_t)(TempReg >> 8));
|
||
107 3 }
|
||
108 2 else // 失能ADC采样通道
|
||
109 2 {
|
||
110 3 ADCCFG0 |= ((uint8_t)TempReg);
|
||
111 3 ADCCFG1 |= ((uint8_t)(TempReg >> 8));
|
||
112 3 }
|
||
113 2 }
|
||
114 1 }
|
||
115 #elif defined(SC92F7003) || defined(SC92F8003) || defined(SC92F740x) || defined(SC92F7490)
|
||
void ADC_ChannelConfig(ADC_Channel_TypeDef ADC_Channel, FunctionalState NewState)
|
||
{
|
||
uint8_t TempReg;
|
||
/* 配置ADC转换通道 */
|
||
ADCCON = (ADCCON & 0xE0) | ADC_Channel;
|
||
|
||
/* 配置ADC采样通道 */
|
||
if (ADC_Channel < ADC_CHANNEL_VDD_D4) //内部采样通道无需配置
|
||
{
|
||
TempReg = (0x01 << ADC_Channel);
|
||
if (ADC_Channel < ADC_CHANNEL_VDD_D4)
|
||
{
|
||
if (NewState == DISABLE) //失能ADC采样通道
|
||
{
|
||
ADCCFG0 &= (~TempReg);
|
||
}
|
||
else //使能ADC采样通道
|
||
{
|
||
ADCCFG0 |= TempReg;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
#elif defined(SC92F742x) || defined(SC92F730x) || defined(SC92F725X) || defined(SC92F735X) || defined(SC92
|
||
-F732X)
|
||
void ADC_ChannelConfig(ADC_Channel_TypeDef ADC_Channel, FunctionalState NewState)
|
||
{
|
||
uint16_t TempReg;
|
||
/* 配置ADC转换通道 */
|
||
ADCCON = (ADCCON & 0xF0) | ADC_Channel;
|
||
|
||
/* 配置ADC采样通道 */
|
||
if (ADC_Channel < ADC_CHANNEL_VDD_D4) //内部采样通道无需配置
|
||
{
|
||
TempReg = (0x0001 << ADC_Channel);
|
||
if (NewState == DISABLE)
|
||
{
|
||
ADCCFG0 &= (~(uint8_t)TempReg);
|
||
ADCCFG1 &= (~(uint8_t)(TempReg >> 8));
|
||
}
|
||
else
|
||
{
|
||
ADCCFG0 |= ((uint8_t)TempReg);
|
||
ADCCFG1 |= ((uint8_t)(TempReg >> 8));
|
||
}
|
||
}
|
||
}
|
||
#elif defined(SC93F833x) || defined(SC93F843x) || defined(SC93F743x)
|
||
void ADC_ChannelConfig(ADC_Channel_TypeDef ADC_Channel, FunctionalState NewState)
|
||
{
|
||
uint16_t TempReg;
|
||
/* 配置ADC转换通道 */
|
||
C51 COMPILER V9.59.0.0 SC92F_ADC 01/18/2024 10:03:13 PAGE 4
|
||
|
||
ADCCON = (ADCCON & 0xF0) | ADC_Channel;
|
||
|
||
/* 配置ADC采样通道 */
|
||
if (ADC_Channel < ADC_CHANNEL_Temp) //配置外部采样通道
|
||
{
|
||
TempReg = (0x0001 << ADC_Channel);
|
||
if (NewState == DISABLE)
|
||
{
|
||
ADCCFG0 &= (~(uint8_t)TempReg);
|
||
ADCCFG1 &= (~(uint8_t)(TempReg >> 8));
|
||
}
|
||
else
|
||
{
|
||
ADCCFG0 |= ((uint8_t)TempReg);
|
||
ADCCFG1 |= ((uint8_t)(TempReg >> 8));
|
||
}
|
||
}
|
||
else if (ADC_Channel == ADC_CHANNEL_Temp) //内部温度采样通道
|
||
{
|
||
if (NewState == DISABLE)
|
||
{
|
||
TSCFG &= 0X7F;
|
||
}
|
||
else
|
||
{
|
||
/* ADC参考电压选择内部2.4V作为参考 */
|
||
OPINX = 0xC2;
|
||
OPREG = OPREG & 0X7F | 0x80;
|
||
|
||
TSCFG |= 0x80;
|
||
}
|
||
}
|
||
else if (ADC_Channel == ADC_CHANNEL_9_PGA) //可变增益放大器采样通道
|
||
{
|
||
unsigned char code *IFBAddr = 0x3D;
|
||
if (NewState == DISABLE)
|
||
{
|
||
ADCCFG1 &= (~(uint8_t)0x02); //关闭通道9
|
||
PGACON &= 0x7F; //使能PGA
|
||
}
|
||
/* 读取PGA内部出厂校准值 */
|
||
else
|
||
{
|
||
ADCCFG1 |= ((uint8_t)0x02); //PGA输入通道与通道9复用,使能通道9
|
||
|
||
IAPADE = 0x01; //指针指向 IFB 区
|
||
PGACFG = *(IFBAddr); //读取校准值
|
||
IAPADE = 0x00; //指针指向 ROM 区
|
||
|
||
PGACON |= 0x80; //使能PGA
|
||
}
|
||
}
|
||
}
|
||
#endif
|
||
221
|
||
222 /**************************************************
|
||
223 *函数名称:void ADC_EAINConfig(uint16_t ADC_Channel, FunctionalState NewState)
|
||
224 *函数功能:将对应的ADC输入口设置为模拟输入模式
|
||
225 *入口参数:
|
||
226 ADC_EAIN_TypeDef:ADC_EAIN_Select:选择需要设置的ADC口
|
||
227 FunctionalState:NewState:ADC通道使能/关闭选择
|
||
228 *出口参数:void
|
||
C51 COMPILER V9.59.0.0 SC92F_ADC 01/18/2024 10:03:13 PAGE 5
|
||
|
||
229 **************************************************/
|
||
230 void ADC_EAINConfig(uint16_t ADC_EAIN_Select,
|
||
231 FunctionalState NewState)
|
||
232 {
|
||
233 1 if (NewState == DISABLE)
|
||
234 1 {
|
||
235 2 ADCCFG0 &= (~(uint8_t)ADC_EAIN_Select);
|
||
236 2 #if defined (SC92F854x) || defined (SC92F754x) || defined (SC92F844xB) || defined (SC92F744xB) || defined
|
||
- (SC92F84Ax_2) || defined (SC92F74Ax_2)\
|
||
237 2 || defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined (SC92F736xB)||defined
|
||
- (SC92F84Ax) || defined (SC92F74Ax)\
|
||
238 2 || defined(SC92F83Ax) || defined(SC92F73Ax) || defined(SC92F848x) || defined(SC92F748x) || defined(SC92F
|
||
-859x) || defined (SC92F759x)\
|
||
239 2 || defined (SC92L853x) || defined (SC92L753x)
|
||
240 2 ADCCFG1 &= (~(uint8_t)(ADC_EAIN_Select >> 8));
|
||
241 2 #endif
|
||
242 2 }
|
||
243 1 else
|
||
244 1 {
|
||
245 2 ADCCFG0 |= ((uint8_t)ADC_EAIN_Select);
|
||
246 2 #if defined (SC92F854x) || defined (SC92F754x) || defined (SC92F844xB) || defined (SC92F744xB)||defined (
|
||
-SC92F84Ax_2) || defined (SC92F74Ax_2)\
|
||
247 2 || defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined (SC92F736xB) || defin
|
||
-ed (SC92F84Ax) || defined (SC92F74Ax)\
|
||
248 2 || defined(SC92F83Ax) || defined(SC92F73Ax) || defined(SC92F848x) || defined(SC92F748x) || defined(SC92F
|
||
-859x) || defined (SC92F759x)\
|
||
249 2 || defined (SC92L853x) || defined (SC92L753x)
|
||
250 2 ADCCFG1 |= ((uint8_t)(ADC_EAIN_Select >> 8));
|
||
251 2 #endif
|
||
252 2 }
|
||
253 1 }
|
||
254 /*****************************************************
|
||
255 *函数名称:void ADC_Cmd(FunctionalState NewState)
|
||
256 *函数功能:ADC功能开关函数
|
||
257 *入口参数:
|
||
258 FunctionalState:NewState:功能启动/关闭选择
|
||
259 *出口参数:void
|
||
260 *****************************************************/
|
||
261 void ADC_Cmd(FunctionalState NewState)
|
||
262 {
|
||
263 1 if (NewState == DISABLE)
|
||
264 1 {
|
||
265 2 ADCCON &= 0X7F;
|
||
266 2 }
|
||
267 1 else
|
||
268 1 {
|
||
269 2 ADCCON |= 0x80;
|
||
270 2 }
|
||
271 1 }
|
||
272
|
||
273 /*****************************************************
|
||
274 *函数名称:uint16_t ADC_GetConversionValue(void)
|
||
275 *函数功能:获得一次AD转换数据
|
||
276 *入口参数:void
|
||
277 *出口参数:uint16_t
|
||
278 *****************************************************/
|
||
279 unsigned int ADC_GetConversionValue(void)
|
||
280 {
|
||
281 1 return ((ADCVH << 4) + (ADCVL >> 4));
|
||
282 1 }
|
||
283
|
||
284 /*****************************************************
|
||
C51 COMPILER V9.59.0.0 SC92F_ADC 01/18/2024 10:03:13 PAGE 6
|
||
|
||
285 *函数名称:FlagStatus ADC_GetFlagStatus(void)
|
||
286 *函数功能:获得ADC中断标志状态
|
||
287 *入口参数:void
|
||
288 *出口参数:
|
||
289 FlagStatus:ADC中断标志状态
|
||
290 *****************************************************/
|
||
291 FlagStatus ADC_GetFlagStatus(void)
|
||
292 {
|
||
293 1 #if defined (SC92F854x) || defined (SC92F754x) ||defined (SC92F844xB) || defined (SC92F744xB)||defined (
|
||
-SC92F84Ax_2) || defined (SC92F74Ax_2)\
|
||
294 1 || defined (SC92F846xB) || defined (SC92F746xB) || defined (SC92F836xB) || defined (SC92F736xB)||defined
|
||
- (SC92F84Ax) || defined (SC92F74Ax)\
|
||
295 1 || defined (SC92F83Ax) || defined (SC92F73Ax) || defined (SC92F7003) || defined (SC92F8003) || defined
|
||
-(SC92F740x) || defined (SC92FWxx)\
|
||
296 1 || defined(SC92F848x) || defined(SC92F748x) || defined(SC92F859x) || defined (SC92F759x) || defined (SC92
|
||
-L853x) || defined (SC92L753x)
|
||
297 1 return (bool)(ADCCON & 0x20);
|
||
298 1 #elif defined(SC92F742x) || defined(SC92F730x) || defined(SC92F725X) || defined(SC92F735X) || defined(SC92
|
||
-F732X) || defined(SC92F7490) || defined(SC93F833x) || defined(SC93F843x) || defined(SC93F743x)
|
||
return (bool)(ADCCON & 0x10);
|
||
#endif
|
||
301 1 }
|
||
302
|
||
303 /*****************************************************
|
||
304 *函数名称:void ADC_ClearFlag(void)
|
||
305 *函数功能:清除ADC中断标志状态
|
||
306 *入口参数:void
|
||
307 *出口参数:void
|
||
308 *****************************************************/
|
||
309 void ADC_ClearFlag(void)
|
||
310 {
|
||
311 1 #if defined(SC92F854x) || defined(SC92F754x) || defined(SC92F844xB) || defined(SC92F744xB) || defined(SC92
|
||
-F84Ax_2) || defined(SC92F74Ax_2)\
|
||
312 1 || defined(SC92F846xB) || defined(SC92F746xB) || defined(SC92F836xB) || defined(SC92F736xB) || defined(S
|
||
-C92F84Ax) || defined(SC92F74Ax)\
|
||
313 1 || defined(SC92F83Ax) || defined(SC92F73Ax) || defined(SC92F8003) || defined(SC92F740x) || defined(SC92F
|
||
-848x) || defined(SC92F748x)\
|
||
314 1 || defined(SC92F859x) || defined(SC92F759x) || defined (SC92L853x) || defined (SC92L753x)
|
||
315 1 ADCCON &= 0xdf;
|
||
316 1 #endif
|
||
317 1 #if defined(SC92F742x) || defined(SC92F730x) || defined(SC92F725X) || defined(SC92F735X) || defined(SC92F7
|
||
-32X) || defined(SC92F7490) || defined(SC93F833x) || defined(SC93F843x) || defined(SC93F743x)
|
||
ADCCON &= 0xef;
|
||
#endif
|
||
320 1 }
|
||
321
|
||
322 #if defined(SC93F833x) || defined(SC93F843x) || defined(SC93F743x)
|
||
unsigned int ADC_TS_StandardData = 0x8000;
|
||
|
||
/*****************************************************
|
||
*函数名称:void ADC_TSCmd(PriorityStatus NewState)
|
||
*函数功能:ADC 温度传感器功能开关函数
|
||
*入口参数:
|
||
FunctionalState:NewState:功能启动/关闭选择
|
||
*出口参数:void
|
||
*****************************************************/
|
||
void ADC_TSCmd(FunctionalState NewState)
|
||
{
|
||
if (NewState == DISABLE)
|
||
{
|
||
TSCFG &= 0X7F;
|
||
}
|
||
C51 COMPILER V9.59.0.0 SC92F_ADC 01/18/2024 10:03:13 PAGE 7
|
||
|
||
else
|
||
{
|
||
TSCFG |= 0X80;
|
||
}
|
||
}
|
||
|
||
/*****************************************************
|
||
*函数名称:void ADC_CHOPConfig(PriorityStatus NewState)
|
||
*函数功能:拉高或者拉低抵消offset的应用控制位
|
||
*入口参数:
|
||
PriorityStatus:NewState:温度传感器高/低选择
|
||
*出口参数:void
|
||
*****************************************************/
|
||
void ADC_CHOPConfig(PriorityStatus NewState)
|
||
{
|
||
if (NewState == LOW)
|
||
{
|
||
TSCFG &= 0XFE;
|
||
}
|
||
else
|
||
{
|
||
TSCFG |= 0x01;
|
||
}
|
||
}
|
||
|
||
/*****************************************************
|
||
*函数名称:void ADC_CHOPConfig(PriorityStatus NewState)
|
||
*函数功能:获取出厂时ADC 25度时的转换值
|
||
*入口参数:void
|
||
*出口参数:void
|
||
*****************************************************/
|
||
uint16_t ADC_Get_TS_StandardData(void)
|
||
{
|
||
unsigned int code *IFBAddr = 0x3E;
|
||
IAPADE = 0x01; //指针指向 IFB 区
|
||
ADC_TS_StandardData = *(IFBAddr);
|
||
IAPADE = 0x00; //指针指向 ROM 区
|
||
return ADC_TS_StandardData;
|
||
}
|
||
|
||
/*****************************************************
|
||
*函数名称:void ADC_GetTSValue(void)
|
||
*函数功能:直接获取float类型温度值,获取温度时会关闭中断
|
||
*入口参数:void
|
||
*出口参数:
|
||
float:温度值
|
||
*****************************************************/
|
||
float ADC_GetTSValue(void)
|
||
{
|
||
unsigned char EADC_Flag = EADC; //获取EA标志位状态
|
||
unsigned int ADC_Value1 = 0, ADC_Value2 = 0, ADC_Value = 0;
|
||
unsigned int code *IFBAddr = 0x3E;
|
||
|
||
ADC_Get_TS_StandardData();
|
||
disableInterrupts(); //关闭中断
|
||
ADC_CHOPConfig(LOW); //拉低抵消offset的应用控制位
|
||
ADC_StartConversion(); //开始AD转换
|
||
while(!ADC_GetFlagStatus()); //等待转换完成
|
||
ADC_ClearFlag(); //清除转换标志位
|
||
ADC_Value1 = ADC_GetConversionValue(); //获取第一次AD的转换值
|
||
ADC_CHOPConfig(HIGH); //拉高抵消offset的应用控制位
|
||
ADC_StartConversion(); //开始AD转换
|
||
C51 COMPILER V9.59.0.0 SC92F_ADC 01/18/2024 10:03:13 PAGE 8
|
||
|
||
while(!ADC_GetFlagStatus()); //等待转换完成
|
||
ADC_ClearFlag(); //清除转换标志位
|
||
ADC_Value2 = ADC_GetConversionValue(); //获取第二次AD的转换值
|
||
ADC_Value = (ADC_Value1 + ADC_Value2) / 2; //获取两次AD采样的平均值
|
||
|
||
if (EADC_Flag) //还原加入运算前的EA标志位
|
||
{
|
||
enableInterrupts();
|
||
}
|
||
return (25 + ((float)ADC_Value - (float)ADC_TS_StandardData) / 8);
|
||
}
|
||
|
||
/*****************************************************
|
||
*函数名称:ADC_PGAConfig(ADC_PGACOM_TypeDef ADC_PGACOM,ADC_PGAGAN_TypeDef ADC_PGAGAN,ADC_PGAIPT_TypeDef ADC
|
||
-_PGAIPT)
|
||
*函数功能:PGA相关配置
|
||
*入口参数:
|
||
ADC_PGACOM_TypeDef:ADC_PGACOM:PGA共模电压选择
|
||
ADC_PGAGAN_TypeDef:ADC_PGAGAN:PGA增益放大倍数
|
||
ADC_PGAIPT_TypeDef:ADC_PGAIPT:PGA同相/反相选择
|
||
*出口参数:void
|
||
*****************************************************/
|
||
void ADC_PGAConfig(ADC_PGACOM_TypeDef ADC_PGACOM, ADC_PGAGAN_TypeDef ADC_PGAGAN, ADC_PGAIPT_TypeDef ADC_PG
|
||
-AIPT)
|
||
{
|
||
PGACON &= 0x8F;
|
||
PGACON |= (ADC_PGACOM | ADC_PGAGAN | ADC_PGAIPT);
|
||
}
|
||
|
||
/*****************************************************
|
||
*函数名称:void ADC_PGACmd(PriorityStatus NewState)
|
||
*函数功能:ADC PGA功能开关函数
|
||
*入口参数:
|
||
FunctionalState:NewState:功能启动/关闭选择
|
||
*出口参数:void
|
||
*****************************************************/
|
||
void ADC_PGACmd(PriorityStatus NewState)
|
||
{
|
||
if (NewState == LOW)
|
||
{
|
||
PGACON &= 0XFE;
|
||
}
|
||
else
|
||
{
|
||
PGACON |= 0x01;
|
||
}
|
||
}
|
||
#endif
|
||
446
|
||
447
|
||
448 /*****************************************************
|
||
449 *函数名称:void ADC_VrefConfig(ADC_Vref_TypeDef ADC_Vref)
|
||
450 *函数功能:ADC 参考电压选择
|
||
451 *入口参数:
|
||
452 ADC_Vref_TypeDef:ADC_Vref:选择ADC参考电压
|
||
453 *出口参数:void
|
||
454 *****************************************************/
|
||
455 void ADC_VrefConfig(ADC_Vref_TypeDef ADC_Vref)
|
||
456 {
|
||
457 1 OPINX = 0xC2;
|
||
458 1 OPREG = OPREG & 0X7F | ADC_Vref;
|
||
459 1 }
|
||
C51 COMPILER V9.59.0.0 SC92F_ADC 01/18/2024 10:03:13 PAGE 9
|
||
|
||
460 #endif
|
||
461
|
||
462 /******************* (C) COPYRIGHT 2021 SinOne Microelectronics *****END OF FILE****/
|
||
|
||
|
||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||
CODE SIZE = 162 ----
|
||
CONSTANT SIZE = ---- ----
|
||
XDATA SIZE = ---- ----
|
||
PDATA SIZE = ---- ----
|
||
DATA SIZE = ---- ----
|
||
IDATA SIZE = ---- ----
|
||
BIT SIZE = ---- ----
|
||
EDATA SIZE = ---- ----
|
||
HDATA SIZE = ---- ----
|
||
XDATA CONST SIZE = ---- ----
|
||
FAR CONST SIZE = ---- ----
|
||
END OF MODULE INFORMATION.
|
||
|
||
|
||
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|