添加PAN159资料
This commit is contained in:
@@ -0,0 +1,138 @@
|
||||
/*******************************************************************************
|
||||
* @note Copyright (C) 2017 Shanghai Panchip Microelectronics Co., Ltd.
|
||||
* All rights reserved.
|
||||
*
|
||||
* @file lib_driver_adc_pan159.c
|
||||
* @brief
|
||||
*
|
||||
* ADC对应的IO口:
|
||||
* ---------+-----------
|
||||
* ADC_CH0 | P5.3(5)
|
||||
* ---------+-----------
|
||||
* ADC_CH1 | P1.0(7)
|
||||
* ---------+-----------
|
||||
* ADC_CH2 | P1.2(8)
|
||||
* ---------+-----------
|
||||
* ADC_CH3 | P1.3(9)
|
||||
* ---------+-----------
|
||||
* ADC_CH4 | P1.4(10)
|
||||
* ---------+-----------
|
||||
* ADC_CH5 | P1.5(11)
|
||||
* ---------+-----------
|
||||
* ADC_CH6 | P3.0(13)
|
||||
* ---------+-----------
|
||||
* ADC_CH7 | P3.1(17)
|
||||
* ---------+-----------
|
||||
*
|
||||
* @history - V1.0, 2017-09-18, xiaoguolin, first implementation.
|
||||
*******************************************************************************/
|
||||
#include "lib_driver_adc_pan159.h"
|
||||
|
||||
const static uint8_t adc_chns_table[] = {
|
||||
#if ADC_ENABLE_CH0_P53 != 0
|
||||
ADC_PAN159_CH0_P53,
|
||||
#endif
|
||||
#if ADC_ENABLE_CH1_P10 != 0
|
||||
ADC_PAN159_CH1_P10,
|
||||
#endif
|
||||
#if ADC_ENABLE_CH2_P12 != 0
|
||||
ADC_PAN159_CH2_P12,
|
||||
#endif
|
||||
#if ADC_ENABLE_CH3_P13 != 0
|
||||
ADC_PAN159_CH3_P13,
|
||||
#endif
|
||||
#if ADC_ENABLE_CH4_P14 != 0
|
||||
ADC_PAN159_CH4_P14,
|
||||
#endif
|
||||
#if ADC_ENABLE_CH5_P15 != 0
|
||||
ADC_PAN159_CH5_P15,
|
||||
#endif
|
||||
#if ADC_ENABLE_CH6_P30 != 0
|
||||
ADC_PAN159_CH6_P30,
|
||||
#endif
|
||||
#if ADC_ENABLE_CH7_P31 != 0
|
||||
ADC_PAN159_CH7_P31,
|
||||
#endif
|
||||
0x00
|
||||
};
|
||||
#define ADC_CHN_NUM_COUNT (sizeof(adc_chns_table)-1)
|
||||
static int8_t adc_cur_chn_index = 0;
|
||||
|
||||
void adc_pan159_init(void)
|
||||
{
|
||||
ADC_POWER_ON(ADC);
|
||||
if(ADC_ENABLE_CH0_P53){
|
||||
SYS->P5_MFP &= ~SYS_MFP_P53_Msk;
|
||||
SYS->P5_MFP |= SYS_MFP_P53_ADC_CH0;
|
||||
GPIO_DISABLE_DIGITAL_PATH(P5,BIT3);
|
||||
}
|
||||
if(ADC_ENABLE_CH1_P10){
|
||||
SYS->P1_MFP &= ~SYS_MFP_P10_Msk;
|
||||
SYS->P1_MFP |= SYS_MFP_P10_ADC_CH1;
|
||||
GPIO_DISABLE_DIGITAL_PATH(P1,BIT0);
|
||||
}
|
||||
if(ADC_ENABLE_CH2_P12){
|
||||
SYS->P1_MFP &= ~SYS_MFP_P12_Msk;
|
||||
SYS->P1_MFP |= SYS_MFP_P12_ADC_CH2;
|
||||
GPIO_DISABLE_DIGITAL_PATH(P1,BIT2);
|
||||
}
|
||||
if(ADC_ENABLE_CH3_P13){
|
||||
SYS->P1_MFP &= ~SYS_MFP_P13_Msk;
|
||||
SYS->P1_MFP |= SYS_MFP_P13_ADC_CH3;
|
||||
GPIO_DISABLE_DIGITAL_PATH(P1,BIT3);
|
||||
}
|
||||
if(ADC_ENABLE_CH4_P14){
|
||||
SYS->P1_MFP &= ~SYS_MFP_P14_Msk;
|
||||
SYS->P1_MFP |= SYS_MFP_P14_ADC_CH4;
|
||||
GPIO_DISABLE_DIGITAL_PATH(P1,BIT4);
|
||||
}
|
||||
if(ADC_ENABLE_CH5_P15){
|
||||
SYS->P1_MFP &= ~SYS_MFP_P15_Msk;
|
||||
SYS->P1_MFP |= SYS_MFP_P15_ADC_CH5;
|
||||
GPIO_DISABLE_DIGITAL_PATH(P1,BIT5);
|
||||
}
|
||||
if(ADC_ENABLE_CH6_P30){
|
||||
SYS->P3_MFP &= ~SYS_MFP_P30_Msk;
|
||||
SYS->P3_MFP |= SYS_MFP_P30_ADC_CH6;
|
||||
GPIO_DISABLE_DIGITAL_PATH(P3,BIT0);
|
||||
}
|
||||
if(ADC_ENABLE_CH7_P31){
|
||||
SYS->P3_MFP &= ~SYS_MFP_P31_Msk;
|
||||
SYS->P3_MFP |= SYS_MFP_P31_ADC_CH7;
|
||||
GPIO_DISABLE_DIGITAL_PATH(P3,BIT1);
|
||||
}
|
||||
}
|
||||
|
||||
void adc_pan159_samp2(uint16_t *buf)
|
||||
{
|
||||
/* 获取当前通道 */
|
||||
//uint8_t curr_index = adc_cur_chn_index;
|
||||
//int16_t curr_chn = adc_chns_table[curr_index];
|
||||
|
||||
//adc_pan159_start(adc_chns_table[adc_cur_chn_index],6);
|
||||
ADC->CHEN = adc_chns_table[adc_cur_chn_index];
|
||||
ADC->EXTSMPT = (ADC->EXTSMPT & ~ADC_EXTSMPT_EXTSMPT_Msk) | 6;
|
||||
ADC_START_CONV(ADC);
|
||||
while(adc_pan159_is_busy());
|
||||
/* 读取ADC转换结果 */
|
||||
buf[adc_cur_chn_index] = adc_pan159_value();
|
||||
|
||||
/* 计算下一个通道 */
|
||||
if(adc_cur_chn_index < ADC_CHN_NUM_COUNT-1){
|
||||
adc_cur_chn_index++;
|
||||
}
|
||||
else{
|
||||
adc_cur_chn_index = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void adc_pan159_samp1(uint16_t *buf)
|
||||
{
|
||||
ADC->CHEN = ADC_PAN159_CH3_P13;
|
||||
//ADC->CHEN = ADC_PAN159_CH1_P10 ;
|
||||
ADC->EXTSMPT = (ADC->EXTSMPT & ~ADC_EXTSMPT_EXTSMPT_Msk) | 6;
|
||||
ADC_START_CONV(ADC);
|
||||
while(adc_pan159_is_busy());
|
||||
/* 读取ADC转换结果 */
|
||||
buf[0] = adc_pan159_value();
|
||||
}
|
||||
Reference in New Issue
Block a user