|
@ -85,7 +85,7 @@ void TMC4361A::readWriteCover(uint8_t *data, size_t length) { |
|
|
if (length > 4) writeDatagram(TMC4361A_COVER_HIGH_WR, bytes[7], bytes[6], bytes[5], bytes[4]); |
|
|
if (length > 4) writeDatagram(TMC4361A_COVER_HIGH_WR, bytes[7], bytes[6], bytes[5], bytes[4]); |
|
|
writeDatagram(TMC4361A_COVER_LOW_WR, bytes[3], bytes[2], bytes[1], bytes[0]); |
|
|
writeDatagram(TMC4361A_COVER_LOW_WR, bytes[3], bytes[2], bytes[1], bytes[0]); |
|
|
|
|
|
|
|
|
zchip_clock_early_delayus(10 * 1000); |
|
|
|
|
|
|
|
|
zos_delay(10); |
|
|
|
|
|
|
|
|
// Read the reply
|
|
|
// Read the reply
|
|
|
if (length > 4) { |
|
|
if (length > 4) { |
|
@ -118,9 +118,9 @@ TMC4361A::TMC4361A(/* args */) { |
|
|
} |
|
|
} |
|
|
/**
|
|
|
/**
|
|
|
* @brief |
|
|
* @brief |
|
|
* 褰撹皟鐢═MC-API涓�殑tmc4361A_reset/restore鏃跺€欙紝TMC-API涓�殑鏂规硶浼氬垵濮嬪寲鏁翠釜鑺�墖鐨勫瘎瀛樺櫒 |
|
|
|
|
|
* 褰撳瘎瀛樺櫒鍒濆�鍖栧畬鎴愪箣鍚庯紝浼氳皟鐢ㄨ繖涓�柟娉曘€? |
|
|
|
|
|
* 鎴戜滑鍙�互鍦ㄨ繖涓�柟娉曚腑锛屽�鑺�墖鐨勯儴鍒嗗瘎瀛樺櫒杩涜�鍒濆�鍖栥€? |
|
|
|
|
|
|
|
|
* 当调用TMC-API中的tmc4361A_reset/restore时候,TMC-API中的方法会初始化整个芯片的寄存器 |
|
|
|
|
|
* 当寄存器初始化完成之后,会调用这个方法?? |
|
|
|
|
|
* 我们可以在这个方法中,对芯片的部分寄存器进行初始化?? |
|
|
* @param state |
|
|
* @param state |
|
|
*/ |
|
|
*/ |
|
|
void TMC4361A::tmc4361AConfigCallback(ConfigState state) {} |
|
|
void TMC4361A::tmc4361AConfigCallback(ConfigState state) {} |
|
@ -131,14 +131,14 @@ void TMC4361A::writeSubRegister(uint8_t address, uint32_t mask, uint32_t shift, |
|
|
void TMC4361A::setAcceleration(float accelerationpps2) { |
|
|
void TMC4361A::setAcceleration(float accelerationpps2) { |
|
|
/**
|
|
|
/**
|
|
|
* @brief |
|
|
* @brief |
|
|
* TMC4361A_AMAX:鏈変袱绉嶆ā寮忥紝杩欓噷浣跨敤鐨勬槸棰戠巼妯″紡 |
|
|
|
|
|
|
|
|
* TMC4361A_AMAX:有两种模式,这里使用的是频率模式 |
|
|
* |
|
|
* |
|
|
* Frequency mode: [pulses per sec2] |
|
|
* Frequency mode: [pulses per sec2] |
|
|
|
|
|
|
|
|
* 22 digits and 2 decimal places: 250 mpps^2 鈮? AMAX 鈮? 4 Mpps^2 |
|
|
|
|
|
* Direct mode: [鈭唙 per clk cycle] |
|
|
|
|
|
* a[鈭唙 per clk_cycle]= AMAX / 2^37 |
|
|
|
|
|
* AMAX [pps2] = AMAX / 237 鈥? fCLK^2 |
|
|
|
|
|
|
|
|
* 22 digits and 2 decimal places: 250 mpps^2 ?? AMAX ?? 4 Mpps^2 |
|
|
|
|
|
* Direct mode: [?v per clk cycle] |
|
|
|
|
|
* a[?v per clk_cycle]= AMAX / 2^37 |
|
|
|
|
|
* AMAX [pps2] = AMAX / 237 ?? fCLK^2 |
|
|
*/ |
|
|
*/ |
|
|
|
|
|
|
|
|
int32_t acc = (int32_t)accelerationpps2; |
|
|
int32_t acc = (int32_t)accelerationpps2; |
|
@ -147,13 +147,13 @@ void TMC4361A::setAcceleration(float accelerationpps2) { |
|
|
void TMC4361A::setDeceleration(float accelerationpps2) { |
|
|
void TMC4361A::setDeceleration(float accelerationpps2) { |
|
|
/**
|
|
|
/**
|
|
|
* @brief |
|
|
* @brief |
|
|
* TMC4361A_DMAX:鏈変袱绉嶆ā寮忥紝杩欓噷浣跨敤鐨勬槸棰戠巼妯″紡 |
|
|
|
|
|
|
|
|
* TMC4361A_DMAX:有两种模式,这里使用的是频率模式 |
|
|
* |
|
|
* |
|
|
* Frequency mode: [pulses per sec2] |
|
|
* Frequency mode: [pulses per sec2] |
|
|
* 22 digits and 2 decimal places: 250 mpps^2 鈮? AMAX 鈮? 4 Mpps^2 |
|
|
|
|
|
* Direct mode: [鈭唙 per clk cycle] |
|
|
|
|
|
* a[鈭唙 per clk_cycle]= AMAX / 2^37 |
|
|
|
|
|
* AMAX [pps2] = AMAX / 237 鈥? fCLK^2 |
|
|
|
|
|
|
|
|
* 22 digits and 2 decimal places: 250 mpps^2 ?? AMAX ?? 4 Mpps^2 |
|
|
|
|
|
* Direct mode: [?v per clk cycle] |
|
|
|
|
|
* a[?v per clk_cycle]= AMAX / 2^37 |
|
|
|
|
|
* AMAX [pps2] = AMAX / 237 ?? fCLK^2 |
|
|
*/ |
|
|
*/ |
|
|
|
|
|
|
|
|
int32_t acc = (int32_t)accelerationpps2; |
|
|
int32_t acc = (int32_t)accelerationpps2; |
|
@ -190,7 +190,7 @@ void TMC4361A::initialize(cfg_t *cfg) { |
|
|
zchip_clock_early_delayus(300 * 1000); |
|
|
zchip_clock_early_delayus(300 * 1000); |
|
|
zchip_clock_early_delayus(300 * 1000); |
|
|
zchip_clock_early_delayus(300 * 1000); |
|
|
|
|
|
|
|
|
driverIC_setIHOLD_IRUN(1, 3, 0); // 娉ㄦ剰瑕佸厛璁剧疆IHOLD鍐嶈�缃甀RUN,鍚﹀垯鐢垫満璺戜笉璧锋潵
|
|
|
|
|
|
|
|
|
driverIC_setIHOLD_IRUN(1, 3, 0); // 注意要先设置IHOLD再设置IRUN,否则电机跑不起来
|
|
|
} |
|
|
} |
|
|
uint8_t TMC4361A::reset() { |
|
|
uint8_t TMC4361A::reset() { |
|
|
// Pulse the low-active hardware reset pin
|
|
|
// Pulse the low-active hardware reset pin
|
|
@ -200,7 +200,7 @@ uint8_t TMC4361A::reset() { |
|
|
SET_PIN(m_resetPin, true); |
|
|
SET_PIN(m_resetPin, true); |
|
|
|
|
|
|
|
|
/**
|
|
|
/**
|
|
|
* @brief 閲嶇疆鑺�墖闀滃儚瀵勫瓨鍣? |
|
|
|
|
|
|
|
|
* @brief 重置芯片镜像寄存?? |
|
|
* |
|
|
* |
|
|
*/ |
|
|
*/ |
|
|
for (uint32_t add = 0; add < TMC4361A_REGISTER_COUNT; add++) { |
|
|
for (uint32_t add = 0; add < TMC4361A_REGISTER_COUNT; add++) { |
|
|