aboutsummaryrefslogtreecommitdiffstats
path: root/os/hal/ports
diff options
context:
space:
mode:
authorGiovanni Di Sirio <gdisirio@gmail.com>2015-05-02 20:26:17 +0000
committerGiovanni Di Sirio <gdisirio@gmail.com>2015-05-02 20:26:17 +0000
commitb2431579e414f837add230e540af226a73ddc8ab (patch)
tree7183539f8effe30b104a7543f313dc53bb181c1d /os/hal/ports
parent0b7c0f050c5ad42a55fc3635d6ae44bda5bfe049 (diff)
downloadChibiOS-b2431579e414f837add230e540af226a73ddc8ab.tar.gz
ChibiOS-b2431579e414f837add230e540af226a73ddc8ab.tar.bz2
ChibiOS-b2431579e414f837add230e540af226a73ddc8ab.zip
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@7938 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'os/hal/ports')
-rw-r--r--os/hal/ports/STM32/LLD/DACv1/dac_lld.c24
-rw-r--r--os/hal/ports/STM32/LLD/DACv1/dac_lld.h26
2 files changed, 43 insertions, 7 deletions
diff --git a/os/hal/ports/STM32/LLD/DACv1/dac_lld.c b/os/hal/ports/STM32/LLD/DACv1/dac_lld.c
index 8afa4e505..99ed45ef2 100644
--- a/os/hal/ports/STM32/LLD/DACv1/dac_lld.c
+++ b/os/hal/ports/STM32/LLD/DACv1/dac_lld.c
@@ -81,7 +81,9 @@ DACDriver DACD4;
/* Driver local variables. */
/*===========================================================================*/
-static const DACConfig default_config = {0};
+static const DACConfig default_config = {
+ datamode: DAC_DHRM_12BIT_RIGHT
+};
#if STM32_DAC_USE_DAC1_CH1 == TRUE
static const dacparams_t dma1_ch1_params = {
@@ -311,6 +313,24 @@ void dac_lld_stop(DACDriver *dacp) {
}
/**
+ * @brief Outputs a value directly on a DAC channel.
+ *
+ * @param[in] dacp pointer to the @p DACDriver object
+ * @param[in] channel DAC channel number
+ * @param[in] sample value to be output
+ *
+ * @api
+ */
+void dac_lld_put_channel(DACDriver *dacp,
+ dacchannel_t channel,
+ dacsample_t sample) {
+
+ (void)dacp;
+ (void)channel;
+ (void)sample;
+}
+
+/**
* @brief Starts a DAC conversion.
* @details Starts an asynchronous conversion operation.
*
@@ -322,7 +342,7 @@ void dac_lld_start_conversion(DACDriver *dacp) {
uint32_t cr, dmamode;
#if STM32_DAC_DUAL_MODE == FALSE
- switch (dacp->grpp->datamode) {
+ switch (dacp->config->datamode) {
/* Sets the DAC data register */
case DAC_DHRM_12BIT_RIGHT:
dmaStreamSetPeripheral(dacp->params->dma, &dacp->params->dac->DHR12R1 +
diff --git a/os/hal/ports/STM32/LLD/DACv1/dac_lld.h b/os/hal/ports/STM32/LLD/DACv1/dac_lld.h
index 36842f295..ddfafc256 100644
--- a/os/hal/ports/STM32/LLD/DACv1/dac_lld.h
+++ b/os/hal/ports/STM32/LLD/DACv1/dac_lld.h
@@ -226,11 +226,25 @@
#define STM32_DMA_REQUIRED
#endif
+/**
+ * @brief Max DAC channels.
+ */
+#if STM32_DAC_DUAL_MODE == FALSE
+#define DAC_MAX_CHANNELS 1
+#else
+#define DAC_MAX_CHANNELS 2
+#endif
+
/*===========================================================================*/
/* Driver data structures and types. */
/*===========================================================================*/
/**
+ * @brief Type of a DAC channel index.
+ */
+typedef uint32_t dacchannel_t;
+
+/**
* @brief DAC channel parameters type.
*/
typedef struct {
@@ -337,10 +351,6 @@ typedef struct {
dacerrorcallback_t error_cb;
/* End of the mandatory fields.*/
/**
- * @brief DAC data holding register mode.
- */
- dacdhrmode_t datamode;
- /**
* @brief DAC initialization data.
* @note This field contains the (not shifted) value to be put into the
* TSEL field of the DAC CR register during initialization. All
@@ -354,7 +364,10 @@ typedef struct {
*/
typedef struct {
/* End of the mandatory fields.*/
- uint32_t dummy;
+ /**
+ * @brief DAC data holding register mode.
+ */
+ dacdhrmode_t datamode;
} DACConfig;
/**
@@ -433,6 +446,9 @@ extern "C" {
void dac_lld_init(void);
void dac_lld_start(DACDriver *dacp);
void dac_lld_stop(DACDriver *dacp);
+ void dac_lld_put_channel(DACDriver *dacp,
+ dacchannel_t channel,
+ dacsample_t sample);
void dac_lld_start_conversion(DACDriver *dacp);
void dac_lld_stop_conversion(DACDriver *dacp);
#ifdef __cplusplus