Atmel Software Framework

Digital-to-Analog Converter Controller (DACC)


Purpose

Driver for the Digital-to-Analog Converter Controller. It provides access to the main features of the DAC controller.

Usage
  1. DACC clock should be enabled before using it.
  2. Reset DACC with dacc_reset().
  3. If DACC can be enabled/disabled, uses dacc_enable() and dacc_disable().
  4. Initialize DACC timing with dacc_set_timing() (different DAC peripheral may require different parameters).
  5. Write conversion data with dacc_write_conversion_data().
  6. Configure trigger with dacc_set_trigger() and dacc_disable_trigger().
  7. Configure FIFO transfer mode with dacc_set_transfer_mode().
  8. Control interrupts with dacc_enable_interrupt(), dacc_disable_interrupt(), dacc_get_interrupt_mask() and dacc_get_interrupt_status().
  9. DACC registers support write protect with dacc_set_writeprotect() and dacc_get_writeprotect_status().
  10. If the DACC can work with PDC, use dacc_get_pdc_base() to get PDC register base for the DAC controller.
  11. If the DACC has several channels to process, the following functions can be used:
    • Enable/Disable TAG and select output channel selection by dacc_set_channel_selection(), dacc_enable_flexible_channel_selection().
    • Enable/disable channel by dacc_enable_channel() / dacc_disable_channel(), get channel status by dacc_get_channel_status().

Dependencies

This driver does not depend on other modules.

Modules

 Related Project(s)
 

In this section you can find all the projects related to the Digital-to-Analog Converter Controller (DACC).


Defines

#define DACC_WP_KEY   (0x444143)
 DACC Write Protect Key "DAC" in ASCII.
#define MAX_CH_NB   1
 Max channel number.

Functions

void dacc_disable_interrupt (Dacc *p_dacc, uint32_t ul_interrupt_mask)
 Disable DACC interrupts.
void dacc_disable_trigger (Dacc *p_dacc)
 Disable trigger (free run mode).
void dacc_enable_interrupt (Dacc *p_dacc, uint32_t ul_interrupt_mask)
 Enable DACC interrupts.
uint32_t dacc_get_interrupt_mask (Dacc *p_dacc)
 Get the interrupt mask.
uint32_t dacc_get_interrupt_status (Dacc *p_dacc)
 Get the interrupt status.
uint32_t dacc_get_writeprotect_status (Dacc *p_dacc)
 Get the write protect status.
void dacc_reset (Dacc *p_dacc)
 Reset DACC.
uint32_t dacc_set_transfer_mode (Dacc *p_dacc, uint32_t ul_mode)
 Set the transfer mode.
uint32_t dacc_set_trigger (Dacc *p_dacc, uint32_t ul_trigger)
 Enable trigger and set the trigger source.
void dacc_set_writeprotect (Dacc *p_dacc, uint32_t ul_enable)
 Enable or disable write protect of DACC registers.
void dacc_write_conversion_data (Dacc *p_dacc, uint32_t ul_data)
 Write data to conversion register.

#define DACC_WP_KEY   (0x444143)

DACC Write Protect Key "DAC" in ASCII.

Referenced by dacc_set_writeprotect().

#define MAX_CH_NB   1

Max channel number.


void dacc_disable_interrupt ( Dacc p_dacc,
uint32_t  ul_interrupt_mask 
)

Disable DACC interrupts.

Parameters:
p_dacc Pointer to a DACC instance.
ul_interrupt_mask The interrupt mask.

References Dacc::DACC_IDR.

void dacc_disable_trigger ( Dacc p_dacc  ) 

Disable trigger (free run mode).

Parameters:
p_dacc Pointer to a DACC instance.

References Dacc::DACC_MR.

void dacc_enable_interrupt ( Dacc p_dacc,
uint32_t  ul_interrupt_mask 
)

Enable DACC interrupts.

Parameters:
p_dacc Pointer to a DACC instance.
ul_interrupt_mask The interrupt mask.

References Dacc::DACC_IER.

uint32_t dacc_get_interrupt_mask ( Dacc p_dacc  ) 

Get the interrupt mask.

Parameters:
p_dacc Pointer to a DACC instance.
Returns:
The interrupt mask.

References Dacc::DACC_IMR.

uint32_t dacc_get_interrupt_status ( Dacc p_dacc  ) 

Get the interrupt status.

Parameters:
p_dacc Pointer to a DACC instance.
Returns:
The interrupt status.

References Dacc::DACC_ISR.

Referenced by SysTick_Handler().

uint32_t dacc_get_writeprotect_status ( Dacc p_dacc  ) 

Get the write protect status.

Parameters:
p_dacc Pointer to a DACC instance.
Returns:
Write protect status.

References Dacc::DACC_WPSR.

void dacc_reset ( Dacc p_dacc  ) 

Reset DACC.

Parameters:
p_dacc Pointer to a DACC instance.

References Dacc::DACC_CR.

Referenced by main().

uint32_t dacc_set_transfer_mode ( Dacc p_dacc,
uint32_t  ul_mode 
)

Set the transfer mode.

Parameters:
p_dacc Pointer to a DACC instance.
ul_mode Transfer mode configuration.
Returns:
DACC_RC_OK for OK.

References Dacc::DACC_MR.

Referenced by main().

uint32_t dacc_set_trigger ( Dacc p_dacc,
uint32_t  ul_trigger 
)

Enable trigger and set the trigger source.

Parameters:
p_dacc Pointer to a DACC instance.
ul_trigger Trigger source number.
Returns:
DACC_RC_OK for OK.

References Dacc::DACC_MR, DACC_MR_TRGEN, DACC_MR_TRGEN_EN, DACC_MR_TRGSEL, and DACC_MR_TRGSEL_Msk.

void dacc_set_writeprotect ( Dacc p_dacc,
uint32_t  ul_enable 
)

Enable or disable write protect of DACC registers.

Parameters:
p_dacc Pointer to a DACC instance.
ul_enable 1 to enable, 0 to disable.

References DACC_WP_KEY, Dacc::DACC_WPMR, and DACC_WPMR_WPKEY.

void dacc_write_conversion_data ( Dacc p_dacc,
uint32_t  ul_data 
)

Write data to conversion register.

Note:
The ul_data could be output data or data with channel TAG when flexible mode is used.

In flexible mode the 2 bits, DACC_CDR[13:12] which are otherwise unused, are employed to select the channel in the same way as with the USER_SEL field. Finally, if the WORD field is set, the 2 bits, DACC_CDR[13:12] are used for channel selection of the first data and the 2 bits, DACC_CDR[29:28] for channel selection of the second data.

See also:
dacc_enable_flexible_selection()
Parameters:
p_dacc Pointer to a DACC instance.
ul_data The data to be transferred to analog value.

References Dacc::DACC_CDR.

Referenced by SysTick_Handler().

 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines