Browse Source

update

master
zhaohe 1 year ago
parent
commit
368c06ad0f
  1. 2
      sdk
  2. 4
      usrc/public_service/gservice.hpp
  3. 58
      usrc/subboards/subboard10_hbot/pri_board.h
  4. 123
      usrc/subboards/subboard10_hbot/subboard10_hbot.cpp
  5. 25
      usrc/subboards/subboard10_hbot/subboard10_hbot.hpp
  6. 41
      usrc/subboards/subboard10_hbot/subboard10_hbot_board.c
  7. 12
      usrc/subboards/subboard10_hbot/subboard10_hbot_board.h
  8. 2
      usrc/subboards/subboard40_and_50_temperature_ctrl/pri_board.h

2
sdk

@ -1 +1 @@
Subproject commit 85d2a97eb11c755dc0ad6098e6d50e96a0b658c3
Subproject commit f312693388143678d5e4949f42310a9141acf6fd

4
usrc/public_service/gservice.hpp

@ -1,8 +1,8 @@
#include <stddef.h>
#include <stdio.h>
#include "sdk/components/zcancmder/zcan_protocol_parser.hpp"
#include "sdk/chip/chip.hpp"
#include "sdk/components/zcancmder/zcan_protocol_parser.hpp"
#include "sdk/components/zcancmder/zcanreceiver.hpp"
#include "sdk/os/zos.hpp"
@ -19,6 +19,8 @@ class GService {
ZCanReceiver* getZCanReceiver() { return &zcanreceiver; }
ZCanProtocolParser* getZCanProtocolParser() { return &zcan_protocol_parser; }
void registerModule(ZIModule* module) { zcan_protocol_parser.registerModule(module); }
};
} // namespace iflytop

58
usrc/subboards/subboard10_hbot/pri_board.h

@ -0,0 +1,58 @@
#pragma once
/***********************************************************************************************************************
* IO *
***********************************************************************************************************************/
#define EXT_INPUT_IO0 PD4, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true
#define EXT_INPUT_IO1 PD5, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true
#define EXT_INPUT_IO2 PD6, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true
#define EXT_INPUT_IO3 PD7, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true
#define EXT_INPUT_IO4 PinNull, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true
#define EXT_INPUT_IO5 PinNull, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true
#define EXT_INPUT_IO6 PinNull, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true
#define EXT_INPUT_IO7 PinNull, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true
#define EXT_INPUT_IO8 PinNull, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true
#define EXT_INPUT_IO9 PinNull, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true
#define EXT_OUTPUT_IO0 PinNull, ZGPIO::kMode_nopull, false /*mirror*/, true /*init val*/
#define EXT_OUTPUT_IO1 PinNull, ZGPIO::kMode_nopull, false /*mirror*/, true /*init val*/
#define EXT_OUTPUT_IO2 PinNull, ZGPIO::kMode_nopull, false /*mirror*/, true /*init val*/
#define EXT_OUTPUT_IO3 PinNull, ZGPIO::kMode_nopull, false /*mirror*/, true /*init val*/
#define EXT_OUTPUT_IO4 PinNull, ZGPIO::kMode_nopull, false /*mirror*/, true /*init val*/
#define EXT_OUTPUT_IO5 PinNull, ZGPIO::kMode_nopull, false /*mirror*/, true /*init val*/
#define EXT_OUTPUT_IO6 PinNull, ZGPIO::kMode_nopull, false /*mirror*/, true /*init val*/
#define EXT_OUTPUT_IO7 PinNull, ZGPIO::kMode_nopull, false /*mirror*/, true /*init val*/
#define EXT_OUTPUT_IO8 PinNull, ZGPIO::kMode_nopull, false /*mirror*/, true /*init val*/
#define EXT_OUTPUT_IO9 PinNull, ZGPIO::kMode_nopull, false /*mirror*/, true /*init val*/
#define TMC_MOTOR_SPI hspi1
/***********************************************************************************************************************
* *
***********************************************************************************************************************/
// MOTOR1
#define TMC_MOTOR1_CHANNEL 1
#define TMC_MOTOR1_SPI_SELECT1_IO PA4
#define TMC_MOTOR1_nFREEZE_IO PC2
#define TMC_MOTOR1_nRESET_IO PB3
#define TMC_MOTOR1_SUB_IC_ENN_IO PC3
#define TMC_MOTOR1_ENN_IO // unused
// MOTOR2
#define TMC_MOTOR2_CHANNEL 2
#define TMC_MOTOR2_SPI_SELECT1_IO PA8
#define TMC_MOTOR2_nFREEZE_IO PC6
#define TMC_MOTOR2_nRESET_IO PB2
#define TMC_MOTOR2_SUB_IC_ENN_IO PC7
#define TMC_MOTOR2_ENN_IO // unused
#define ARM_X_ZERO PD0
#define ARM_X_LIMIT PD1
#define ARM_Y_ZERO PD2
#define ARM_Y_LIMIT PD3
#define ARM_SENSOR5_GPIO PD4
#define ARM_SENSOR6_GPIO PD5
#define ARM_SENSOR7_GPIO PD6
#define ARM_SENSOR8_GPIO PD7

