본문으로 건너뛰기

tkl dac | DAC 드라이버

TKL DAC 공용영역은 아날로그 산출 전압으로 디지털 방식으로 가치를 개조합니다 — ADC의 반전. 당신은 DAC 단위를 초기화 (TUYA_DAC_NUM_E), 그것의 수로 및 산출 폭을 구성하고, 그 후에 FIFO를 통해서 표본 자료를 밀고 변환을 시작합니다. 일반적인 사용은 이전에 ADC에 의해 캡처 된 오디오 파형을 복원합니다.

프로젝트

OPERATE_RET tkl_dac_init(TUYA_DAC_NUM_E port_num);

DAC 단위를 초기화합니다.

제품 설명제품정보이름 *
port_numTUYA_DAC_NUM_EDAC 단위 색인 (TUYA_DAC_NUM_0으로TUYA_DAC_NUM_6).

**리턴 **OPRT_OK성공에. 다른 값의 경우 정의를 참조하십시오.tuya_error_code.h.

프로젝트

OPERATE_RET tkl_dac_deinit(TUYA_DAC_NUM_E port_num);

DAC 단위를 분리하고 변환을 중지합니다.

제품 설명제품정보이름 *
port_numTUYA_DAC_NUM_EDAC 단위 색인.

**리턴 **OPRT_OK성공에. 다른 값의 경우 정의를 참조하십시오.tuya_error_code.h.

tkl dac controller config 설정

OPERATE_RET tkl_dac_controller_config(TUYA_DAC_NUM_E port_num, TUYA_DAC_CMD_E cmd, void *argu);

명령으로 DAC 단위를 구성합니다. 기본 구성을 설정하거나 FIFO로 데이터를 작성합니다.

제품 설명제품정보이름 *
port_numTUYA_DAC_NUM_EDAC 단위 색인.
cmdTUYA_DAC_CMD_E명령 단어 (아래 참조).
arguvoid *명령의 집합.

cmd작업 선택 및argu일치하는 구조에 점:

이름 *이름 *argu제품정보
TUYA_DAC_WRITE_FIFODAC FIFO로 데이터 쓰기TUYA_DAC_DATA_T *
TUYA_DAC_SET_BASE_CFGDAC 기본 설정 설정TUYA_DAC_BASE_CFG_T *
typedef struct {
uint8_t *data; // data buffer
uint32_t len; // data length
} TUYA_DAC_DATA_T;

typedef struct {
TUYA_AD_DA_CH_LIST_U ch_list; // channel list
uint8_t ch_nums; // channel number
uint8_t width; // output width
uint32_t freq; // conversion frequency
} TUYA_DAC_BASE_CFG_T;

**리턴 **OPRT_OK성공에. 다른 값의 경우 정의를 참조하십시오.tuya_error_code.h.

tkl dac base cfg get에

OPERATE_RET tkl_dac_base_cfg_get(TUYA_DAC_NUM_E port_num, TUYA_DAC_BASE_CFG_T *cfg);

DAC 단위의 기본 구성을 읽으십시오.

제품 설명제품정보이름 *
port_numTUYA_DAC_NUM_EDAC 단위 색인.
cfgTUYA_DAC_BASE_CFG_T *산출: 기본적인 윤곽.

구성 구조는:

typedef struct {
TUYA_AD_DA_CH_LIST_U ch_list; // channel list
uint8_t ch_nums; // channel number
uint8_t width; // output width
uint32_t freq; // conversion frequency
} TUYA_DAC_BASE_CFG_T;

**리턴 **OPRT_OK성공에. 다른 값의 경우 정의를 참조하십시오.tuya_error_code.h.

tkl dac 스타트

OPERATE_RET tkl_dac_start(TUYA_DAC_NUM_E port_num);

DAC 단위로 변환을 시작합니다.

제품 설명제품정보이름 *
port_numTUYA_DAC_NUM_EDAC 단위 색인.

**리턴 **OPRT_OK성공에. 다른 값의 경우 정의를 참조하십시오.tuya_error_code.h.

tkl dac 스톱

OPERATE_RET tkl_dac_stop(TUYA_DAC_NUM_E port_num);

DAC 단위로 변환을 중지합니다.

제품 설명제품정보이름 *
port_numTUYA_DAC_NUM_EDAC 단위 색인.

**리턴 **OPRT_OK성공에. 다른 값의 경우 정의를 참조하십시오.tuya_error_code.h.

tkl dac fifo reset의 경우

OPERATE_RET tkl_dac_fifo_reset(TUYA_DAC_NUM_E port_num);

DAC 단위의 FIFO를 재설정합니다.

제품 설명제품정보이름 *
port_numTUYA_DAC_NUM_EDAC 단위 색인.

**리턴 **OPRT_OK성공에. 다른 값의 경우 정의를 참조하십시오.tuya_error_code.h.

이름 *

DAC 단위를 초기화, 기본 구성을 설정, 다음 FIFO를 통해 데이터를 스트림:

// Initialize DAC unit 0
tkl_dac_init(TUYA_DAC_NUM_0);

// Set the base configuration
TUYA_DAC_BASE_CFG_T dac_base_cfg;
dac_base_cfg.freq = 8000; // 8000 conversions per second
dac_base_cfg.width = 16; // 16-bit output
dac_base_cfg.ch_nums = 1; // single channel
dac_base_cfg.ch_list.bits.ch_2 = 1;
tkl_dac_controller_config(TUYA_DAC_NUM_0, TUYA_DAC_SET_BASE_CFG, &dac_base_cfg);

// Write the initial data into the FIFO
TUYA_DAC_DATA_T data_fifo;
uint8_t dac_data[1024];
data_fifo.len = sizeof(dac_data);
data_fifo.data = dac_data;
tkl_dac_controller_config(TUYA_DAC_NUM_0, TUYA_DAC_WRITE_FIFO, &data_fifo);

// Start conversion
tkl_dac_start(TUYA_DAC_NUM_0);

// Keep feeding data into the FIFO
while (1) {
data_fifo.len = sizeof(dac_data);
data_fifo.data = dac_data;
tkl_dac_controller_config(TUYA_DAC_NUM_0, TUYA_DAC_WRITE_FIFO, &data_fifo);
}

// Stop and deinitialize
tkl_dac_stop(TUYA_DAC_NUM_0);
tkl_dac_deinit(TUYA_DAC_NUM_0);