|
|
@ -7,22 +7,78 @@ |
|
|
|
#include "project.hpp"
|
|
|
|
//
|
|
|
|
#include "sdk/hal/zhal.hpp"
|
|
|
|
#include "sdk\components\tmc\ic\ztmc4361A.hpp"
|
|
|
|
|
|
|
|
#define TAG "main"
|
|
|
|
namespace iflytop { |
|
|
|
Main gmain; |
|
|
|
}; |
|
|
|
|
|
|
|
using namespace iflytop; |
|
|
|
void Main::run() { |
|
|
|
iflytop_no_os_cfg_t cfg = { |
|
|
|
iflytop_no_os_cfg_t oscfg = { |
|
|
|
.delayhtim = &DELAY_US_TIMER, |
|
|
|
.debuguart = &DEBUG_UART, |
|
|
|
}; |
|
|
|
iflytop_no_os_init(&cfg); |
|
|
|
printf("Hello World!\r\n"); |
|
|
|
iflytop_no_os_init(&oscfg); |
|
|
|
|
|
|
|
ZLOGI(TAG, "robotic_core_xy:%s", VERSION); |
|
|
|
|
|
|
|
DEBUG_LIGHT_GPIO.initAsOutput(true); |
|
|
|
ZHAL_CORE_REG(200, { DEBUG_LIGHT_GPIO.toggleState(); }); |
|
|
|
|
|
|
|
// while (true) {
|
|
|
|
// chip_delay_us(1000 * 1000);
|
|
|
|
// ZLOGI(TAG, ".....");
|
|
|
|
// }
|
|
|
|
TMC4361A motora; |
|
|
|
TMC4361A motorb; |
|
|
|
TMC_MOTOR1_SPI_SELECT1_IO.initAsOutput(true); |
|
|
|
TMC_MOTOR1_nFREEZE_IO.initAsOutput(true); |
|
|
|
TMC_MOTOR1_nRESET_IO.initAsOutput(true); |
|
|
|
TMC_MOTOR1_SUB_IC_ENN_IO.initAsOutput(true); |
|
|
|
TMC_MOTOR2_SPI_SELECT1_IO.initAsOutput(true); |
|
|
|
TMC_MOTOR2_nFREEZE_IO.initAsOutput(true); |
|
|
|
TMC_MOTOR2_nRESET_IO.initAsOutput(true); |
|
|
|
TMC_MOTOR2_SUB_IC_ENN_IO.initAsOutput(true); |
|
|
|
{ |
|
|
|
TMC4361A::cfg_t motora_cfg = {.spi = &TMC_MOTOR_SPI, |
|
|
|
.csgpio = &TMC_MOTOR1_SPI_SELECT1_IO, |
|
|
|
.resetPin = &TMC_MOTOR1_nRESET_IO, |
|
|
|
.fREEZEPin = &TMC_MOTOR1_nFREEZE_IO, |
|
|
|
.ennPin = NULL, |
|
|
|
.driverIC_ennPin = &TMC_MOTOR1_SUB_IC_ENN_IO, |
|
|
|
.driverIC_resetPin = NULL}; |
|
|
|
|
|
|
|
motora.initialize(&motora_cfg); |
|
|
|
int32_t ic4361Version = motora.readICVersion(); |
|
|
|
int32_t ic2160Version = motora.readSubICVersion(); |
|
|
|
ZLOGI(TAG, "motora:TMC4361Version:%lx TMC2160VERSION:%lx", ic4361Version, ic2160Version); |
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
TMC4361A::cfg_t motorb_cfg = {.spi = &TMC_MOTOR_SPI, |
|
|
|
.csgpio = &TMC_MOTOR2_SPI_SELECT1_IO, |
|
|
|
.resetPin = &TMC_MOTOR2_nRESET_IO, |
|
|
|
.fREEZEPin = &TMC_MOTOR2_nFREEZE_IO, |
|
|
|
.ennPin = NULL, |
|
|
|
.driverIC_ennPin = &TMC_MOTOR2_SUB_IC_ENN_IO, |
|
|
|
.driverIC_resetPin = NULL}; |
|
|
|
|
|
|
|
motorb.initialize(&motorb_cfg); |
|
|
|
int32_t ic4361Version = motorb.readICVersion(); |
|
|
|
int32_t ic2160Version = motorb.readSubICVersion(); |
|
|
|
ZLOGI(TAG, "motorb:TMC4361Version:%lx TMC2160VERSION:%lx", ic4361Version, ic2160Version); |
|
|
|
} |
|
|
|
|
|
|
|
motora.setIHOLD_IRUN(1, 28, 0); // 小臂
|
|
|
|
motora.setMotorShaft(0); |
|
|
|
|
|
|
|
motorb.setIHOLD_IRUN(1, 28, 0); // 小臂
|
|
|
|
motorb.setMotorShaft(0); |
|
|
|
|
|
|
|
ZHAL_CORE_REG(300, { DEBUG_LIGHT_GPIO.toggleState(); }); |
|
|
|
motora.rotate(1200000); |
|
|
|
motorb.rotate(1200000); |
|
|
|
|
|
|
|
while (1) { |
|
|
|
ZHALCORE::getInstance()->loop(); |
|
|
|