123
usrc/subboards/subboard10_hbot/subboard10_hbot.cpp

@ -0,0 +1,123 @@
#include "subboard10_hbot.hpp"
extern "C" {
#include "subboard10_hbot_board.h"
}
#include "pri_board.h"
#include "public_service/instance_init.hpp"
#include "public_service/public_service.hpp"
#include "sdk/components/mini_servo_motor/feite_servo_motor.hpp"
#include "sdk/components/mini_servo_motor/mini_servo_motor_ctrl_module.hpp"
#include "sdk/components/sensors/m3078/m3078_code_scaner.hpp"
#include "sdk/components/step_motor_ctrl_module/step_motor_ctrl_module.hpp"
#include "sdk/components/tmc/ic/ztmc4361A.hpp"
#include "sdk\components\pipette_module\pipette_ctrl_module_v2.hpp"
#include "sdk\components\xy_robot_ctrl_module\xy_robot_ctrl_module.hpp"
#define TAG "Subboard10Hbot"
using namespace iflytop;
/***********************************************************************************************************************
* IMPL *
***********************************************************************************************************************/
void Subboard10Hbot::initialize() {
IO_INIT();
GService::inst()->getZCanProtocolParser()->registerModule(this);
#if 1
/***********************************************************************************************************************
* ID1 *
***********************************************************************************************************************/
static XYRobotCtrlModule xyRobotCtrlModule;
static TMC4361A motora; // 1
static TMC4361A motorb; // 2
{
TMC4361A::cfg_t cfg = {
.spi = &TMC_MOTOR_SPI, //
.csgpio = TMC_MOTOR1_SPI_SELECT1_IO, //
.resetPin = TMC_MOTOR1_nRESET_IO, //
.fREEZEPin = TMC_MOTOR1_nFREEZE_IO, //
.ennPin = PinNull, //
.driverIC_ennPin = TMC_MOTOR1_SUB_IC_ENN_IO, //
.driverIC_resetPin = PinNull, //
};
motora.initialize(&cfg);
motora.setMotorShaft(false);
motora.setGlobalScale(32);
ZLOGI(TAG, "motora initialize TMC4361A:%x DriverIC:%x", motora.readICVersion(), motora.driverIC_readICVersion());
}
{
TMC4361A::cfg_t cfg = {
.spi = &TMC_MOTOR_SPI, //
.csgpio = TMC_MOTOR2_SPI_SELECT1_IO, //
.resetPin = TMC_MOTOR2_nRESET_IO, //
.fREEZEPin = TMC_MOTOR2_nFREEZE_IO, //
.ennPin = PinNull, //
.driverIC_ennPin = TMC_MOTOR2_SUB_IC_ENN_IO, //
.driverIC_resetPin = PinNull, //
};
motorb.initialize(&cfg);
motorb.setMotorShaft(false);
motorb.setGlobalScale(32);
ZLOGI(TAG, "motorb initialize TMC4361A:%x DriverIC:%x", motorb.readICVersion(), motorb.driverIC_readICVersion());
}
motora.setAcceleration(300);
motora.setDeceleration(300);
motora.setIHOLD_IRUN(0, 4, 10);
motorb.setAcceleration(300);
motorb.setDeceleration(300);
motorb.setIHOLD_IRUN(0, 4, 10);
motora.rotate(0);
motorb.rotate(0);
/*******************************************************************************
* zcanXYRobotCtrlModule *
*******************************************************************************/
static ZGPIO input[4];
input[0].initAsInput(ARM_X_ZERO, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true);
input[1].initAsInput(ARM_Y_ZERO, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true);
input[2].initAsInput(ARM_X_LIMIT, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true);
input[3].initAsInput(ARM_Y_LIMIT, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true);
static XYRobotCtrlModule::flash_config_t xy_defaultcfg;
XYRobotCtrlModule::create_default_cfg(xy_defaultcfg);
xy_defaultcfg.configInited = true;
xy_defaultcfg.robot_type = 1;
xy_defaultcfg.robot_type = XYRobotCtrlModule::khbot;
xy_defaultcfg.x_shaft = 0;
xy_defaultcfg.y_shaft = 1;
xy_defaultcfg.ihold = 1;
xy_defaultcfg.irun = 16;
xy_defaultcfg.iholddelay = 100;
xy_defaultcfg.distance_scale = 7344;
xy_defaultcfg.shift_x = 0;
xy_defaultcfg.shift_y = 0;
// limit
xy_defaultcfg.acc = 800;
xy_defaultcfg.dec = 800;
xy_defaultcfg.breakdec = 1600;
xy_defaultcfg.maxspeed = 600;
xy_defaultcfg.min_x = 0;
xy_defaultcfg.max_x = 0;
xy_defaultcfg.min_y = 0;
xy_defaultcfg.max_y = 0;
xy_defaultcfg.run_to_zero_max_d = 10000 * 100;
xy_defaultcfg.run_to_zero_speed = 80;
xy_defaultcfg.run_to_zero_dec = 1600;
xy_defaultcfg.look_zero_edge_max_d = 10000 * 3;
xy_defaultcfg.look_zero_edge_speed = 10;
xy_defaultcfg.look_zero_edge_dec = 1600;
xyRobotCtrlModule.initialize(getmoduleId(1), &motora, &motorb, &input[0], 4, xy_defaultcfg, nullptr);
xyRobotCtrlModule.dumpcfg();
GService::inst()->registerModule(&xyRobotCtrlModule);
#endif
}

