34 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #pragma once
 | |
| 
 | |
| //                                   C3 C2 C1 C0
 | |
| #define LTC_WRITE 0b00000000       // 0  0  0  0  Write to Input Register
 | |
| #define LTC_UPDATE 0b00010000      // 0  0  0  1  Update (Power Up) DAC Register
 | |
| #define LTC_WRTIEUPDATE 0b00110000 // 0  0  1  1  Write to and Update (Power Up) DAC Register
 | |
| #define LTC_SLEEP 0b01000000       // 0  1  0  0  Power Down
 | |
| #define LTC_INTERNALREF 0b01100000 // 0  1  1  0  Select Internal Reference
 | |
| #define LTC_EXTERNALREF 0b01110000 // 0  1  1  1  Select External Reference
 | |
| 
 | |
| #define LTC_REF_2V5 2.5
 | |
| #define LTC_REF_4V096 4.096
 | |
| 
 | |
| typedef enum
 | |
| {
 | |
|     LTC2631_8BIT = 8,
 | |
|     LTC2631_10BIT = 10,
 | |
|     LTC2631_12BIT = 12
 | |
| } ltc2631_res_t;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|     I2C_HandleTypeDef *hi2c;
 | |
|     uint8_t addr;
 | |
|     ltc2631_res_t resolution;
 | |
|     float ref_voltage_f;
 | |
|     uint32_t ref_voltage_u;
 | |
| } ltc2631_handle_t;
 | |
| 
 | |
| void ltc2631_init(ltc2631_handle_t *hdac, I2C_HandleTypeDef *hi2c, uint8_t addr, ltc2631_res_t res, float ref);
 | |
| void ltc2631_setOutputVoltage_f(ltc2631_handle_t *hdac, float volt);
 | |
| void ltc2631_setOutputVoltage_u(ltc2631_handle_t *hdac, uint32_t volt_x1000);
 | |
| void ltc2631_setOutputValue(ltc2631_handle_t *hdac, uint16_t value);
 | |
| void ltc2631_sleep(ltc2631_handle_t *hdac); |