git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@9992 35acf78f-673a-0410-8e92-d51de3d6d3f4
This commit is contained in:
Rocco Marco Guglielmi 2016-12-29 01:29:12 +00:00
parent c6c56485d5
commit d70abc8268
2 changed files with 10 additions and 13 deletions

View File

@ -249,24 +249,21 @@ void dac_lld_start(DACDriver *dacp) {
channel = 1; channel = 1;
} }
#endif #endif
/* Copying user configuration into cr */
dacp->params->dac->CR = dacp->config->cr;
/* Enabling DAC in SW triggering mode initially, initializing data to /* Enabling DAC in SW triggering mode initially, initializing data to
zero.*/ zero.*/
#if STM32_DAC_DUAL_MODE == FALSE #if STM32_DAC_DUAL_MODE == FALSE
dacp->params->dac->CR &= dacp->params->regmask; dacp->params->dac->CR &= dacp->params->regmask;
dacp->params->dac->CR |= DAC_CR_EN1 << dacp->params->regshift; dacp->params->dac->CR |= (DAC_CR_EN1 | dacp->config->cr) << dacp->params->regshift;
dac_lld_put_channel(dacp, channel, dacp->config->init); dac_lld_put_channel(dacp, channel, dacp->config->init);
#else #else
if ((dacp->config->datamode == DAC_DHRM_12BIT_RIGHT_DUAL) || if ((dacp->config->datamode == DAC_DHRM_12BIT_RIGHT_DUAL) ||
(dacp->config->datamode == DAC_DHRM_12BIT_LEFT_DUAL) || (dacp->config->datamode == DAC_DHRM_12BIT_LEFT_DUAL) ||
(dacp->config->datamode == DAC_DHRM_8BIT_RIGHT_DUAL)) { (dacp->config->datamode == DAC_DHRM_8BIT_RIGHT_DUAL)) {
dacp->params->dac->CR = DAC_CR_EN2 | DAC_CR_EN1; dacp->params->dac->CR = DAC_CR_EN2 | (dacp->config->cr << 16) | DAC_CR_EN1 | dacp->config->cr;
dac_lld_put_channel(dacp, 1U, dacp->config->init); dac_lld_put_channel(dacp, 1U, dacp->config->init);
} }
else { else {
dacp->params->dac->CR = DAC_CR_EN1; dacp->params->dac->CR = DAC_CR_EN1 | dacp->config->cr;
} }
dac_lld_put_channel(dacp, channel, dacp->config->init); dac_lld_put_channel(dacp, channel, dacp->config->init);
#endif #endif
@ -492,13 +489,13 @@ void dac_lld_start_conversion(DACDriver *dacp) {
/* DAC configuration.*/ /* DAC configuration.*/
#if STM32_DAC_DUAL_MODE == FALSE #if STM32_DAC_DUAL_MODE == FALSE
cr = DAC_CR_DMAEN1 | (dacp->grpp->trigger << 3) | DAC_CR_TEN1 | DAC_CR_EN1; cr = DAC_CR_DMAEN1 | (dacp->grpp->trigger << 3) | DAC_CR_TEN1 | DAC_CR_EN1 | dacp->config->cr;
dacp->params->dac->CR &= dacp->params->regmask; dacp->params->dac->CR &= dacp->params->regmask;
dacp->params->dac->CR |= cr << dacp->params->regshift; dacp->params->dac->CR |= cr << dacp->params->regshift;
#else #else
dacp->params->dac->CR = 0; dacp->params->dac->CR = 0;
cr = DAC_CR_DMAEN1 | (dacp->grpp->trigger << 3) | DAC_CR_TEN1 | DAC_CR_EN1 cr = DAC_CR_DMAEN1 | (dacp->grpp->trigger << 3) | DAC_CR_TEN1 | DAC_CR_EN1 | dacp->config->cr
| (dacp->grpp->trigger << 19) | DAC_CR_TEN2 | DAC_CR_EN2; | (dacp->grpp->trigger << 19) | DAC_CR_TEN2 | DAC_CR_EN2 | (dacp->config->cr << 16);
dacp->params->dac->CR = cr; dacp->params->dac->CR = cr;
#endif #endif
} }
@ -521,15 +518,15 @@ void dac_lld_stop_conversion(DACDriver *dacp) {
#if STM32_DAC_DUAL_MODE == FALSE #if STM32_DAC_DUAL_MODE == FALSE
dacp->params->dac->CR &= dacp->params->regmask; dacp->params->dac->CR &= dacp->params->regmask;
dacp->params->dac->CR |= DAC_CR_EN1 << dacp->params->regshift; dacp->params->dac->CR |= (DAC_CR_EN1 | dacp->config->cr) << dacp->params->regshift;
#else #else
if ((dacp->config->datamode == DAC_DHRM_12BIT_RIGHT_DUAL) || if ((dacp->config->datamode == DAC_DHRM_12BIT_RIGHT_DUAL) ||
(dacp->config->datamode == DAC_DHRM_12BIT_LEFT_DUAL) || (dacp->config->datamode == DAC_DHRM_12BIT_LEFT_DUAL) ||
(dacp->config->datamode == DAC_DHRM_8BIT_RIGHT_DUAL)) { (dacp->config->datamode == DAC_DHRM_8BIT_RIGHT_DUAL)) {
dacp->params->dac->CR = DAC_CR_EN2 | DAC_CR_EN1; dacp->params->dac->CR = DAC_CR_EN2 | (dacp->config->cr << 16) | DAC_CR_EN1 | dacp->config->cr;
} }
else { else {
dacp->params->dac->CR = DAC_CR_EN1; dacp->params->dac->CR = DAC_CR_EN1 | dacp->config->cr;
} }
#endif #endif
} }

View File

@ -374,7 +374,7 @@ typedef struct {
/** /**
* @brief DAC control register. * @brief DAC control register.
*/ */
uint32_t cr; uint16_t cr;
} DACConfig; } DACConfig;
/** /**