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)9void 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)16hpm_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