Go to the documentation of this file.
35 #include "mikrosdk_version.h"
38 #if mikroSDK_GET_VERSION < 20800ul
39 #include "rcu_delays.h"
45 #include "drv_digital_out.h"
46 #include "drv_digital_in.h"
47 #include "drv_spi_master.h"
70 #define SILENTSTEP3_REG_DRVCTRL 0x00
71 #define SILENTSTEP3_REG_CHOPCONF 0x04
72 #define SILENTSTEP3_REG_SMARTEN 0x05
73 #define SILENTSTEP3_REG_SGCSCONF 0x06
74 #define SILENTSTEP3_REG_DRVCONF 0x07
92 #define SILENTSTEP3_DRVCTRL_1_PHA_MASK 0x20000ul
93 #define SILENTSTEP3_DRVCTRL_1_CA_MASK 0x1FE00ul
94 #define SILENTSTEP3_DRVCTRL_1_PHB_MASK 0x00100ul
95 #define SILENTSTEP3_DRVCTRL_1_CB_MASK 0x000FFul
101 #define SILENTSTEP3_DRVCTRL_0_INTPOL_MASK 0x00200ul
102 #define SILENTSTEP3_DRVCTRL_0_DEDGE_MASK 0x00100ul
103 #define SILENTSTEP3_DRVCTRL_0_MRES_256 0x00000ul
104 #define SILENTSTEP3_DRVCTRL_0_MRES_128 0x00001ul
105 #define SILENTSTEP3_DRVCTRL_0_MRES_64 0x00002ul
106 #define SILENTSTEP3_DRVCTRL_0_MRES_32 0x00003ul
107 #define SILENTSTEP3_DRVCTRL_0_MRES_16 0x00004ul
108 #define SILENTSTEP3_DRVCTRL_0_MRES_8 0x00005ul
109 #define SILENTSTEP3_DRVCTRL_0_MRES_4 0x00006ul
110 #define SILENTSTEP3_DRVCTRL_0_MRES_2 0x00007ul
111 #define SILENTSTEP3_DRVCTRL_0_MRES_1 0x00008ul
112 #define SILENTSTEP3_DRVCTRL_0_MRES_MASK 0x0000Ful
118 #define SILENTSTEP3_CHOPCONF_TBL_16 0x00000ul
119 #define SILENTSTEP3_CHOPCONF_TBL_24 0x08000ul
120 #define SILENTSTEP3_CHOPCONF_TBL_32 0x10000ul
121 #define SILENTSTEP3_CHOPCONF_TBL_54 0x18000ul
122 #define SILENTSTEP3_CHOPCONF_TBL_MASK 0x18000ul
123 #define SILENTSTEP3_CHOPCONF_CHM_STANDARD 0x00000ul
124 #define SILENTSTEP3_CHOPCONF_CHM_FAST 0x04000ul
125 #define SILENTSTEP3_CHOPCONF_CHM_MASK 0x04000ul
126 #define SILENTSTEP3_CHOPCONF_RNDTF_DISABLE 0x00000ul
127 #define SILENTSTEP3_CHOPCONF_RNDTF_ENABLE 0x02000ul
128 #define SILENTSTEP3_CHOPCONF_RNDTF_MASK 0x02000ul
129 #define SILENTSTEP3_CHOPCONF_HDEC_16 0x00000ul
130 #define SILENTSTEP3_CHOPCONF_HDEC_32 0x00800ul
131 #define SILENTSTEP3_CHOPCONF_HDEC_48 0x01000ul
132 #define SILENTSTEP3_CHOPCONF_HDEC_64 0x01800ul
133 #define SILENTSTEP3_CHOPCONF_HDEC_MASK 0x01800ul
134 #define SILENTSTEP3_CHOPCONF_HEND_0 0x00180ul
135 #define SILENTSTEP3_CHOPCONF_HEND_MASK 0x00780ul
136 #define SILENTSTEP3_CHOPCONF_HSTRT_4 0x00030ul
137 #define SILENTSTEP3_CHOPCONF_HSTRT_MASK 0x00070ul
138 #define SILENTSTEP3_CHOPCONF_TOFF_4 0x00004ul
139 #define SILENTSTEP3_CHOPCONF_TOFF_MASK 0x0000Ful
145 #define SILENTSTEP3_SMARTEN_SEIMIN_HALF_CS 0x00000ul
146 #define SILENTSTEP3_SMARTEN_SEIMIN_QUARTER_CS 0x08000ul
147 #define SILENTSTEP3_SMARTEN_SEIMIN_MASK 0x08000ul
148 #define SILENTSTEP3_SMARTEN_SEDN_32 0x00000ul
149 #define SILENTSTEP3_SMARTEN_SEDN_8 0x02000ul
150 #define SILENTSTEP3_SMARTEN_SEDN_2 0x04000ul
151 #define SILENTSTEP3_SMARTEN_SEDN_1 0x06000ul
152 #define SILENTSTEP3_SMARTEN_SEDN_MASK 0x06000ul
153 #define SILENTSTEP3_SMARTEN_SEMAX_2 0x00200ul
154 #define SILENTSTEP3_SMARTEN_SEMAX_MASK 0x00F00ul
155 #define SILENTSTEP3_SMARTEN_SEUP_1 0x00000ul
156 #define SILENTSTEP3_SMARTEN_SEUP_2 0x00020ul
157 #define SILENTSTEP3_SMARTEN_SEUP_4 0x00040ul
158 #define SILENTSTEP3_SMARTEN_SEUP_8 0x00060ul
159 #define SILENTSTEP3_SMARTEN_SEUP_MASK 0x00060ul
160 #define SILENTSTEP3_SMARTEN_SEMIN_2 0x00002ul
161 #define SILENTSTEP3_SMARTEN_SEMIN_MASK 0x0000Ful
167 #define SILENTSTEP3_SGCSCONF_SFILT_STANDARD 0x00000ul
168 #define SILENTSTEP3_SGCSCONF_SFILT_FILTERED 0x10000ul
169 #define SILENTSTEP3_SGCSCONF_SFILT_MASK 0x10000ul
170 #define SILENTSTEP3_SGCSCONF_SGT_0 0x00000ul
171 #define SILENTSTEP3_SGCSCONF_SGT_MASK 0x07F00ul
172 #define SILENTSTEP3_SGCSCONF_CS_2_OF_32 0x00002ul
173 #define SILENTSTEP3_SGCSCONF_CS_MASK 0x0001Ful
179 #define SILENTSTEP3_DRVCONF_TST_MASK 0x10000ul
180 #define SILENTSTEP3_DRVCONF_SLPH_MIN 0x00000ul
181 #define SILENTSTEP3_DRVCONF_SLPH_MIN_TEMP 0x04000ul
182 #define SILENTSTEP3_DRVCONF_SLPH_MED_TEMP 0x08000ul
183 #define SILENTSTEP3_DRVCONF_SLPH_MAX 0x0C000ul
184 #define SILENTSTEP3_DRVCONF_SLPH_MASK 0x0C000ul
185 #define SILENTSTEP3_DRVCONF_SLPL_MIN 0x00000ul
186 #define SILENTSTEP3_DRVCONF_SLPL_MIN_TEMP 0x01000ul
187 #define SILENTSTEP3_DRVCONF_SLPL_MED_TEMP 0x02000ul
188 #define SILENTSTEP3_DRVCONF_SLPL_MAX 0x03000ul
189 #define SILENTSTEP3_DRVCONF_SLPL_MASK 0x03000ul
190 #define SILENTSTEP3_DRVCONF_DISS2G_ENABLE 0x00000ul
191 #define SILENTSTEP3_DRVCONF_DISS2G_DISABLE 0x00400ul
192 #define SILENTSTEP3_DRVCONF_DISS2G_MASK 0x00400ul
193 #define SILENTSTEP3_DRVCONF_TS2G_3_2US 0x00000ul
194 #define SILENTSTEP3_DRVCONF_TS2G_1_6US 0x00100ul
195 #define SILENTSTEP3_DRVCONF_TS2G_1_2US 0x00200ul
196 #define SILENTSTEP3_DRVCONF_TS2G_0_8US 0x00300ul
197 #define SILENTSTEP3_DRVCONF_TS2G_MASK 0x00300ul
198 #define SILENTSTEP3_DRVCONF_SDOFF_0 0x00000ul
199 #define SILENTSTEP3_DRVCONF_SDOFF_1 0x00080ul
200 #define SILENTSTEP3_DRVCONF_SDOFF_MASK 0x00080ul
201 #define SILENTSTEP3_DRVCONF_VSENSE_305MV 0x00000ul
202 #define SILENTSTEP3_DRVCONF_VSENSE_165MV 0x00040ul
203 #define SILENTSTEP3_DRVCONF_VSENSE_MASK 0x00040ul
204 #define SILENTSTEP3_DRVCONF_RDSEL_MSTEP 0x00000ul
205 #define SILENTSTEP3_DRVCONF_RDSEL_SG_LEVEL 0x00010ul
206 #define SILENTSTEP3_DRVCONF_RDSEL_SG_CS_LEVEL 0x00020ul
207 #define SILENTSTEP3_DRVCONF_RDSEL_MASK 0x00030ul
213 #define SILENTSTEP3_PIN_STATE_LOW 0
214 #define SILENTSTEP3_PIN_STATE_HIGH 1
220 #define SILENTSTEP3_DIR_CCW 0
221 #define SILENTSTEP3_DIR_CW 1
227 #define SILENTSTEP3_MODE_FULL_STEP 8
228 #define SILENTSTEP3_MODE_HALF_STEP 7
229 #define SILENTSTEP3_MODE_QUARTER_STEP 6
230 #define SILENTSTEP3_MODE_1_OVER_8_STEP 5
231 #define SILENTSTEP3_MODE_1_OVER_16_STEP 4
232 #define SILENTSTEP3_MODE_1_OVER_32_STEP 3
233 #define SILENTSTEP3_MODE_1_OVER_64_STEP 2
234 #define SILENTSTEP3_MODE_1_OVER_128_STEP 1
235 #define SILENTSTEP3_MODE_1_OVER_256_STEP 0
241 #define SILENTSTEP3_SPEED_VERY_SLOW 0
242 #define SILENTSTEP3_SPEED_SLOW 1
243 #define SILENTSTEP3_SPEED_MEDIUM 2
244 #define SILENTSTEP3_SPEED_FAST 3
245 #define SILENTSTEP3_SPEED_VERY_FAST 4
255 #define SILENTSTEP3_SET_DATA_SAMPLE_EDGE SET_SPI_DATA_SAMPLE_EDGE
256 #define SILENTSTEP3_SET_DATA_SAMPLE_MIDDLE SET_SPI_DATA_SAMPLE_MIDDLE
274 #define SILENTSTEP3_MAP_MIKROBUS( cfg, mikrobus ) \
275 cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
276 cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
277 cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
278 cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
279 cfg.en = MIKROBUS( mikrobus, MIKROBUS_AN ); \
280 cfg.sg = MIKROBUS( mikrobus, MIKROBUS_RST ); \
281 cfg.step = MIKROBUS( mikrobus, MIKROBUS_PWM ); \
282 cfg.dir = MIKROBUS( mikrobus, MIKROBUS_INT )
517 #endif // SILENTSTEP3_H
void silentstep3_set_step_pin(silentstep3_t *ctx, uint8_t state)
Silent Step 3 set step pin function.
spi_master_mode_t spi_mode
Definition: silentstep3.h:334
silentstep3_return_value_t
Silent Step 3 Click return value data.
Definition: silentstep3.h:344
@ SILENTSTEP3_OK
Definition: silentstep3.h:345
pin_name_t chip_select
Definition: silentstep3.h:304
void silentstep3_enable_device(silentstep3_t *ctx)
Silent Step 3 enable device function.
digital_out_t step
Definition: silentstep3.h:295
@ SILENTSTEP3_ERROR
Definition: silentstep3.h:346
Silent Step 3 Click configuration object.
Definition: silentstep3.h:319
This file contains SPI specific macros, functions, etc.
digital_out_t en
Definition: silentstep3.h:294
pin_name_t sg
Definition: silentstep3.h:328
spi_master_chip_select_polarity_t cs_polarity
Definition: silentstep3.h:335
uint32_t spi_speed
Definition: silentstep3.h:333
uint32_t sgcsconf
Definition: silentstep3.h:309
uint32_t drvconf
Definition: silentstep3.h:310
Silent Step 3 Click context object.
Definition: silentstep3.h:292
pin_name_t miso
Definition: silentstep3.h:321
pin_name_t sck
Definition: silentstep3.h:323
err_t silentstep3_write_register(silentstep3_t *ctx, uint8_t reg, uint32_t data_in, uint32_t *data_out)
Silent Step 3 write command function.
err_t silentstep3_init(silentstep3_t *ctx, silentstep3_cfg_t *cfg)
Silent Step 3 initialization function.
void silentstep3_switch_direction(silentstep3_t *ctx)
Silent Step 3 switch direction function.
spi_master_t spi
Definition: silentstep3.h:302
uint8_t silentstep3_get_sg_pin(silentstep3_t *ctx)
Silent Step 3 get sg pin function.
pin_name_t mosi
Definition: silentstep3.h:322
uint32_t chopconf
Definition: silentstep3.h:307
digital_out_t dir
Definition: silentstep3.h:296
digital_in_t sg
Definition: silentstep3.h:299
pin_name_t en
Definition: silentstep3.h:327
err_t silentstep3_set_step_mode(silentstep3_t *ctx, uint8_t mode)
Silent Step 3 set step mode function.
void silentstep3_set_direction(silentstep3_t *ctx, uint8_t dir)
Silent Step 3 set direction function.
void silentstep3_drive_motor(silentstep3_t *ctx, uint32_t steps, uint8_t speed)
Silent Step 3 driver motor function.
pin_name_t dir
Definition: silentstep3.h:330
err_t silentstep3_default_cfg(silentstep3_t *ctx)
Silent Step 3 default configuration function.
void silentstep3_disable_device(silentstep3_t *ctx)
Silent Step 3 disable device function.
void silentstep3_cfg_setup(silentstep3_cfg_t *cfg)
Silent Step 3 configuration object setup function.
uint32_t smarten
Definition: silentstep3.h:308
pin_name_t step
Definition: silentstep3.h:329
uint32_t drvctrl
Definition: silentstep3.h:306
pin_name_t cs
Definition: silentstep3.h:324