dac17 2.1.0.0
dac17.h
Go to the documentation of this file.
1/****************************************************************************
2** Copyright (C) 2020 MikroElektronika d.o.o.
3** Contact: https://www.mikroe.com/contact
4**
5** Permission is hereby granted, free of charge, to any person obtaining a copy
6** of this software and associated documentation files (the "Software"), to deal
7** in the Software without restriction, including without limitation the rights
8** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9** copies of the Software, and to permit persons to whom the Software is
10** furnished to do so, subject to the following conditions:
11** The above copyright notice and this permission notice shall be
12** included in all copies or substantial portions of the Software.
13**
14** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16** OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
19** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20** USE OR OTHER DEALINGS IN THE SOFTWARE.
21****************************************************************************/
22
28#ifndef DAC17_H
29#define DAC17_H
30
31#ifdef __cplusplus
32extern "C"{
33#endif
34
35#include "mikrosdk_version.h"
36
37#ifdef __GNUC__
38#if mikroSDK_GET_VERSION < 20800ul
39#include "rcu_delays.h"
40#else
41#include "delays.h"
42#endif
43#endif
44
45#include "drv_digital_out.h"
46#include "drv_digital_in.h"
47#include "drv_spi_master.h"
48#include "spi_specifics.h"
49
70#define DAC17_CMD_WRITE_BUFER 0x00
71#define DAC17_CMD_WRITE_BUFER_AND_LOAD 0x10
72#define DAC17_CMD_WRITE_BUFER_AND_LOAD_ALL 0x20
73#define DAC17_CMD_WRITE_LOAD_BUFF 0x30
74 // dac17_reg
76
91#define DAC17_SELECTED_CH_A 0x00
92#define DAC17_SELECTED_CH_B 0x01
93#define DAC17_SELECTED_CH_C 0x02
94#define DAC17_SELECTED_CH_D 0x03
95#define DAC17_SELECTED_CH_E 0x04
96#define DAC17_SELECTED_CH_F 0x05
97#define DAC17_SELECTED_CH_G 0x06
98#define DAC17_SELECTED_CH_H 0x07
99
104#define DAC17_LOAD_CH_AB 0x00
105#define DAC17_LOAD_CH_ABCD 0x01
106#define DAC17_LOAD_CH_ABCDEF 0x02
107#define DAC17_LOAD_CH_ALL 0x03
108
113#define DAC17_LOAD_AND_WRITE_CH_AB 0x04
114#define DAC17_LOAD_AND_WRITE_CH_ABCD 0x05
115#define DAC17_LOAD_AND_WRITE_CH_ABCDEF 0x06
116#define DAC17_LOAD_AND_WRITE_CH_ALL 0x07
117
122#define DAC17_PIN_STATE_LOW 0x00
123#define DAC17_PIN_STATE_HIGH 0x01
124
129#define DAC17_12BIT_VALUE 0x0FFFu
130
139#define DAC17_SET_DATA_SAMPLE_EDGE SET_SPI_DATA_SAMPLE_EDGE
140#define DAC17_SET_DATA_SAMPLE_MIDDLE SET_SPI_DATA_SAMPLE_MIDDLE
141 // dac17_set
143
158#define DAC17_MAP_MIKROBUS( cfg, mikrobus ) \
159 cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
160 cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
161 cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
162 cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
163 cfg.rst = MIKROBUS( mikrobus, MIKROBUS_RST ); \
164 cfg.pd = MIKROBUS( mikrobus, MIKROBUS_PWM )
165 // dac17_map // dac17
168
173typedef struct
174{
175 // Output pins
176 digital_out_t rst;
177 digital_out_t pd;
179 // Modules
180 spi_master_t spi;
182 pin_name_t chip_select;
184} dac17_t;
185
190typedef struct
191{
192 // Communication gpio pins
193 pin_name_t miso;
194 pin_name_t mosi;
195 pin_name_t sck;
196 pin_name_t cs;
198 // Additional gpio pins
199 pin_name_t rst;
200 pin_name_t pd;
202 // static variable
203 uint32_t spi_speed;
204 spi_master_mode_t spi_mode;
205 spi_master_chip_select_polarity_t cs_polarity;
208
213typedef enum
214{
216 DAC17_ERROR = -1
217
219
236
250err_t dac17_init ( dac17_t *ctx, dac17_cfg_t *cfg );
251
265
280err_t dac17_generic_write ( dac17_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len );
281
292void dac17_set_rst_pin ( dac17_t *ctx, uint8_t pin_state );
293
304void dac17_set_pd_pin ( dac17_t *ctx, uint8_t pin_state );
305
316
331err_t dac17_send_command ( dac17_t *ctx, uint8_t command, uint8_t ch_sel, uint16_t data_in );
332
346err_t dac17_set_dac_output ( dac17_t *ctx, uint8_t ch_sel, uint16_t dac_data );
347
360err_t dac17_set_all_dac_output ( dac17_t *ctx, uint16_t dac_data );
361
362#ifdef __cplusplus
363}
364#endif
365#endif // DAC17_H
366 // dac17
368
369// ------------------------------------------------------------------------ END
dac17_return_value_t
DAC 17 Click return value data.
Definition: dac17.h:214
@ DAC17_ERROR
Definition: dac17.h:216
@ DAC17_OK
Definition: dac17.h:215
err_t dac17_send_command(dac17_t *ctx, uint8_t command, uint8_t ch_sel, uint16_t data_in)
DAC 17 send command function.
err_t dac17_set_all_dac_output(dac17_t *ctx, uint16_t dac_data)
DAC 17 set output level of all channels function.
err_t dac17_default_cfg(dac17_t *ctx)
DAC 17 default configuration function.
void dac17_set_rst_pin(dac17_t *ctx, uint8_t pin_state)
DAC 17 set RST pin function.
void dac17_set_pd_pin(dac17_t *ctx, uint8_t pin_state)
DAC 17 set PD pin function.
err_t dac17_set_dac_output(dac17_t *ctx, uint8_t ch_sel, uint16_t dac_data)
DAC 17 set output level the selected channel function.
err_t dac17_init(dac17_t *ctx, dac17_cfg_t *cfg)
DAC 17 initialization function.
void dac17_hw_reset(dac17_t *ctx)
DAC 17 hardware reset function.
err_t dac17_generic_write(dac17_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len)
DAC 17 data writing function.
void dac17_cfg_setup(dac17_cfg_t *cfg)
DAC 17 configuration object setup function.
This file contains SPI specific macros, functions, etc.
DAC 17 Click configuration object.
Definition: dac17.h:191
spi_master_chip_select_polarity_t cs_polarity
Definition: dac17.h:205
pin_name_t sck
Definition: dac17.h:195
spi_master_mode_t spi_mode
Definition: dac17.h:204
pin_name_t mosi
Definition: dac17.h:194
uint32_t spi_speed
Definition: dac17.h:203
pin_name_t miso
Definition: dac17.h:193
pin_name_t pd
Definition: dac17.h:200
pin_name_t rst
Definition: dac17.h:199
pin_name_t cs
Definition: dac17.h:196
DAC 17 Click context object.
Definition: dac17.h:174
spi_master_t spi
Definition: dac17.h:180
digital_out_t pd
Definition: dac17.h:177
digital_out_t rst
Definition: dac17.h:176
pin_name_t chip_select
Definition: dac17.h:182