Lines Matching refs:obj

138 static bool _cyhal_dac_is_output_buffered(const cyhal_dac_t *obj)  in _cyhal_dac_is_output_buffered()  argument
141 return (0u == (obj->base_dac->CTDAC_SW & CTDAC_CTDAC_SW_CTDO_CO6_Msk)); in _cyhal_dac_is_output_buffered()
145 static bool _cyhal_dac_is_external_reference(const cyhal_dac_t *obj) in _cyhal_dac_is_external_reference() argument
149 return (0u == (obj->base_dac->CTDAC_SW & CTDAC_CTDAC_SW_CTDD_CVD_Msk)); in _cyhal_dac_is_external_reference()
167 static cy_rslt_t _cyhal_dac_configure_oa0(cyhal_dac_t *obj, bool init) in _cyhal_dac_configure_oa0() argument
170 CY_ASSERT(false == obj->owned_by_configurator); in _cyhal_dac_configure_oa0()
171 if (init && (CYHAL_RSC_INVALID != obj->resource_opamp.type)) in _cyhal_dac_configure_oa0()
177 result = Cy_CTB_OpampInit(obj->base_opamp, CY_CTB_OPAMP_0, &config); in _cyhal_dac_configure_oa0()
178 …Cy_CTB_SetAnalogSwitch(obj->base_opamp, CY_CTB_SWITCH_OA0_SW, CY_CTB_SW_OA0_NEG_OUT_MASK | CY_CTB_… in _cyhal_dac_configure_oa0()
179 …Cy_CTB_SetAnalogSwitch(obj->base_opamp, CY_CTB_SWITCH_CTD_SW, CY_CTB_SW_CTD_OUT_CHOLD_MASK | CY_CT… in _cyhal_dac_configure_oa0()
180 cyhal_analog_ctb_init(obj->base_opamp); in _cyhal_dac_configure_oa0()
185 …Cy_CTB_SetAnalogSwitch(obj->base_opamp, CY_CTB_SWITCH_OA0_SW, CY_CTB_SW_OA0_NEG_OUT_MASK | CY_CTB_… in _cyhal_dac_configure_oa0()
186 …Cy_CTB_SetAnalogSwitch(obj->base_opamp, CY_CTB_SWITCH_CTD_SW, CY_CTB_SW_CTD_OUT_CHOLD_MASK | CY_CT… in _cyhal_dac_configure_oa0()
187 cyhal_analog_ctb_free(obj->base_opamp); in _cyhal_dac_configure_oa0()
192 static cy_rslt_t _cyhal_dac_configure_oa1(cyhal_dac_t *obj, bool init) in _cyhal_dac_configure_oa1() argument
195 CY_ASSERT(false == obj->owned_by_configurator); in _cyhal_dac_configure_oa1()
197 if (init && (CYHAL_RSC_INVALID != obj->resource_aref_opamp.type)) in _cyhal_dac_configure_oa1()
200 result = Cy_CTB_OpampInit(obj->base_opamp, CY_CTB_OPAMP_1, &cyhal_opamp_default_config); in _cyhal_dac_configure_oa1()
201 …Cy_CTB_SetAnalogSwitch(obj->base_opamp, CY_CTB_SWITCH_OA1_SW, CY_CTB_SW_OA1_NEG_OUT_MASK | CY_CTB_… in _cyhal_dac_configure_oa1()
202 …Cy_CTB_SetAnalogSwitch(obj->base_opamp, CY_CTB_SWITCH_CTD_SW, CY_CTB_SW_CTD_REF_OA1_OUT_MASK, CY_C… in _cyhal_dac_configure_oa1()
203 cyhal_analog_ctb_init(obj->base_opamp); in _cyhal_dac_configure_oa1()
208 …Cy_CTB_SetAnalogSwitch(obj->base_opamp, CY_CTB_SWITCH_OA1_SW, CY_CTB_SW_OA1_NEG_OUT_MASK | CY_CTB_… in _cyhal_dac_configure_oa1()
209 …Cy_CTB_SetAnalogSwitch(obj->base_opamp, CY_CTB_SWITCH_CTD_SW, CY_CTB_SW_CTD_REF_OA1_OUT_MASK, CY_C… in _cyhal_dac_configure_oa1()
210 cyhal_analog_ctb_free(obj->base_opamp); in _cyhal_dac_configure_oa1()
219 cy_rslt_t _cyhal_dac_init_hw(cyhal_dac_t *obj, const cy_stc_ctdac_config_t *config) in _cyhal_dac_init_hw() argument
221 obj->base_dac = _cyhal_dac_base[obj->resource_dac.block_num]; in _cyhal_dac_init_hw()
223 obj->base_opamp = _cyhal_ctb_base[obj->resource_dac.block_num]; in _cyhal_dac_init_hw()
225 cy_rslt_t result = (cy_rslt_t)Cy_CTDAC_Init(obj->base_dac, config); in _cyhal_dac_init_hw()
234 Cy_CTDAC_Enable(obj->base_dac); in _cyhal_dac_init_hw()
240 cy_rslt_t cyhal_dac_init(cyhal_dac_t *obj, cyhal_gpio_t pin) in cyhal_dac_init() argument
242 CY_ASSERT(NULL != obj); in cyhal_dac_init()
246 memset(obj, 0, sizeof(cyhal_dac_t)); in cyhal_dac_init()
247 obj->resource_dac.type = CYHAL_RSC_INVALID; in cyhal_dac_init()
248 obj->resource_opamp.type = CYHAL_RSC_INVALID; in cyhal_dac_init()
249 obj->pin = CYHAL_NC_PIN_VALUE; in cyhal_dac_init()
250 obj->resource_aref_opamp.type = CYHAL_RSC_INVALID; in cyhal_dac_init()
306 obj->resource_dac = dac_instance; in cyhal_dac_init()
315 obj->resource_opamp = opamp_instance; in cyhal_dac_init()
336 obj->pin = pin; in cyhal_dac_init()
344 …config.outputBuffer = (obj->resource_opamp.type != CYHAL_RSC_INVALID) ? CY_CTDAC_OUTPUT_BUFFERED :… in cyhal_dac_init()
345 result = _cyhal_dac_init_hw(obj, &config); in cyhal_dac_init()
349 if ((CY_RSLT_SUCCESS == result) && (obj->resource_opamp.type != CYHAL_RSC_INVALID)) in cyhal_dac_init()
352 result = _cyhal_dac_configure_oa0(obj, true); in cyhal_dac_init()
359 cyhal_dac_free(obj); in cyhal_dac_init()
364 cy_rslt_t cyhal_dac_init_cfg(cyhal_dac_t *obj, const cyhal_dac_configurator_t *cfg) in cyhal_dac_init_cfg() argument
366 memset(obj, 0, sizeof(cyhal_dac_t)); in cyhal_dac_init_cfg()
367 obj->owned_by_configurator = true; in cyhal_dac_init_cfg()
368 obj->resource_dac = *cfg->resource; in cyhal_dac_init_cfg()
369 obj->resource_opamp.type = CYHAL_RSC_INVALID; in cyhal_dac_init_cfg()
370 obj->resource_aref_opamp.type = CYHAL_RSC_INVALID; in cyhal_dac_init_cfg()
371 obj->pin = CYHAL_NC_PIN_VALUE; in cyhal_dac_init_cfg()
372 cy_rslt_t result = _cyhal_dac_init_hw(obj, cfg->config); in cyhal_dac_init_cfg()
376 cyhal_dac_free(obj); in cyhal_dac_init_cfg()
381 void cyhal_dac_free(cyhal_dac_t *obj) in cyhal_dac_free() argument
383 if (NULL != obj->base_dac) in cyhal_dac_free()
387 if (_cyhal_dac_is_external_reference(obj)) in cyhal_dac_free()
389 …Cy_CTB_SetPower(obj->base_opamp, _cyhal_opamp_convert_sel(OPAMP_IDX_REF), (cy_en_ctb_power_t)_cyha… in cyhal_dac_free()
390 if(false == obj->owned_by_configurator) in cyhal_dac_free()
392 (void)_cyhal_dac_configure_oa1(obj, false); in cyhal_dac_free()
397 if (_cyhal_dac_is_output_buffered(obj)) in cyhal_dac_free()
399 …Cy_CTB_SetPower(obj->base_opamp, _cyhal_opamp_convert_sel(OPAMP_IDX_OUTPUT), (cy_en_ctb_power_t)_c… in cyhal_dac_free()
400 if(false == obj->owned_by_configurator) in cyhal_dac_free()
402 (void)_cyhal_dac_configure_oa0(obj, false); in cyhal_dac_free()
409 Cy_CTDAC_Disable(obj->base_dac); in cyhal_dac_free()
411 if(false == obj->owned_by_configurator) in cyhal_dac_free()
413 cyhal_hwmgr_free(&obj->resource_dac); in cyhal_dac_free()
414 if(CYHAL_RSC_INVALID != obj->resource_opamp.type) in cyhal_dac_free()
416 cyhal_hwmgr_free(&obj->resource_opamp); in cyhal_dac_free()
418 if(CYHAL_RSC_INVALID != obj->resource_aref_opamp.type) in cyhal_dac_free()
420 cyhal_hwmgr_free(&obj->resource_aref_opamp); in cyhal_dac_free()
423 _cyhal_utils_release_if_used(&(obj->pin)); in cyhal_dac_free()
426 obj->base_dac = NULL; in cyhal_dac_free()
427 obj->base_opamp = NULL; in cyhal_dac_free()
431 void cyhal_dac_write(const cyhal_dac_t *obj, uint16_t value) in cyhal_dac_write() argument
434 Cy_CTDAC_SetValue(obj->base_dac, scaled_value); in cyhal_dac_write()
437 cy_rslt_t cyhal_dac_write_mv(const cyhal_dac_t *obj, uint16_t value) in cyhal_dac_write_mv() argument
442 if (_cyhal_dac_is_external_reference(obj)) in cyhal_dac_write_mv()
460 Cy_CTDAC_SetValue(obj->base_dac, count); in cyhal_dac_write_mv()
466 uint16_t cyhal_dac_read(cyhal_dac_t *obj) in cyhal_dac_read() argument
468 uint16_t value = (uint16_t)obj->base_dac->CTDAC_VAL; in cyhal_dac_read()
473 cy_rslt_t cyhal_dac_set_reference(cyhal_dac_t *obj, cyhal_dac_ref_t ref) in cyhal_dac_set_reference() argument
477 if(false == obj->owned_by_configurator) in cyhal_dac_set_reference()
483 if (obj->resource_aref_opamp.type != CYHAL_RSC_INVALID) in cyhal_dac_set_reference()
485 cyhal_hwmgr_free(&obj->resource_aref_opamp); in cyhal_dac_set_reference()
486 obj->resource_aref_opamp.type = CYHAL_RSC_INVALID; in cyhal_dac_set_reference()
489 result = _cyhal_dac_configure_oa1(obj, false); in cyhal_dac_set_reference()
494 if (obj->resource_aref_opamp.type == CYHAL_RSC_INVALID) in cyhal_dac_set_reference()
497 obj->resource_aref_opamp.type = CYHAL_RSC_OPAMP; in cyhal_dac_set_reference()
498 obj->resource_aref_opamp.block_num = obj->resource_dac.block_num; in cyhal_dac_set_reference()
499 obj->resource_aref_opamp.channel_num = OPAMP_IDX_REF; in cyhal_dac_set_reference()
501 result = cyhal_hwmgr_reserve(&obj->resource_aref_opamp); in cyhal_dac_set_reference()
504 obj->resource_aref_opamp.type = CYHAL_RSC_INVALID; in cyhal_dac_set_reference()
509 result = _cyhal_dac_configure_oa1(obj, true); in cyhal_dac_set_reference()
521 … Cy_CTDAC_SetRef(obj->base_dac, (cy_en_ctdac_ref_source_t)_cyhal_dac_convert_reference(ref)); in cyhal_dac_set_reference()
534 cy_rslt_t cyhal_dac_set_power(cyhal_dac_t *obj, cyhal_power_level_t power) in cyhal_dac_set_power() argument
537 if (_cyhal_dac_is_output_buffered(obj) || _cyhal_dac_is_external_reference(obj)) in cyhal_dac_set_power()
541 if(_cyhal_dac_is_output_buffered(obj)) in cyhal_dac_set_power()
543 …Cy_CTB_SetPower(obj->base_opamp, _cyhal_opamp_convert_sel(OPAMP_IDX_OUTPUT), power_level, CY_CTB_P… in cyhal_dac_set_power()
545 if(_cyhal_dac_is_external_reference(obj)) in cyhal_dac_set_power()
547 …Cy_CTB_SetPower(obj->base_opamp, _cyhal_opamp_convert_sel(OPAMP_IDX_REF), power_level, CY_CTB_PUMP… in cyhal_dac_set_power()
550 … bool full_ctb_owned = _cyhal_dac_is_output_buffered(obj) || _cyhal_dac_is_external_reference(obj); in cyhal_dac_set_power()
555 Cy_CTB_Disable(obj->base_opamp); in cyhal_dac_set_power()
559 Cy_CTB_Enable(obj->base_opamp); in cyhal_dac_set_power()
566 Cy_CTDAC_Disable(obj->base_dac); in cyhal_dac_set_power()
570 Cy_CTDAC_Enable(obj->base_dac); in cyhal_dac_set_power()