• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 #include "hpm_dao_drv.h"
8 
dao_get_default_config(DAO_Type * ptr,dao_config_t * config)9 void dao_get_default_config(DAO_Type *ptr, dao_config_t *config)
10 {
11     config->enable_mono_output = false;
12     config->default_output_level = DAO_DEFAULT_OUTPUT_ALL_LOW;
13     config->channel_count = 2;
14 }
15 
dao_init(DAO_Type * ptr,dao_config_t * config)16 hpm_stat_t dao_init(DAO_Type *ptr, dao_config_t *config)
17 {
18     if (dao_is_running(ptr)) {
19         dao_stop(ptr);
20     }
21     dao_software_reset(ptr);
22 
23     ptr->CTRL = DAO_CTRL_MONO_SET(config->enable_mono_output)
24         | DAO_CHANNEL_BOTH
25         | DAO_CTRL_REMAP_MASK
26         | DAO_CTRL_FALSE_LEVEL_SET(config->default_output_level);
27     ptr->RX_CFGR = DAO_RX_CFGR_CH_MAX_SET(config->channel_count);
28     if (config->channel_count < 31) {
29         ptr->RXSLT = (1 << config->channel_count) - 1;
30     } else if (config->channel_count == 32) {
31         ptr->RXSLT = 0xFFFFFFFF;
32     } else {
33         /* channel count is not correct */
34         return status_fail;
35     }
36     return status_success;
37 }
38 
39