git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@4998 35acf78f-673a-0410-8e92-d51de3d6d3f4

This commit is contained in:
gdisirio 2012-12-30 13:35:12 +00:00
parent 0403ccfd10
commit 567fd6ac12
2 changed files with 28 additions and 15 deletions

View File

@ -89,6 +89,7 @@ ADCDriver ADCD3;
*/ */
static void adc_lld_vreg_on(ADCDriver *adcp) { static void adc_lld_vreg_on(ADCDriver *adcp) {
adcp->adcm->CR = 0; /* RM 12.4.3.*/
adcp->adcm->CR = ADC_CR_ADVREGEN_0; adcp->adcm->CR = ADC_CR_ADVREGEN_0;
#if STM32_ADC_DUAL_MODE #if STM32_ADC_DUAL_MODE
adcp->adcs->CR = ADC_CR_ADVREGEN_0; adcp->adcs->CR = ADC_CR_ADVREGEN_0;
@ -103,6 +104,7 @@ static void adc_lld_vreg_on(ADCDriver *adcp) {
*/ */
static void adc_lld_vreg_off(ADCDriver *adcp) { static void adc_lld_vreg_off(ADCDriver *adcp) {
adcp->adcm->CR = 0; /* RM 12.4.3.*/
adcp->adcm->CR = ADC_CR_ADVREGEN_1; adcp->adcm->CR = ADC_CR_ADVREGEN_1;
#if STM32_ADC_DUAL_MODE #if STM32_ADC_DUAL_MODE
adcp->adcs->CR = ADC_CR_ADVREGEN_1; adcp->adcs->CR = ADC_CR_ADVREGEN_1;
@ -479,7 +481,7 @@ void adc_lld_start_conversion(ADCDriver *adcp) {
ccr |= ADC_CCR_DMACFG_CIRCULAR; ccr |= ADC_CCR_DMACFG_CIRCULAR;
cfgr |= ADC_CFGR_CONT; cfgr |= ADC_CFGR_CONT;
#else #else
cfgr |= ADC_CFGR_CONT | ADC_CFGR_DMACFG | ADC_CFGR_DMAEN; cfgr |= ADC_CFGR_CONT | ADC_CFGR_DMACFG_CIRCULAR | ADC_CFGR_DMAEN;
#endif #endif
} }

View File

@ -28,8 +28,9 @@
#define ADC_GRP2_BUF_DEPTH 16 #define ADC_GRP2_BUF_DEPTH 16
static adcsample_t samples1[ADC_GRP1_NUM_CHANNELS * ADC_GRP1_BUF_DEPTH]; static adcsample_t samples1[ADC_GRP1_NUM_CHANNELS * ADC_GRP1_BUF_DEPTH];
static adcsample_t samples2[ADC_GRP2_NUM_CHANNELS * ADC_GRP2_BUF_DEPTH]; //static adcsample_t samples2[ADC_GRP2_NUM_CHANNELS * ADC_GRP2_BUF_DEPTH];
#if 0
/* /*
* ADC streaming callback. * ADC streaming callback.
*/ */
@ -44,6 +45,7 @@ static void adccallback(ADCDriver *adcp, adcsample_t *buffer, size_t n) {
ny += n; ny += n;
} }
} }
#endif
static void adcerrorcallback(ADCDriver *adcp, adcerror_t err) { static void adcerrorcallback(ADCDriver *adcp, adcerror_t err) {
@ -61,15 +63,22 @@ static const ADCConversionGroup adcgrpcfg1 = {
ADC_GRP1_NUM_CHANNELS, ADC_GRP1_NUM_CHANNELS,
NULL, NULL,
adcerrorcallback, adcerrorcallback,
0, /* CR1 */ 0, /* CFGR */
ADC_CR2_SWSTART, /* CR2 */ 0, /* TR1 */
ADC_SMPR1_SMP_AN11(ADC_SAMPLE_3), 0, /* CCR */
0, /* SMPR2 */ { /* SMPR[2] */
ADC_SQR1_NUM_CH(ADC_GRP1_NUM_CHANNELS), 0,
0, /* SQR2 */ 0
ADC_SQR3_SQ1_N(ADC_CHANNEL_IN11) },
{ /* SQR[4] */
ADC_SQR1_SQ1_N(ADC_CHANNEL_IN7) | ADC_SQR1_SQ2_N(ADC_CHANNEL_IN8),
0,
0,
0
}
}; };
#if 0
/* /*
* ADC conversion group. * ADC conversion group.
* Mode: Continuous, 16 samples of 8 channels, SW triggered. * Mode: Continuous, 16 samples of 8 channels, SW triggered.
@ -91,6 +100,7 @@ static const ADCConversionGroup adcgrpcfg2 = {
ADC_SQR3_SQ4_N(ADC_CHANNEL_IN12) | ADC_SQR3_SQ3_N(ADC_CHANNEL_IN11) | ADC_SQR3_SQ4_N(ADC_CHANNEL_IN12) | ADC_SQR3_SQ3_N(ADC_CHANNEL_IN11) |
ADC_SQR3_SQ2_N(ADC_CHANNEL_IN12) | ADC_SQR3_SQ1_N(ADC_CHANNEL_IN11) ADC_SQR3_SQ2_N(ADC_CHANNEL_IN12) | ADC_SQR3_SQ1_N(ADC_CHANNEL_IN11)
}; };
#endif
/* /*
* Red LEDs blinker thread, times are in milliseconds. * Red LEDs blinker thread, times are in milliseconds.
@ -101,11 +111,12 @@ static msg_t Thread1(void *arg) {
(void)arg; (void)arg;
chRegSetThreadName("blinker"); chRegSetThreadName("blinker");
while (TRUE) { while (TRUE) {
palSetPad(GPIOD, GPIOD_LED5); palSetPad(GPIOE, GPIOE_LED10_RED);
chThdSleepMilliseconds(500); chThdSleepMilliseconds(500);
palClearPad(GPIOD, GPIOD_LED5); palClearPad(GPIOE, GPIOE_LED10_RED);
chThdSleepMilliseconds(500); chThdSleepMilliseconds(500);
} }
return 0;
} }
/* /*
@ -138,7 +149,7 @@ int main(void) {
* Activates the ADC1 driver and the thermal sensor. * Activates the ADC1 driver and the thermal sensor.
*/ */
adcStart(&ADCD1, NULL); adcStart(&ADCD1, NULL);
adcSTM32EnableTSVREFE(); // adcSTM32EnableTSVREFE();
/* /*
* Linear conversion. * Linear conversion.
@ -149,15 +160,15 @@ int main(void) {
/* /*
* Starts an ADC continuous conversion. * Starts an ADC continuous conversion.
*/ */
adcStartConversion(&ADCD1, &adcgrpcfg2, samples2, ADC_GRP2_BUF_DEPTH); // adcStartConversion(&ADCD1, &adcgrpcfg2, samples2, ADC_GRP2_BUF_DEPTH);
/* /*
* Normal main() thread activity, in this demo it does nothing. * Normal main() thread activity, in this demo it does nothing.
*/ */
while (TRUE) { while (TRUE) {
if (palReadPad(GPIOA, GPIOA_BUTTON)) { if (palReadPad(GPIOA, GPIOA_BUTTON)) {
adcStopConversion(&ADCD1); // adcStopConversion(&ADCD1);
adcSTM32DisableTSVREFE(); // adcSTM32DisableTSVREFE();
} }
chThdSleepMilliseconds(500); chThdSleepMilliseconds(500);
} }