TMCStepper
Library supporting Trinamic Stepper Drivers for Arduino platforms
Loading...
Searching...
No Matches
TMC2208Stepper.h
Go to the documentation of this file.
1
7#pragma once
8
9#define INIT2208_REGISTER(REG) TMC2208_n::REG##_t REG##_register{}
10
11class TMC2208Stepper : public TMCStepper {
12 public:
13 TMC2208Stepper(Stream * SerialPort, float RS, uint8_t addr, uint16_t mul_pin1, uint16_t mul_pin2);
14 TMC2208Stepper(Stream * SerialPort, float RS) :
15 TMC2208Stepper(SerialPort, RS, TMC2208_SLAVE_ADDR)
16 {}
17 #if TMCSTEPPER_SW_SERIAL
18 TMC2208Stepper(uint16_t SW_RX_pin, uint16_t SW_TX_pin, float RS) :
19 TMC2208Stepper(SW_RX_pin, SW_TX_pin, RS, TMC2208_SLAVE_ADDR)
20 {}
21
22 __attribute__((deprecated("Boolean argument has been deprecated and does nothing")))
23 TMC2208Stepper(uint16_t SW_RX_pin, uint16_t SW_TX_pin, float RS, bool) :
24 TMC2208Stepper(SW_RX_pin, SW_TX_pin, RS, TMC2208_SLAVE_ADDR)
25 {};
26 #else
27 TMC2208Stepper(uint16_t, uint16_t, float) = delete; // Your platform does not currently support Software Serial
28 #endif
29 void defaults();
30 void push();
31 void begin();
32 #if TMCSTEPPER_SW_SERIAL
33 void beginSerial(uint32_t baudrate) __attribute__((weak));
34 #else
35 void beginSerial(uint32_t) = delete; // Your platform does not currently support Software Serial
36 #endif
37 bool isEnabled();
38
39 // RW: GCONF
40 void GCONF(uint32_t input);
41 void I_scale_analog(bool B);
42 void internal_Rsense(bool B);
43 void en_spreadCycle(bool B);
44 void shaft(bool B);
45 void index_otpw(bool B);
46 void index_step(bool B);
47 void pdn_disable(bool B);
48 void mstep_reg_select(bool B);
49 void multistep_filt(bool B);
50 uint32_t GCONF();
51 bool I_scale_analog();
52 bool internal_Rsense();
53 bool en_spreadCycle();
54 bool shaft();
55 bool index_otpw();
56 bool index_step();
57 bool pdn_disable();
58 bool mstep_reg_select();
59 bool multistep_filt();
60
61 // R: IFCNT
62 uint8_t IFCNT();
63
64 // W: SLAVECONF
65 void SLAVECONF(uint16_t input);
66 uint16_t SLAVECONF();
67 void senddelay(uint8_t B);
68 uint8_t senddelay();
69
70 // W: OTP_PROG
71 void OTP_PROG(uint16_t input);
72
73 // R: OTP_READ
74 uint32_t OTP_READ();
75
76 // R: IOIN
77 uint32_t IOIN();
78 bool enn();
79 bool ms1();
80 bool ms2();
81 bool diag();
82 bool pdn_uart();
83 bool step();
84 bool sel_a();
85 bool dir();
86 uint8_t version();
87
88 // RW: FACTORY_CONF
89 void FACTORY_CONF(uint16_t input);
90 uint16_t FACTORY_CONF();
91 void fclktrim(uint8_t B);
92 void ottrim(uint8_t B);
93 uint8_t fclktrim();
94 uint8_t ottrim();
95
96 // W: VACTUAL
97 void VACTUAL(uint32_t input);
98 uint32_t VACTUAL();
99
100 // RW: CHOPCONF
101 void CHOPCONF(uint32_t input);
102 void toff(uint8_t B);
103 void hstrt(uint8_t B);
104 void hend(uint8_t B);
105 void tbl(uint8_t B);
106 void vsense(bool B);
107 void mres(uint8_t B);
108 void intpol(bool B);
109 void dedge(bool B);
110 void diss2g(bool B);
111 void diss2vs(bool B);
112 uint32_t CHOPCONF();
113 uint8_t toff();
114 uint8_t hstrt();
115 uint8_t hend();
116 uint8_t tbl();
117 bool vsense();
118 uint8_t mres();
119 bool intpol();
120 bool dedge();
121 bool diss2g();
122 bool diss2vs();
123
124 // R: DRV_STATUS
125 uint32_t DRV_STATUS();
126 bool otpw();
127 bool ot();
128 bool s2ga();
129 bool s2gb();
130 bool s2vsa();
131 bool s2vsb();
132 bool ola();
133 bool olb();
134 bool t120();
135 bool t143();
136 bool t150();
137 bool t157();
138 uint16_t cs_actual();
139 bool stealth();
140 bool stst();
141
142 // RW: PWMCONF
143 void PWMCONF(uint32_t input);
144 void pwm_ofs(uint8_t B);
145 void pwm_grad(uint8_t B);
146 void pwm_freq(uint8_t B);
147 void pwm_autoscale(bool B);
148 void pwm_autograd(bool B);
149 void freewheel(uint8_t B);
150 void pwm_reg(uint8_t B);
151 void pwm_lim(uint8_t B);
152 uint32_t PWMCONF();
153 uint8_t pwm_ofs();
154 uint8_t pwm_grad();
155 uint8_t pwm_freq();
156 bool pwm_autoscale();
157 bool pwm_autograd();
158 uint8_t freewheel();
159 uint8_t pwm_reg();
160 uint8_t pwm_lim();
161
162 // R: PWM_SCALE
163 uint32_t PWM_SCALE();
164 uint8_t pwm_scale_sum();
165 int16_t pwm_scale_auto();
166
167 // R: PWM_AUTO (0x72)
168 uint32_t PWM_AUTO();
169 uint8_t pwm_ofs_auto();
170 uint8_t pwm_grad_auto();
171
172 // R: MSCURACT
173 uint32_t MSCURACT();
174 int16_t cur_a();
175 int16_t cur_b();
176
177 uint16_t bytesWritten = 0;
178 float Rsense = 0.11;
179 bool CRCerror = false;
180 protected:
187
188 struct IFCNT_t { constexpr static uint8_t address = 0x02; };
189 struct OTP_PROG_t { constexpr static uint8_t address = 0x04; };
190 struct OTP_READ_t { constexpr static uint8_t address = 0x05; };
191
192 TMC2208Stepper(Stream * SerialPort, float RS, uint8_t addr);
193 #if TMCSTEPPER_SW_SERIAL
194 TMC2208Stepper(uint16_t SW_RX_pin, uint16_t SW_TX_pin, float RS, uint8_t addr);
195 #endif
196
197 Stream * HWSerial = nullptr;
198 #if TMCSTEPPER_SW_SERIAL
199 SoftwareSerial * SWSerial = nullptr;
200 #if HAS_HALF_DUPLEX_MODE
201 const uint16_t RXTX_pin = 0; // Half duplex
202 #endif
203 #endif
204
205 SSwitch *sswitch = nullptr;
206
210 int16_t serial_read();
211 uint8_t serial_write(const uint8_t data);
214 void write(uint8_t, uint32_t);
215 uint32_t read(uint8_t);
216 const uint8_t slave_address;
217 uint8_t calcCRC(uint8_t datagram[], uint8_t len);
218 static constexpr uint8_t TMC2208_SYNC = 0x05,
220 static constexpr uint8_t replyDelay = 2;
221 static constexpr uint8_t abort_window = 8;
222 static constexpr uint8_t max_retries = 2;
223
224 uint64_t _sendDatagram(uint8_t [], const uint8_t, uint16_t);
225};
__attribute__((weak)) void TMC2130Stepper
static constexpr uint8_t TMC2208_SYNC
bool mstep_reg_select()
Definition GCONF.cpp:110
uint8_t pwm_lim()
Definition PWMCONF.cpp:95
uint16_t bytesWritten
bool pwm_autoscale()
Definition PWMCONF.cpp:91
void write(uint8_t, uint32_t)
TMC2208Stepper(Stream *SerialPort, float RS)
static constexpr uint8_t replyDelay
void GCONF(uint32_t input)
Definition GCONF.cpp:88
static constexpr uint8_t abort_window
uint8_t pwm_grad_auto()
int16_t pwm_scale_auto()
uint32_t DRV_STATUS()
uint8_t hend()
Definition CHOPCONF.cpp:88
uint32_t read(uint8_t)
uint64_t _sendDatagram(uint8_t[], const uint8_t, uint16_t)
bool I_scale_analog()
Definition GCONF.cpp:103
bool en_spreadCycle()
Definition GCONF.cpp:105
bool diag()
Definition IOIN.cpp:48
uint8_t calcCRC(uint8_t datagram[], uint8_t len)
TMC2208Stepper(uint16_t, uint16_t, float)=delete
uint8_t mres()
Definition CHOPCONF.cpp:91
bool sel_a()
Definition IOIN.cpp:51
INIT_REGISTER(FACTORY_CONF)
bool ms2()
Definition IOIN.cpp:47
void postWriteCommunication()
uint32_t IOIN()
Definition IOIN.cpp:44
uint32_t GCONF()
Definition GCONF.cpp:85
TMC2208Stepper(Stream *SerialPort, float RS, uint8_t addr, uint16_t mul_pin1, uint16_t mul_pin2)
uint8_t pwm_ofs()
Definition PWMCONF.cpp:88
void SLAVECONF(uint16_t input)
Definition SLAVECONF.cpp:17
uint8_t pwm_freq()
Definition PWMCONF.cpp:90
uint16_t FACTORY_CONF()
void PWMCONF(uint32_t input)
Definition PWMCONF.cpp:74
void beginSerial(uint32_t)=delete
void preWriteCommunication()
INIT_REGISTER(SLAVECONF)
void OTP_PROG(uint16_t input)
uint16_t SLAVECONF()
Definition SLAVECONF.cpp:16
uint32_t PWMCONF()
Definition PWMCONF.cpp:71
bool internal_Rsense()
Definition GCONF.cpp:104
int16_t serial_read()
uint8_t tbl()
Definition CHOPCONF.cpp:89
bool index_otpw()
Definition GCONF.cpp:107
uint8_t pwm_grad()
Definition PWMCONF.cpp:89
void preReadCommunication()
INIT2208_REGISTER(PWMCONF)
void FACTORY_CONF(uint16_t input)
static constexpr uint8_t TMC2208_SLAVE_ADDR
bool pdn_disable()
Definition GCONF.cpp:109
void VACTUAL(uint32_t input)
INIT2208_REGISTER(VACTUAL)
bool index_step()
Definition GCONF.cpp:108
uint32_t CHOPCONF()
Definition CHOPCONF.cpp:70
uint8_t senddelay()
Definition SLAVECONF.cpp:21
uint8_t toff()
Definition CHOPCONF.cpp:86
uint16_t cs_actual()
bool pdn_uart()
Definition IOIN.cpp:49
void postReadCommunication()
bool shaft()
Definition GCONF.cpp:106
const uint8_t slave_address
uint8_t pwm_scale_sum()
INIT2208_REGISTER(CHOPCONF)
static constexpr uint8_t max_retries
bool step()
Definition IOIN.cpp:50
void CHOPCONF(uint32_t input)
Definition CHOPCONF.cpp:71
bool multistep_filt()
Definition GCONF.cpp:111
bool enn()
Definition IOIN.cpp:45
uint8_t serial_write(const uint8_t data)
bool ms1()
Definition IOIN.cpp:46
bool pwm_autograd()
Definition PWMCONF.cpp:92
uint8_t hstrt()
Definition CHOPCONF.cpp:87
uint8_t freewheel()
Definition PWMCONF.cpp:93
INIT2208_REGISTER(GCONF)
bool dir()
Definition IOIN.cpp:52
uint8_t pwm_reg()
Definition PWMCONF.cpp:94
uint8_t version()
Definition IOIN.cpp:53
TMCStepper(float RS)
static constexpr uint8_t address
static constexpr uint8_t address
static constexpr uint8_t address