stepRocker Open Source TMCL  1.00
 All Data Structures Files Functions Variables Typedefs Enumerations Macros
TMC4361.h
Go to the documentation of this file.
1 /*******************************************************************************
2  Project: stepRocker Mini-TMCL (for stepRocker servo (TMCM-1111))
3 
4  Module: TMC4361.h
5  Definitions of TMC4361 library functions
6 
7  Copyright (C) 2018 TRINAMIC Motion Control GmbH & Co KG
8  Waterloohain 5
9  D - 22769 Hamburg, Germany
10  http://www.trinamic.com/
11 
12  This program is free software; you can redistribute it and/or modify it
13  freely.
14 
15  This program is distributed "as is" in the hope that it will be useful, but
16  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
17  or FITNESS FOR A PARTICULAR PURPOSE.
18 *******************************************************************************/
19 
31 #ifndef __TMC4361_H
32 #define __TMC4361_H
33 
34 //Register address definitions
35 #define TMC43xx_GENERAL_CONF 0x00
36 #define TMC43xx_REFERENCE_CONF 0x01
37 #define TMC43xx_START_CONF 0x02
38 #define TMC43xx_INPUT_FILT_CONF 0x03
39 #define TMC43xx_SPI_OUT_CONF 0x04
40 #define TMC43xx_CURRENT_CONF 0x05
41 #define TMC43xx_SCALE_VALUES 0x06
42 #define TMC43xx_ENC_IN_CONF 0x07
43 #define TMC43xx_ENC_IN_DATA 0x08
44 #define TMC43xx_ENC_OUT_DATA 0x09
45 #define TMC43xx_STEP_CONF 0x0A
46 #define TMC43xx_SPI_STATUS_SEL 0x0B
47 #define TMC43xx_EVENT_CLR_CONF 0x0C
48 #define TMC43xx_INTR_CONF 0x0D
49 #define TMC43xx_EVENTS 0x0E
50 #define TMC43xx_STATUS 0x0F
51 #define TMC43xx_STEP_DIR_TIME 0x10
52 #define TMC43xx_START_OUT_ADD 0x11
53 #define TMC43xx_GEAR_RATIO 0x12
54 #define TMC43xx_START_DELAY 0x13
55 #define TMC43xx_CLK_GATING_DELAY 0x14
56 #define TMC43xx_STDBY_DELAY 0x15
57 #define TMC43xx_FREEWHEEL_DELAY 0x16
58 #define TMC43xx_VDRV_SCALE_LIM 0x17
59 #define TMC43xx_PWM_VMAX 0x17 //same as VDRV_SCALE_LIM
60 #define TMC43xx_UPSCALE_DELAY 0x18
61 #define TMC43xx_CL_UPSCALE_DELAY 0x18 //same as UPSCALE_DELAY
62 #define TMC43xx_HOLD_SCALE_DELAY 0x19
63 #define TMC43xx_CL_DOWNSCALE_DELAY 0x19 //same as HOLD_SCALE_DELAY
64 #define TMC43xx_DRV_SCALE_DELAY 0x1A
65 #define TMC43xx_BOOST_TIME 0x1B
66 #define TMC43xx_CL_BETA_GAMMA 0x1C
67 #define TMC43xx_DAC_ADDR_AB 0x1D
68 #define TMC43xx_SPI_SWITCH_VEL 0x1D //same as DAC_ADDR_AB
69 #define TMC43xx_HOME_SAFETY_MARGIN 0x1E
70 #define TMC43xx_PWM_FREQ 0x1F
71 #define TMC43xx_CHOPSYNC_DIV 0x1F //same as PWM_FREQ
72 #define TMC43xx_RAMPMODE 0x20
73 #define TMC43xx_XACTUAL 0x21
74 #define TMC43xx_VACTUAL 0x22
75 #define TMC43XX_AACTUAL 0x23
76 #define TMC43xx_VMAX 0x24
77 #define TMC43xx_VSTART 0x25
78 #define TMC43xx_VSTOP 0x26
79 #define TMC43xx_VBREAK 0x27
80 #define TMC43xx_AMAX 0x28
81 #define TMC43xx_DMAX 0x29
82 #define TMC43xx_ASTART 0x2A
83 #define TMC43xx_DFINAL 0x2B
84 #define TMC43xx_DSTOP 0x2C
85 #define TMC43xx_BOW1 0x2D
86 #define TMC43xx_BOW2 0x2E
87 #define TMC43xx_BOW3 0x2F
88 #define TMC43xx_BOW4 0x30
89 #define TMC43xx_CLOCK_FREQ 0x31
90 #define TMC43xx_POSCOMP 0x32
91 #define TMC43xx_VIRT_STOP_LEFT 0x33
92 #define TMC43xx_VIRT_STOP_RIGHT 0x34
93 #define TMC43xx_XHOME 0x35
94 #define TMC43xx_XLATCH_R 0x36 //read only
95 #define TMC43xx_REV_CNT_R 0x36 //read only, same as XLATCH_R
96 #define TMC43xx_XRANGE_W 0x36 //write only, same as XLATCH_R
97 #define TMC43xx_XTARGET 0x37
98 #define TMC43xx_XPIPE0 0x38
99 #define TMC43xx_XPIPE1 0x39
100 #define TMC43xx_XPIPE2 0x3A
101 #define TMC43xx_XPIPE3 0x3B
102 #define TMC43xx_XPIPE4 0x3C
103 #define TMC43xx_XPIPE5 0x3D
104 #define TMC43xx_XPIPE6 0x3E
105 #define TMC43xx_XPIPE7 0x3F
106 #define TMC43xx_SH_REG0 0x40
107 #define TMC43xx_SH_REG1 0x41
108 #define TMC43xx_SH_REG2 0x42
109 #define TMC43xx_SH_REG3 0x43
110 #define TMC43xx_SH_REG4 0x44
111 #define TMC43xx_SH_REG5 0x45
112 #define TMC43xx_SH_REG6 0x46
113 #define TMC43xx_SH_REG7 0x47
114 #define TMC43xx_SH_REG8 0x48
115 #define TMC43xx_SH_REG9 0x49
116 #define TMC43xx_SH_REG10 0x4A
117 #define TMC43xx_SH_REG11 0x4B
118 #define TMC43xx_SH_REG12 0x4C
119 #define TMC43xx_SH_REG13 0x4D
120 #define TMC43xx_IFREEZE_DFREEZE 0x4E
121 #define TMC43xx_CLK_GATING 0x4F
122 #define TMC43xx_ENC_POS 0x50
123 #define TMC43xx_ENC_LATCH_R 0x51 //read only
124 #define TMC43xx_ENC_RES_VAL_W 0x51 //write only, same as ENC_LATCH_R
125 #define TMC43xx_ENC_POS_DEV_R 0x52 //read only
126 #define TMC43xx_CL_TR_TOLERANCE_W 0x52 //write only, same as ENC_POS_DEV
127 #define TMC43xx_ENC_POS_DEV_TOL 0x53
128 #define TMC43xx_ENC_IN_RES_W 0x54 //write only
129 #define TMC43xx_ENC_CONST_R 0x54 //read only, same as ENC_IN_RES_W
130 #define TMC43xx_ENC_OUT_RES 0x55 //write only
131 #define TMC43xx_SER_CLK_IN 0x56 //write only
132 #define TMC43xx_SSI_IN_DELAY 0x57 //write only
133 #define TMC43xx_BISS_TIMEOUT 0x57 //write only, same as SSI_IN_DELAY
134 #define TMC43xx_SSI_IN_PTIME 0x58 //write only
135 #define TMC43xx_BISS_IN_BUSYR 0x58 //write only, same as SSI_IN_PTIME
136 #define TMC43xx_CL_OFFSET 0x59 //write only
137 #define TMC43xx_PID_P_W 0x5A //write only
138 #define TMC43xx_CL_VMAX_P_W 0x5A //write only, same as PID_P_W
139 #define TMC43xx_PID_VEL_R 0x5A //read only, same as PID_P_W
140 #define TMC43xx_PID_I_W 0x5B //write only
141 #define TMC43xx_CL_VMAX_CALC_I_W 0x5B //write only, same as PID_I_W
142 #define TMC43xx_PID_ISUM_RD 0x5B //read only, same as PID_I_W
143 #define TMC43xx_PID_D_W 0x5C //write only
144 #define TMC43xx_CL_DELTA_P_W 0x5C //write only
145 #define TMC43xx_PID_I_CLIP_D_CLK_W 0x5D //write_only
146 #define TMC43xx_PID_E_R 0x5D //read only, same as PID_I_CLIP_W
147 #define TMC43xx_PID_DV_CLIP 0x5E //write only
148 #define TMC43xx_PID_TOLERANCE 0x5F //write only
149 #define TMC43xx_CL_TOLERANCE 0x5F //write only, same as PID_TOLERANCE
150 #define TMC43xx_FS_VEL 0x60 //write only
151 #define TMC43xx_DC_VEL 0x60 //write only, same as FS_VEL
152 #define TMC43xx_CL_VMIN_EMF 0x60 //write only, same as FS_VEL
153 #define TMC43xx_DC_TIME_SG 0x61 //write only
154 #define TMC43xx_CL_VADD_EMF 0x61 //write only, same as DC_TIME_SG
155 #define TMC43xx_DC_LSPTM 0x62 //write only
156 #define TMC43xx_ENC_VEL_ZERO 0x62 //write only, same as DC_LSPTM
157 #define TMC43xx_ENC_VMEAN_WAIT_FILT 0x63 //write only
158 #define TMC43xx_SNCHRO_SET 0x64 //write only
159 #define TMC43xx_VENC 0x65 //read only
160 #define TMC43xx_VENC_MEAN 0x66 //read only
161 #define TMC43xx_VSTALL_LIMIT 0x67 //write only
162 #define TMC43xx_CIRCULAR_DEC 0x7C //write only
163 #define TMC43xx_COMP_OFFSET_AMPL 0x7D //write only
164 #define TMC43xx_ADDR_TO_ENC 0x68 //write only
165 #define TMC43xx_DATA_TO_ENC 0x69 //write only
166 #define TMC43xx_ADDR_FROM_ENC 0x6A //read only
167 #define TMC43xx_DATA_FROM_ENC 0x6B //read only
168 #define TMC43xx_COVER_LOW 0x6C //write only
169 #define TMC43xx_COVER_HIGH 0x6D //write only
170 #define TMC43xx_POLLING_1_R 0x6C //read only
171 #define TMC43xx_POLLING_2_R 0x6D //read only
172 #define TMC43xx_COVER_DRV_LOW 0x6E //read only
173 #define TMC43xx_COVER_DRV_HIGH 0x6F //read only
174 #define TMC43xx_MSLUT0 0x70 //write only
175 #define TMC43xx_MSLUT1 0x71 //write only
176 #define TMC43xx_MSLUT2 0x72 //write only
177 #define TMC43xx_MSLUT3 0x73 //write only
178 #define TMC43xx_MSLUT4 0x74 //write only
179 #define TMC43xx_MSLUT5 0x75 //write only
180 #define TMC43xx_MSLUT6 0x76 //write only
181 #define TMC43xx_MSLUT7 0x77 //write only
182 #define TMC43xx_MSLUTSEL 0x78 //write only
183 #define TMC43xx_MSCNT 0x79 //read only
184 #define TMC43xx_CURRENT_AB 0x7A //read only
185 #define TMC43xx_CURRENT_SPI 0x7B //read only
186 #define TMC43xx_SCALE_PARAM 0x7C //read only
187 #define TMC43xx_ENC_COMP_OFFSET 0x7D //write only
188 #define TMC43xx_START_SIN_OFFSET 0x7E //write only
189 
190 #define TMC43xx_WRITE 0x80
191 
192 //TMC43xx GENERAL_CONFIG bits
193 #define TMC43xx_GCONF_USE_AVSTART 0x00000001
194 #define TMC43xx_GCONF_DIRECT_ACC_EN 0x00000002
195 #define TMC43xx_GCONF_DIRECT_BOW_EN 0x00000004
196 #define TMC43xx_GCONF_STEP_INACT_POL 0x00000008
197 #define TMC43xx_GCONF_TOGGLE_STEP 0x00000010
198 #define TMC43xx_GCONF_POL_DIR_OUT 0x00000020
199 #define TMC43xx_GCONF_INT_SD 0x00000000
200 #define TMC43xx_GCONF_EXT_SD_HIGH 0x00000040
201 #define TMC43xx_GCONF_EXT_SD_LOW 0x00000080
202 #define TMC43xx_GCONF_EXT_SD_TOGGLE 0x000000C0
203 #define TMC43xx_GCONF_DIR_IN_POL 0x00000100
204 #define TMC43xx_GCONF_SD_INDIRECT 0x00000200
205 #define TMC43xx_GCONF_ENC_INC 0x00000000
206 #define TMC43xx_GCONF_ENC_SSI 0x00000400
207 #define TMC43xx_GCONF_ENC_BISS 0x00000800
208 #define TMC43xx_GCONF_ENC_SPI 0x00000C00
209 #define TMC43xx_GCONF_ENC_DIFF_DIS 0x00001000
210 #define TMC43xx_GCONF_STDBY_CLOCK_LOW 0x00000000
211 #define TMC43xx_GCONF_STDBY_CLOCK_HIGH 0x00002000
212 #define TMC43xx_GCONF_STDBY_CHOPSYNC 0x00004000
213 #define TMC43xx_GCONF_STDBY_CLOCK_INT 0x00006000
214 #define TMC43xx_GCONF_INTR_POL 0x00008000
215 #define TMC43xx_GCONF_TARGET_REACHED_POL 0x00010000
216 #define TMC43xx_GCONF_CLK_GATING_EN 0x00020000
217 #define TMC43xx_GCONF_CLK_GATING_STDBY_EN 0x00040000
218 #define TMC43xx_GCONF_FS_EN 0x00080000
219 #define TMC43xx_GCONF_FS_SDOUT 0x00100000
220 #define TMC43xx_GCONF_DCSTEP_OFF 0x00000000
221 #define TMC43xx_GCONF_DCSTEP_AUTO 0x00200000
222 #define TMC43xx_GCONF_DCSTEP_TMC21xx 0x00400000
223 #define TMC43xx_GCONF_DCSTEP_TMC26x 0x00600000
224 #define TMC43xx_GCONF_PWM_OUT_EN 0x00800000
225 #define TMC43xx_GCONF_SER_ENC_OUT_EN 0x01000000
226 #define TMC43xx_GCONF_SER_ENC_OUT_DIFF 0x02000000
227 #define TMC43xx_GCONF_AUTO_DIRECT_SD_OFF 0x04000000
228 #define TMC43xx_GCONF_CIRC_CNT_XLATCH 0x08000000
229 #define TMC43xx_GCONF_REV_DIR 0x10000000
230 #define TMC43xx_GCONF_INTR_TR_PU_PD_EN 0x20000000
231 #define TMC43xx_GCONF_INTR_WIRED_AND 0x40000000
232 #define TMC43xx_GCONF_TR_WIRED_AND 0x80000000
233 
234 //TMC43xx_SPI_OUT_CONF bits
235 #define TMC43xx_SPIOUT_OFF 0
236 #define TMC43xx_SPIOUT_TMC23x 0x00000008
237 #define TMC43xx_SPIOUT_TMC24x 0x00000009
238 #define TMC43xx_SPIOUT_TMC26x_389 0x0000000A
239 #define TMC43xx_SPIOUT_TMC26x_389_SD 0x0000000B
240 #define TMC43xx_SPIOUT_TMC21xx_SD 0x0000000C
241 #define TMC43xx_SPIOUT_TMC21xx 0x0000000D
242 #define TMC43xx_SPIOUT_SCALE 0x00000004
243 #define TMC43xx_SPIOUT_SINLUT 0x00000005
244 #define TMC43xx_SPIOUT_DACADDR 0x00000006
245 #define TMC43xx_SPIOUT_DAC 0x00000002
246 #define TMC43xx_SPIOUT_DAC_INV 0x00000003
247 #define TMC43xx_SPIOUT_DAC_MAPPED 0x00000001
248 #define TMC43xx_SPIOUT_COVER_ONLY 0x0000000F
249 #define TMC43xx_SPIOUT_MD_OFF 0x00000000
250 #define TMC43xx_SPIOUT_MD_FALLING 0x00000010
251 #define TMC43xx_SPIOUT_MD_NO_STANDBY 0x00000020
252 #define TMC43xx_SPIOUT_MD_ALWAYS 0x00000030
253 #define TMC43xx_SPIOUT_STDBY_ON_STALL 0x00000040
254 #define TMC43xx_SPIOUT_STALL_FLAG 0x00000080
255 #define TMC43xx_STALL_LOAD_LIMIT(x) ((x & 0x07) << 8)
256 #define TMC43xx_SPIOUT_PHASE_SHIFT 0x00000100
257 #define TMC43xx_SPIOUT_THREE_PHASE_EN 0x00000010
258 #define TMC43xx_SPIOUT_SCALE_VAL_TR_EN 0x00000020
259 #define TMC43xx_SPIOUT_DISABLE_POLLING 0x00000040
260 #define TMC43xx_SPIOUT_ENABLE_SHADOW_DATAGRAMS 0x00000080
261 #define TMC43xx_SPIOUT_POLL_BLOCK_MULTI(x) (((x) & 0x0f) << 8)
262 #define TMC43xx_SPIOUT_COVER_DONE_NOT_FOR_CURRENT 0x00001000
263 
264 //TMC43xx ENC_IN configuration bits
265 #define TMC43xx_ENC_IN_MODE_OL 0x00000000
266 #define TMC43xx_ENC_IN_MODE_CL 0x00400000
267 #define TMC43xx_ENC_IN_MODE_PID_0 0x00800000
268 #define TMC43xx_ENC_IN_MODE PID_V 0x00C00000
269 #define TMC43xx_ENC_IN_CL_CALIBRATION_EN 0x01000000
270 #define TMC43xx_ENC_IN_CL_EMF_EN 0x02000000
271 #define TMC43xx_ENC_IN_CL_VLIMIT_EN 0x08000000
272 #define TMC43xx_ENC_IN_CL_VELOCITY_EN 0x10000000
273 #define TMC43xx_ENC_IN_SER_VAR_LIMIT 0x80000000
274 
275 //TMC43xx_CURRENT_CONF bits
276 #define TMC43xx_CURCONF_HOLD_EN 0x00000001
277 #define TMC43xx_CURCONF_DRIVE_EN 0x00000002
278 #define TMC43xx_CURCONF_BOOST_ACC_EN 0x00000004
279 #define TMC43xx_CURCONF_BOOST_DEC_EN 0x00000008
280 #define TMC43xx_CURCONF_BOOST_START_EN 0x00000010
281 #define TMC43xx_CURCONF_SEC_DRIVE_EN 0x00000020
282 #define TMC43xx_CURCONF_FREEWHEELING_EN 0x00000040
283 #define TMC43xx_CURCONF_CL_SCALE_EN 0x00000080
284 #define TMC43xx_CURCONF_PWM_SCALE_REF 0x00000100
285 #define TMC43xx_CURCONF_PWM_AMPL(x) (x<<16)
286 
287 //TMC43xx_SCALE_VALUES bits
288 #define TMC43xx_SCALEVAL_BOOST(x) (x & 0xff)
289 #define TMC43xx_SCALEVAL_DRV1(x) ((x & 0xff) << 8)
290 #define TMC43xx_SCALEVAL_DRV2(x) ((x & 0xff) << 16)
291 #define TMC43xx_SCALEVAL_HOLD(x) ((x & 0xff) << 24)
292 
293 //TMC43xx_EVENTS register bits
294 #define TMC43xx_EV_TARGET_REACHED 0x00000001
295 #define TMC43xx_EV_POSCOMP_REACHED 0x00000002
296 #define TMC43xx_EV_VELOCITY_REACHED 0x00000004
297 #define TMC43xx_EV_VZERO 0x00000008
298 #define TMC43xx_EV_VPOSITIVE 0x00000010
299 #define TMC43xx_EV_VNEGATIVE 0x00000020
300 #define TMC43xx_EV_AZERO 0x00000040
301 #define TMC43xx_EV_APOSITIVE 0x00000080
302 #define TMC43xx_EV_ANEGATIVE 0x00000100
303 #define TMC43xx_EV_MAX_PHASE_TRAP 0x00000200
304 #define TMC43xx_EV_FROZEN 0x00000400
305 #define TMC43xx_EV_STOP_LEFT 0x00000800
306 #define TMC43xx_EV_STOP_RIGHT 0x00001000
307 #define TMC43xx_EV_VIRT_STOP_LEFT 0x00002000
308 #define TMC43xx_EV_VIRT_STOP_RIGHT 0x00004000
309 #define TMC43xx_EV_HOME_ERROR 0x00008000
310 #define TMC43xx_EV_XLATCH_DONE 0x00010000
311 #define TMC43xx_EV_FS_ACTIVE 0x00020000
312 #define TMC43xx_EV_ENC_FAIL 0x00040000
313 #define TMC43xx_EV_N_ACTIVE 0x00080000
314 #define TMC43xx_EV_ENC_DONE 0x00100000
315 #define TMC43xx_EV_SER_ENC_DATA_FAIL 0x00200000
316 #define TMC43xx_EV_CRC_FAIL 0x00400000
317 #define TMC43xx_EV_SER_DATA_DONE 0x00800000
318 #define TMC43xx_EV_BISS_FLAG 0x01000000
319 #define TMC43xx_EV_COVER_DONE 0x02000000
320 #define TMC43xx_EV_ENC_VZERO 0x04000000
321 #define TMC43xx_EV_CL_MAX 0x08000000
322 #define TMC43xx_EV_CL_FIT 0x10000000
323 #define TMC43xx_EV_STOP_ON_STALL 0x20000000
324 #define TMC43xx_EV_MOTOR 0x40000000
325 #define TMC43xx_EV_RST 0x80000000
326 
327 //TMC43xx_STATUS register bits
328 #define TMC43xx_ST_TARGET_REACHED 0x00000001
329 #define TMC43xx_ST_POSCOMP_REACHED 0x00000002
330 #define TMC43xx_ST_VEL_REACHED 0x00000004
331 #define TMC43xx_ST_VEL_POS 0x00000008
332 #define TMC43xx_ST_VEL_NEG 0x00000010
333 #define TMC43xx_ST_RAMP_ACC 0x00000020
334 #define TMC43xx_ST_RAMP_DEC 0x00000040
335 #define TMC43xx_ST_STOP_LEFT_ACTIVE 0x00000080
336 #define TMC43xx_ST_STOP_RIGHT_ACTIVE 0x00000100
337 #define TMC43xx_ST_VIRT_STOP_LEFT_ACTIVE 0x00000200
338 #define TMC43xx_ST_VIRT_STOP_RIGHT_ACTIVE 0x00000400
339 #define TMC43xx_ST_HOME_ERROR 0x00001000
340 #define TMC43xx_ST_ENC_FAIL 0x00004000
341 
342 //TMC43xx ramp modes
343 #define TMC43xx_RAMPMODE_VEL_HOLD 0
344 #define TMC43xx_RAMPMODE_VEL_TRAPEZ 1
345 #define TMC43xx_RAMPMODE_VEL_SSHAPE 2
346 #define TMC43xx_RAMPMODE_POS_HOLD 4
347 #define TMC43xx_RAMPMODE_POS_TRAPEZ 5
348 #define TMC43xx_RAMPMODE_POS_SSHAPE 6
349 
350 //TMC43xx reference switch configuration
351 #define TMC43xx_REFCONF_STOP_LEFT_EN 0x00000001
352 #define TMC43xx_REFCONF_STOP_RIGHT_EN 0x00000002
353 #define TMC43xx_REFCONF_POL_STOP_LEFT 0x00000004
354 #define TMC43xx_REFCONF_POL_STOP_RIGHT 0x00000008
355 #define TMC43xx_REFCONF_INV_STOP_DIR 0x00000010
356 #define TMC43xx_REFCONF_SOFT_STOP_EN 0x00000020
357 #define TMC43xx_REFCONF_VIRT_LEFT_LIM_EN 0x00000040
358 #define TMC43xx_REFCONF_VIRT_RIGHT_LIM_EN 0x00000080
359 #define TMC43xx_REFCONF_VIRT_STOP_HARD 0x00000100
360 #define TMC43xx_REFCONF_VIRT_STOP_LINEAR 0x00000200
361 #define TMC43xx_REFCONF_CIRCULAR 0x00400000
362 #define TMC43xx_REFCONF_STOP_ON_STALL 0x04000000
363 #define TMC43xx_REFCONF_DRV_AFTER_STALL 0x08000000
364 #define TMC43xx_REFCONF_CIRCULAR_ENC_EN 0x80000000
365 
366 
367 //TMC43xx access functions
368 void WriteTMC43xxBytes(UCHAR Axis, UCHAR Address, UCHAR x1, UCHAR x2, UCHAR x3, UCHAR x4);
369 void WriteTMC43xxInt(UCHAR Axis, UCHAR Address, int Value);
370 int ReadTMC43xxInt(UCHAR Axis, UCHAR Address);
371 void TMC43xxSetBits(UCHAR Axis, UCHAR Address, UINT BitMask);
372 void TMC43xxClearBits(UCHAR Axis, UCHAR Address, UINT BitMask);
373 void TMC43xxWriteBits(UCHAR Axis, UCHAR Address, UINT Value, UCHAR Start, UCHAR Size);
375 UINT ReadAndClearTMC43xxEvents(UCHAR Axis, UINT EventMask);
376 UCHAR GetHomeInput(UCHAR Motor);
377 void HardStop(UINT Axis);
378 void InitTMC43xx(void);
379 void ResetTMC43xx(void);
380 
381 //Unit conversion functions
382 int ConvertVelocityUserToInternal(int UserVelocity);
383 int ConvertAccelerationUserToInternal(int UserAcceleration);
384 int ConvertVelocityInternalToUser(int InternalVelocity);
385 int ConvertAccelerationInternalToUser(int InternalAcceleration);
386 int ConvertInternalToInternal(int Internal);
387 
388 #endif
void WriteTMC43xxBytes(UCHAR Axis, UCHAR Address, UCHAR x1, UCHAR x2, UCHAR x3, UCHAR x4)
Write bytes to a TMC4361 register.
Definition: TMC4361.c:56
int ReadTMC43xxInt(UCHAR Axis, UCHAR Address)
Read from a TMC4361 register.
Definition: TMC4361.c:101
void ResetTMC43xx(void)
Reset the TMC4361.
Definition: TMC4361.c:311
void InitTMC43xx(void)
Initialize the TMC4361.
Definition: TMC4361.c:255
void TMC43xxWriteBits(UCHAR Axis, UCHAR Address, UINT Value, UCHAR Start, UCHAR Size)
Write bits in a TMC4361 register.
Definition: TMC4361.c:181
UINT PeekTMC43xxEvents(UCHAR Axis)
Read events without clearing them.
Definition: TMC4361.c:209
unsigned int UINT
32 bits unsigned
Definition: stepRocker.h:33
UCHAR GetHomeInput(UCHAR Motor)
Read TMC4361 home input.
Definition: TMC4361.c:331
UINT ReadAndClearTMC43xxEvents(UCHAR Axis, UINT EventMask)
Read events and clear specific events.
Definition: TMC4361.c:226
int ConvertVelocityInternalToUser(int InternalVelocity)
Convert from internal unit to pps.
Definition: TMC4361.c:380
void WriteTMC43xxInt(UCHAR Axis, UCHAR Address, int Value)
Write a 32 bit integer value to a TMC4361 register.
Definition: TMC4361.c:79
void TMC43xxClearBits(UCHAR Axis, UCHAR Address, UINT BitMask)
Clear bits in a TMC4361 register.
Definition: TMC4361.c:158
void HardStop(UINT Axis)
Stop the motor immediately.
Definition: TMC4361.c:241
int ConvertAccelerationUserToInternal(int UserAcceleration)
Convert from pps/s to internal unit.
Definition: TMC4361.c:365
unsigned char UCHAR
8 bits unsigned
Definition: stepRocker.h:31
void TMC43xxSetBits(UCHAR Axis, UCHAR Address, UINT BitMask)
Set bits in a TMC4361 register.
Definition: TMC4361.c:137
int ConvertVelocityUserToInternal(int UserVelocity)
Convert from pps to internal unit.
Definition: TMC4361.c:349
int ConvertAccelerationInternalToUser(int InternalAcceleration)
Convert from internal unit to pps/s.
Definition: TMC4361.c:394
int ConvertInternalToInternal(int Internal)
Dummy function used when unit conversion is switched off.
Definition: TMC4361.c:408