25
usrc/subboards/subboard10_hbot/subboard10_hbot.hpp

@ -0,0 +1,25 @@
#include <stddef.h>
#include <stdio.h>
//
#include "configs/device_id_mgr.hpp"
#include "sdk/chip/chip.hpp"
#include "sdk/os/zos.hpp"
//
#include "sdk\components\step_motor_ctrl_module\step_motor_ctrl_module.hpp"
#include "sdk\components\tmc\ic\ztmc5130.hpp"
#include "public_service/public_service.hpp"
namespace iflytop {
class Subboard10Hbot : public ExtBoardImpl {
public:
static Subboard10Hbot *ins() {
static Subboard10Hbot instance;
return &instance;
}
void initialize();
};
} // namespace iflytop

41
usrc/subboards/subboard10_hbot/subboard10_hbot_board.c

@ -0,0 +1,41 @@
#include "main.h"
#include "public_service/public_service.h"
/* SPI1 init function */
static void MX_SPI1_Init(void) {
__HAL_RCC_SPI1_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
hspi1.Instance = SPI1;
hspi1.Init.Mode = SPI_MODE_MASTER;
hspi1.Init.Direction = SPI_DIRECTION_2LINES;
hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
hspi1.Init.NSS = SPI_NSS_SOFT;
hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_32;
hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
hspi1.Init.CRCPolynomial = 10;
if (HAL_SPI_Init(&hspi1) != HAL_OK) {
Error_Handler();
}
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF5_SPI1;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
hspi1_enable = true;
}
/**
* @brief
*/
void subboard10_hbot_board_init() {
common_hardware_init();
MX_SPI1_Init();
}

12
usrc/subboards/subboard10_hbot/subboard10_hbot_board.h

@ -0,0 +1,12 @@
#pragma once
#include "main.h"
#ifdef __cplusplus
extern "C" {
#endif
void subboard10_hbot_board_init();
#ifdef __cplusplus
}
#endif

2
usrc/subboards/subboard40_and_50_temperature_ctrl/pri_board.h

@ -21,7 +21,7 @@
#define EXT_INPUT_IO8 PinNull, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true
#define EXT_INPUT_IO9 PinNull, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true
#define EXT_OUTPUT_IO0 PD0, ZGPIO::kMode_nopull, false /*mirror*/, false /*init val*/
#define EXT_OUTPUT_IO0 PD0, ZGPIO::kMode_nopull, false /*mirror*/, true /*init val*/
#define EXT_OUTPUT_IO1 PinNull, ZGPIO::kMode_nopull, false /*mirror*/, true /*init val*/
#define EXT_OUTPUT_IO2 PinNull, ZGPIO::kMode_nopull, false /*mirror*/, true /*init val*/
#define EXT_OUTPUT_IO3 PinNull, ZGPIO::kMode_nopull, false /*mirror*/, true /*init val*/

Loading…
Cancel
Save