Browse Source

update

master
zhaohe 1 year ago
parent
commit
9240d75d34
  1. 12
      usrc/public_service/instance_init.hpp
  2. 25
      usrc/subboards/subboard20_plate_clamp_case/pri_board.h
  3. 53
      usrc/subboards/subboard20_plate_clamp_case/subboard20_plate_clamp_case.cpp
  4. 24
      usrc/subboards/subboard30_shake_module/pri_board.h
  5. 20
      usrc/subboards/subboard30_shake_module/subboard30_shake_module.cpp
  6. 28
      usrc/subboards/subboard60_inlet_and_outlet_module/pri_board.h
  7. 24
      usrc/subboards/subboard60_inlet_and_outlet_module/subboard60_inlet_and_outlet_module.cpp
  8. 23
      usrc/subboards/subboard70_incubation_turntable/pri_board.h
  9. 18
      usrc/subboards/subboard70_incubation_turntable/subboard70_incubation_turntable.cpp
  10. 16
      usrc/subboards/subboard80_cliptip/pri_board.h
  11. 17
      usrc/subboards/subboard80_cliptip/subboard80_cliptip.cpp
  12. 95
      usrc/subboards/subboard90_optical_module/pri_board.h
  13. 64
      usrc/subboards/subboard90_optical_module/subboard90_optical_module.cpp
  14. 45
      usrc/subboards/subboard90_optical_module/subboard90_optical_module.hpp
  15. 73
      usrc/subboards/subboard90_optical_module/subboard90_optical_module_board.c
  16. 12
      usrc/subboards/subboard90_optical_module/subboard90_optical_module_board.h

12
usrc/public_service/instance_init.hpp

@ -89,3 +89,15 @@
\
ZLOGI(TAG, "motor%d readic version %x", subid, motor.readICVersion()); \
}
#define EXT_READ_IO_NUM 10
#define IO_INIT() \
IO[0].initAsInput(EXT_INPUT_IO0, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, EXT_INPUT_IO0_MIRROR); \
IO[1].initAsInput(EXT_INPUT_IO1, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, EXT_INPUT_IO1_MIRROR); \
IO[2].initAsInput(EXT_INPUT_IO2, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, EXT_INPUT_IO2_MIRROR); \
IO[3].initAsInput(EXT_INPUT_IO3, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, EXT_INPUT_IO3_MIRROR); \
IO[5].initAsInput(EXT_INPUT_IO5, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, EXT_INPUT_IO5_MIRROR); \
IO[6].initAsInput(EXT_INPUT_IO6, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, EXT_INPUT_IO6_MIRROR); \
IO[7].initAsInput(EXT_INPUT_IO7, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, EXT_INPUT_IO7_MIRROR); \
IO[8].initAsInput(EXT_INPUT_IO8, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, EXT_INPUT_IO8_MIRROR); \
IO[9].initAsInput(EXT_INPUT_IO9, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, EXT_INPUT_IO9_MIRROR);

25
usrc/subboards/subboard20_plate_clamp_case/pri_board.h

@ -9,12 +9,23 @@
#define EXT_INPUT_IO2 PinNull
#define EXT_INPUT_IO3 PinNull
#define EXT_INPUT_IO4 PinNull
#define EXT_INPUT_IO5 PinNull
#define EXT_INPUT_IO6 PinNull
#define EXT_INPUT_IO7 PinNull
#define EXT_INPUT_IO8 PinNull
#define EXT_INPUT_IO9 PinNull
#define EXT_INPUT_IO0_MIRROR true
#define EXT_INPUT_IO1_MIRROR true
#define EXT_INPUT_IO2_MIRROR true
#define EXT_INPUT_IO3_MIRROR true
#define EXT_INPUT_IO4_MIRROR true
#define EXT_INPUT_IO5_MIRROR true
#define EXT_INPUT_IO6_MIRROR true
#define EXT_INPUT_IO7_MIRROR true
#define EXT_INPUT_IO8_MIRROR true
#define EXT_INPUT_IO9_MIRROR true
#define TMC_MOTOR_SPI hspi1
@ -34,11 +45,11 @@
#define MOTOR1_REFL_MIRROR true
#define MOTOR1_REFR_MIRROR true
#define MOTOR1_MOTOR_SHAFT false //
#define MOTOR1_MOTOR_ONE_CIRCLE_PULSE 80 // 3600 = 93圈, 3600/93 = 38.70967741935484
#define MOTOR1_MOTOR_SHAFT true //
#define MOTOR1_MOTOR_ONE_CIRCLE_PULSE 60 // 3600 = 93圈, 3600/93 = 38.70967741935484
#define MOTOR1_MOTOR_ONE_CIRCLE_PULSE_DENOMINATOR 1 //
#define MOTOR1_STEPMOTOR_IHOLD 1
#define MOTOR1_STEPMOTOR_IRUN 8
#define MOTOR1_STEPMOTOR_IHOLD 3
#define MOTOR1_STEPMOTOR_IRUN 16
#define MOTOR1_STEPMOTOR_IHOLDDELAY 100
#define MOTOR1_STEPMOTOR_IGLOBALSCALER 1
#define MOTOR1_MOTOR_DEFAULT_ACC 300
@ -47,7 +58,7 @@
#define MOTOR1_MIN_D 0
#define MOTOR1_MAX_D 0
#define MOTOR1_MOTOR_RUN_TO_ZERO_SPEED 100
#define MOTOR1_MOTOR_RUN_TO_ZERO_DEC 300
#define MOTOR1_MOTOR_RUN_TO_ZERO_DEC 400
#define MOTOR1_MOTOR_LOOK_ZERO_EDGE_SPEED 50
#define MOTOR1_MOTOR_LOOK_ZERO_EDGE_DEC 600
@ -67,7 +78,7 @@
#define MOTOR2_REFL_MIRROR true
#define MOTOR2_REFR_MIRROR true
#define MOTOR2_MOTOR_SHAFT false //
#define MOTOR2_MOTOR_SHAFT true //
#define MOTOR2_MOTOR_ONE_CIRCLE_PULSE 80 // 3600 = 93圈, 3600/93 = 38.70967741935484
#define MOTOR2_MOTOR_ONE_CIRCLE_PULSE_DENOMINATOR 1 //
#define MOTOR2_STEPMOTOR_IHOLD 1
@ -80,6 +91,6 @@
#define MOTOR2_MIN_D 0
#define MOTOR2_MAX_D 0
#define MOTOR2_MOTOR_RUN_TO_ZERO_SPEED 100
#define MOTOR2_MOTOR_RUN_TO_ZERO_DEC 300
#define MOTOR2_MOTOR_RUN_TO_ZERO_DEC 400
#define MOTOR2_MOTOR_LOOK_ZERO_EDGE_SPEED 50
#define MOTOR2_MOTOR_LOOK_ZERO_EDGE_DEC 600

53
usrc/subboards/subboard20_plate_clamp_case/subboard20_plate_clamp_case.cpp

@ -16,11 +16,10 @@ extern "C" {
using namespace iflytop;
static ZGPIO IO[5];
static ZGPIO IO[EXT_READ_IO_NUM];
Subboard20PlateClampCase::Subboard20PlateClampCase(/* args */) {}
Subboard20PlateClampCase::~Subboard20PlateClampCase() {}
int32_t Subboard20PlateClampCase::getmoduleId(int off) { return zdevice_id_mgr_get_device_id() + off; }
int32_t Subboard20PlateClampCase::getmoduleId(int off) { return zdevice_id_mgr_get_device_id() + off; }
Subboard20PlateClampCase *Subboard20PlateClampCase::ins() {
static Subboard20PlateClampCase instance;
return &instance;
@ -34,33 +33,23 @@ int32_t Subboard20PlateClampCase::getid(int32_t *id) {
}
int32_t Subboard20PlateClampCase::module_xxx_reg(int32_t param_id, bool read, int32_t &val) { return err::kmodule_not_find_reg; }
int32_t Subboard20PlateClampCase::board_read_ext_io(int32_t ioindex, int32_t *val) {
if (ioindex < 0 || ioindex >= ZARRAY_SIZE(IO)) {
return err::kparam_out_of_range;
}
if (ioindex < 0 || ioindex >= ZARRAY_SIZE(IO)) return err::kparam_out_of_range;
*val = IO[ioindex].getState();
return 0;
}
int32_t Subboard20PlateClampCase::board_write_ext_io(int32_t ioindex, int32_t val) { return 0; }
int32_t Subboard20PlateClampCase::board_read_muti_io(int32_t *val) {
for (int i = 0; i < ZARRAY_SIZE(IO); i++) {
*val |= IO[i].getState() << i;
}
return 0;
}
/***********************************************************************************************************************
* IMPL *
***********************************************************************************************************************/
void Subboard20PlateClampCase::initialize() {
IO[0].initAsInput(EXT_INPUT_IO0, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, EXT_INPUT_IO0_MIRROR);
IO[1].initAsInput(EXT_INPUT_IO1, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, EXT_INPUT_IO1_MIRROR);
IO[2].initAsInput(EXT_INPUT_IO2, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, EXT_INPUT_IO2_MIRROR);
IO[3].initAsInput(EXT_INPUT_IO3, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, EXT_INPUT_IO3_MIRROR);
IO[4].initAsInput(EXT_INPUT_IO4, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, EXT_INPUT_IO4_MIRROR);
IO_INIT();
GService::inst()->getZCanProtocolParser()->registerModule(this);
#if 1
/***********************************************************************************************************************
@ -68,39 +57,5 @@ void Subboard20PlateClampCase::initialize() {
***********************************************************************************************************************/
{ TMC5130_MOTOR_INITER(1, 1); }
{ TMC5130_MOTOR_INITER(2, 2); }
{
static PipetteModule module;
int subid = 2;
PipetteModule::config_t cfg = {
.limit_ul = 30,
};
PipetteModule::hardward_config_t hardwarecfg = {
.uart = &huart2,
.hdma_rx = hdma_usart2_rx,
.hdma_tx = hdma_usart2_tx,
};
module.initialize(getmoduleId(subid), &cfg, &hardwarecfg);
GService::inst()->getZCanProtocolParser()->registerModule(&module);
}
{
static M3078CodeScanner codescanner;
int subid = 3;
static M3078CodeScanner::hardware_config_t cfg = {
.uart = &huart4,
.hdma_rx = nullptr,
.hdma_tx = nullptr,
.codeReadOkPin = PinNull,
.rstPin = PinNull,
.triggerPin = PD15,
};
codescanner.initialize(getmoduleId(subid), &cfg);
GService::inst()->getZCanProtocolParser()->registerModule(&codescanner);
}
#endif
}

24
usrc/subboards/subboard30_shake_module/pri_board.h

@ -1,5 +1,29 @@
#pragma once
#define EXT_INPUT_IO0 PinNull
#define EXT_INPUT_IO1 PinNull
#define EXT_INPUT_IO2 PinNull
#define EXT_INPUT_IO3 PinNull
#define EXT_INPUT_IO4 PinNull
#define EXT_INPUT_IO5 PinNull
#define EXT_INPUT_IO6 PinNull
#define EXT_INPUT_IO7 PinNull
#define EXT_INPUT_IO8 PinNull
#define EXT_INPUT_IO9 PinNull
#define EXT_INPUT_IO0_MIRROR true
#define EXT_INPUT_IO1_MIRROR true
#define EXT_INPUT_IO2_MIRROR true
#define EXT_INPUT_IO3_MIRROR true
#define EXT_INPUT_IO4_MIRROR true
#define EXT_INPUT_IO5_MIRROR true
#define EXT_INPUT_IO6_MIRROR true
#define EXT_INPUT_IO7_MIRROR true
#define EXT_INPUT_IO8_MIRROR true
#define EXT_INPUT_IO9_MIRROR true
#define TMC_MOTOR_SPI hspi1
/***********************************************************************************************************************
* *

20
usrc/subboards/subboard30_shake_module/subboard30_shake_module.cpp

@ -12,29 +12,24 @@ extern "C" {
using namespace iflytop;
static ZGPIO IO[EXT_READ_IO_NUM];
Subboard30ShakeModule::Subboard30ShakeModule(/* args */) {}
Subboard30ShakeModule::~Subboard30ShakeModule() {}
int32_t Subboard30ShakeModule::getmoduleId(int off) { return zdevice_id_mgr_get_device_id() + off; }
int32_t Subboard30ShakeModule::getmoduleId(int off) { return zdevice_id_mgr_get_device_id() + off; }
Subboard30ShakeModule *Subboard30ShakeModule::ins() {
static Subboard30ShakeModule instance;
return &instance;
}
/***********************************************************************************************************************
* PRI *
***********************************************************************************************************************/
static ZGPIO IO[4];
int32_t Subboard30ShakeModule::getid(int32_t *id) {
*id = getmoduleId(0);
return 0;
}
int32_t Subboard30ShakeModule::module_xxx_reg(int32_t param_id, bool read, int32_t &val) { return err::kmodule_not_find_reg; }
int32_t Subboard30ShakeModule::board_read_ext_io(int32_t ioindex, int32_t *val) {
if (ioindex < 0 || ioindex >= ZARRAY_SIZE(IO)) {
return err::kparam_out_of_range;
}
if (ioindex < 0 || ioindex >= ZARRAY_SIZE(IO)) return err::kparam_out_of_range;
*val = IO[ioindex].getState();
return 0;
}
@ -45,12 +40,11 @@ int32_t Subboard30ShakeModule::board_read_muti_io(int32_t *val) {
}
return 0;
}
/***********************************************************************************************************************
* IMPL *
***********************************************************************************************************************/
void Subboard30ShakeModule::initialize() {
IO[0].initAsInput(PinNull, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true);
IO[1].initAsInput(PinNull, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true);
IO[2].initAsInput(PinNull, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true);
IO[3].initAsInput(PinNull, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true);
IO_INIT();
GService::inst()->getZCanProtocolParser()->registerModule(this);
#if 1

28
usrc/subboards/subboard60_inlet_and_outlet_module/pri_board.h

@ -1,4 +1,32 @@
#pragma once
#define EXT_INPUT_IO0 PD0
#define EXT_INPUT_IO1 PD1
#define EXT_INPUT_IO2 PD2
#define EXT_INPUT_IO3 PD3
#define EXT_INPUT_IO4 PD4
#define EXT_INPUT_IO5 PinNull
#define EXT_INPUT_IO6 PinNull
#define EXT_INPUT_IO7 PinNull
#define EXT_INPUT_IO8 PinNull
#define EXT_INPUT_IO9 PinNull
#define EXT_INPUT_IO0_MIRROR true
#define EXT_INPUT_IO1_MIRROR true
#define EXT_INPUT_IO2_MIRROR true
#define EXT_INPUT_IO3_MIRROR true
#define EXT_INPUT_IO4_MIRROR true
#define EXT_INPUT_IO5_MIRROR true
#define EXT_INPUT_IO6_MIRROR true
#define EXT_INPUT_IO7_MIRROR true
#define EXT_INPUT_IO8_MIRROR true
#define EXT_INPUT_IO9_MIRROR true
#define TMC_MOTOR_SPI hspi1
/***********************************************************************************************************************

24
usrc/subboards/subboard60_inlet_and_outlet_module/subboard60_inlet_and_outlet_module.cpp

@ -13,50 +13,42 @@ extern "C" {
using namespace iflytop;
static ZGPIO IO[EXT_READ_IO_NUM];
Subboard60InjectAndOutletModule::Subboard60InjectAndOutletModule(/* args */) {}
Subboard60InjectAndOutletModule::~Subboard60InjectAndOutletModule() {}
int32_t Subboard60InjectAndOutletModule::getmoduleId(int off) { return zdevice_id_mgr_get_device_id() + off; }
int32_t Subboard60InjectAndOutletModule::getmoduleId(int off) { return zdevice_id_mgr_get_device_id() + off; }
Subboard60InjectAndOutletModule *Subboard60InjectAndOutletModule::ins() {
static Subboard60InjectAndOutletModule instance;
return &instance;
}
/***********************************************************************************************************************
* PRI *
***********************************************************************************************************************/
static ZGPIO IO[5];
int32_t Subboard60InjectAndOutletModule::getid(int32_t *id) {
*id = getmoduleId(0);
return 0;
}
int32_t Subboard60InjectAndOutletModule::module_xxx_reg(int32_t param_id, bool read, int32_t &val) { return err::kmodule_not_find_reg; }
int32_t Subboard60InjectAndOutletModule::board_read_ext_io(int32_t ioindex, int32_t *val) {
if (ioindex < 0 || ioindex >= ZARRAY_SIZE(IO)) {
return err::kparam_out_of_range;
}
if (ioindex < 0 || ioindex >= ZARRAY_SIZE(IO)) return err::kparam_out_of_range;
*val = IO[ioindex].getState();
return 0;
}
int32_t Subboard60InjectAndOutletModule::board_write_ext_io(int32_t ioindex, int32_t val) { return 0; }
int32_t Subboard60InjectAndOutletModule::board_read_muti_io(int32_t *val) {
for (int i = 0; i < ZARRAY_SIZE(IO); i++) {
*val |= IO[i].getState() << i;
}
return 0;
}
/***********************************************************************************************************************
* IMPL *
***********************************************************************************************************************/
void Subboard60InjectAndOutletModule::initialize() {
IO[0].initAsInput(PD0, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true);
IO[1].initAsInput(PD1, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true);
IO[2].initAsInput(PD2, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true);
IO[3].initAsInput(PD3, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true);
IO[4].initAsInput(PD4, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true);
IO_INIT();
GService::inst()->getZCanProtocolParser()->registerModule(this);
#if 1
TMC5130_MOTOR_INITER(/*motorid:*/ 1, /*moduleid:*/ 1);
TMC5130_MOTOR_INITER(/*motorid:*/ 2, /*moduleid:*/ 2);

23
usrc/subboards/subboard70_incubation_turntable/pri_board.h

@ -1,5 +1,28 @@
#pragma once
#define EXT_INPUT_IO0 PinNull
#define EXT_INPUT_IO1 PinNull
#define EXT_INPUT_IO2 PinNull
#define EXT_INPUT_IO3 PinNull
#define EXT_INPUT_IO4 PinNull
#define EXT_INPUT_IO5 PinNull
#define EXT_INPUT_IO6 PinNull
#define EXT_INPUT_IO7 PinNull
#define EXT_INPUT_IO8 PinNull
#define EXT_INPUT_IO9 PinNull
#define EXT_INPUT_IO0_MIRROR true
#define EXT_INPUT_IO1_MIRROR true
#define EXT_INPUT_IO2_MIRROR true
#define EXT_INPUT_IO3_MIRROR true
#define EXT_INPUT_IO4_MIRROR true
#define EXT_INPUT_IO5_MIRROR true
#define EXT_INPUT_IO6_MIRROR true
#define EXT_INPUT_IO7_MIRROR true
#define EXT_INPUT_IO8_MIRROR true
#define EXT_INPUT_IO9_MIRROR true
/***********************************************************************************************************************
* IO *
***********************************************************************************************************************/

18
usrc/subboards/subboard70_incubation_turntable/subboard70_incubation_turntable.cpp

@ -14,11 +14,10 @@ extern "C" {
using namespace iflytop;
static ZGPIO IO[5];
static ZGPIO IO[EXT_READ_IO_NUM];
Subboard70IncubationTurntable::Subboard70IncubationTurntable(/* args */) {}
Subboard70IncubationTurntable::~Subboard70IncubationTurntable() {}
int32_t Subboard70IncubationTurntable::getmoduleId(int off) { return zdevice_id_mgr_get_device_id() + off; }
int32_t Subboard70IncubationTurntable::getmoduleId(int off) { return zdevice_id_mgr_get_device_id() + off; }
Subboard70IncubationTurntable *Subboard70IncubationTurntable::ins() {
static Subboard70IncubationTurntable instance;
return &instance;
@ -32,31 +31,22 @@ int32_t Subboard70IncubationTurntable::getid(int32_t *id) {
}
int32_t Subboard70IncubationTurntable::module_xxx_reg(int32_t param_id, bool read, int32_t &val) { return err::kmodule_not_find_reg; }
int32_t Subboard70IncubationTurntable::board_read_ext_io(int32_t ioindex, int32_t *val) {
if (ioindex < 0 || ioindex >= ZARRAY_SIZE(IO)) {
return err::kparam_out_of_range;
}
if (ioindex < 0 || ioindex >= ZARRAY_SIZE(IO)) return err::kparam_out_of_range;
*val = IO[ioindex].getState();
return 0;
}
int32_t Subboard70IncubationTurntable::board_write_ext_io(int32_t ioindex, int32_t val) { return 0; }
int32_t Subboard70IncubationTurntable::board_read_muti_io(int32_t *val) {
for (int i = 0; i < ZARRAY_SIZE(IO); i++) {
*val |= IO[i].getState() << i;
}
return 0;
}
/***********************************************************************************************************************
* IMPL *
***********************************************************************************************************************/
void Subboard70IncubationTurntable::initialize() {
IO[0].initAsInput(EXT_INPUT_IO0, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, EXT_INPUT_IO0_MIRROR);
IO[1].initAsInput(EXT_INPUT_IO1, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, EXT_INPUT_IO1_MIRROR);
IO[2].initAsInput(EXT_INPUT_IO2, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, EXT_INPUT_IO2_MIRROR);
IO[3].initAsInput(EXT_INPUT_IO3, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, EXT_INPUT_IO3_MIRROR);
IO[4].initAsInput(EXT_INPUT_IO4, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, EXT_INPUT_IO4_MIRROR);
IO_INIT();
GService::inst()->getZCanProtocolParser()->registerModule(this);
#if 1

16
usrc/subboards/subboard80_cliptip/pri_board.h

@ -9,12 +9,22 @@
#define EXT_INPUT_IO2 PinNull
#define EXT_INPUT_IO3 PinNull
#define EXT_INPUT_IO4 PinNull
#define EXT_INPUT_IO5 PinNull
#define EXT_INPUT_IO6 PinNull
#define EXT_INPUT_IO7 PinNull
#define EXT_INPUT_IO8 PinNull
#define EXT_INPUT_IO9 PinNull
#define EXT_INPUT_IO0_MIRROR true
#define EXT_INPUT_IO1_MIRROR true
#define EXT_INPUT_IO2_MIRROR true
#define EXT_INPUT_IO3_MIRROR true
#define EXT_INPUT_IO4_MIRROR true
#define EXT_INPUT_IO5_MIRROR true
#define EXT_INPUT_IO6_MIRROR true
#define EXT_INPUT_IO7_MIRROR true
#define EXT_INPUT_IO8_MIRROR true
#define EXT_INPUT_IO9_MIRROR true
/***********************************************************************************************************************
* *
@ -33,9 +43,9 @@
#define MOTOR1_REFL_MIRROR true
#define MOTOR1_REFR_MIRROR true
#define MOTOR1_MOTOR_SHAFT false //
#define MOTOR1_MOTOR_ONE_CIRCLE_PULSE 80 // 3600 = 93圈, 3600/93 = 38.70967741935484
#define MOTOR1_MOTOR_ONE_CIRCLE_PULSE_DENOMINATOR 1 //
#define MOTOR1_MOTOR_SHAFT false //
#define MOTOR1_MOTOR_ONE_CIRCLE_PULSE 80 // 3600 = 93圈, 3600/93 = 38.70967741935484
#define MOTOR1_MOTOR_ONE_CIRCLE_PULSE_DENOMINATOR 1 //
#define MOTOR1_STEPMOTOR_IHOLD 1
#define MOTOR1_STEPMOTOR_IRUN 8
#define MOTOR1_STEPMOTOR_IHOLDDELAY 100

17
usrc/subboards/subboard80_cliptip/subboard80_cliptip.cpp

@ -15,11 +15,11 @@ extern "C" {
using namespace iflytop;
static ZGPIO IO[5];
static ZGPIO IO[EXT_READ_IO_NUM];
Subboard80Cliptip::Subboard80Cliptip(/* args */) {}
Subboard80Cliptip::~Subboard80Cliptip() {}
int32_t Subboard80Cliptip::getmoduleId(int off) { return zdevice_id_mgr_get_device_id() + off; }
int32_t Subboard80Cliptip::getmoduleId(int off) { return zdevice_id_mgr_get_device_id() + off; }
Subboard80Cliptip *Subboard80Cliptip::ins() {
static Subboard80Cliptip instance;
return &instance;
@ -33,31 +33,22 @@ int32_t Subboard80Cliptip::getid(int32_t *id) {
}
int32_t Subboard80Cliptip::module_xxx_reg(int32_t param_id, bool read, int32_t &val) { return err::kmodule_not_find_reg; }
int32_t Subboard80Cliptip::board_read_ext_io(int32_t ioindex, int32_t *val) {
if (ioindex < 0 || ioindex >= ZARRAY_SIZE(IO)) {
return err::kparam_out_of_range;
}
if (ioindex < 0 || ioindex >= ZARRAY_SIZE(IO)) return err::kparam_out_of_range;
*val = IO[ioindex].getState();
return 0;
}
int32_t Subboard80Cliptip::board_write_ext_io(int32_t ioindex, int32_t val) { return 0; }
int32_t Subboard80Cliptip::board_read_muti_io(int32_t *val) {
for (int i = 0; i < ZARRAY_SIZE(IO); i++) {
*val |= IO[i].getState() << i;
}
return 0;
}
/***********************************************************************************************************************
* IMPL *
***********************************************************************************************************************/
void Subboard80Cliptip::initialize() {
IO[0].initAsInput(EXT_INPUT_IO0, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, EXT_INPUT_IO0_MIRROR);
IO[1].initAsInput(EXT_INPUT_IO1, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, EXT_INPUT_IO1_MIRROR);
IO[2].initAsInput(EXT_INPUT_IO2, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, EXT_INPUT_IO2_MIRROR);
IO[3].initAsInput(EXT_INPUT_IO3, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, EXT_INPUT_IO3_MIRROR);
IO[4].initAsInput(EXT_INPUT_IO4, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, EXT_INPUT_IO4_MIRROR);
IO_INIT();
GService::inst()->getZCanProtocolParser()->registerModule(this);
#if 1

95
usrc/subboards/subboard90_optical_module/pri_board.h

@ -0,0 +1,95 @@
#pragma once
/***********************************************************************************************************************
* IO *
***********************************************************************************************************************/
#define EXT_INPUT_IO0 PinNull
#define EXT_INPUT_IO1 PinNull
#define EXT_INPUT_IO2 PinNull
#define EXT_INPUT_IO3 PinNull
#define EXT_INPUT_IO4 PinNull
#define EXT_INPUT_IO5 PinNull
#define EXT_INPUT_IO6 PinNull
#define EXT_INPUT_IO7 PinNull
#define EXT_INPUT_IO8 PinNull
#define EXT_INPUT_IO9 PinNull
#define EXT_INPUT_IO0_MIRROR true
#define EXT_INPUT_IO1_MIRROR true
#define EXT_INPUT_IO2_MIRROR true
#define EXT_INPUT_IO3_MIRROR true
#define EXT_INPUT_IO4_MIRROR true
#define EXT_INPUT_IO5_MIRROR true
#define EXT_INPUT_IO6_MIRROR true
#define EXT_INPUT_IO7_MIRROR true
#define EXT_INPUT_IO8_MIRROR true
#define EXT_INPUT_IO9_MIRROR true
#define TMC_MOTOR_SPI hspi1
/***********************************************************************************************************************
* *
***********************************************************************************************************************/
#define MOTOR1_CSN PA4
#define MOTOR1_ENN PE3
#define MOTOR1_SPI_MODE_SELECT PinNull
#define MOTOR1_nFREEZE_IO PE12
#define MOTOR1_nRESET_IO PinNull
#define MOTOR1_SUB_IC_ENN_IO PE11
#define MOTOR1_REFL PD2
#define MOTOR1_REFR PD1
#define MOTOR1_REFL_MIRROR true
#define MOTOR1_REFR_MIRROR true
#define MOTOR1_MOTOR_SHAFT false //
#define MOTOR1_MOTOR_ONE_CIRCLE_PULSE 80 // 3600 = 93圈, 3600/93 = 38.70967741935484
#define MOTOR1_MOTOR_ONE_CIRCLE_PULSE_DENOMINATOR 1 //
#define MOTOR1_STEPMOTOR_IHOLD 1
#define MOTOR1_STEPMOTOR_IRUN 8
#define MOTOR1_STEPMOTOR_IHOLDDELAY 100
#define MOTOR1_STEPMOTOR_IGLOBALSCALER 1
#define MOTOR1_MOTOR_DEFAULT_ACC 300
#define MOTOR1_MOTOR_DEFAULT_DEC 300
#define MOTOR1_MOTOR_DEFAULT_VELOCITY 500
#define MOTOR1_MIN_D 0
#define MOTOR1_MAX_D 0
#define MOTOR1_MOTOR_RUN_TO_ZERO_SPEED 100
#define MOTOR1_MOTOR_RUN_TO_ZERO_DEC 300
#define MOTOR1_MOTOR_LOOK_ZERO_EDGE_SPEED 50
#define MOTOR1_MOTOR_LOOK_ZERO_EDGE_DEC 600
/***********************************************************************************************************************
* *
***********************************************************************************************************************/
#define MOTOR2_CSN PA4
#define MOTOR2_ENN PE3
#define MOTOR2_SPI_MODE_SELECT PinNull
#define MOTOR2_nFREEZE_IO PE12
#define MOTOR2_nRESET_IO PinNull
#define MOTOR2_SUB_IC_ENN_IO PE11
#define MOTOR2_REFL PD2
#define MOTOR2_REFR PD1
#define MOTOR2_REFL_MIRROR true
#define MOTOR2_REFR_MIRROR true
#define MOTOR2_MOTOR_SHAFT false //
#define MOTOR2_MOTOR_ONE_CIRCLE_PULSE 80 // 3600 = 93圈, 3600/93 = 38.70967741935484
#define MOTOR2_MOTOR_ONE_CIRCLE_PULSE_DENOMINATOR 1 //
#define MOTOR2_STEPMOTOR_IHOLD 1
#define MOTOR2_STEPMOTOR_IRUN 8
#define MOTOR2_STEPMOTOR_IHOLDDELAY 100
#define MOTOR2_STEPMOTOR_IGLOBALSCALER 1
#define MOTOR2_MOTOR_DEFAULT_ACC 300
#define MOTOR2_MOTOR_DEFAULT_DEC 300
#define MOTOR2_MOTOR_DEFAULT_VELOCITY 500
#define MOTOR2_MIN_D 0
#define MOTOR2_MAX_D 0
#define MOTOR2_MOTOR_RUN_TO_ZERO_SPEED 100
#define MOTOR2_MOTOR_RUN_TO_ZERO_DEC 300
#define MOTOR2_MOTOR_LOOK_ZERO_EDGE_SPEED 50
#define MOTOR2_MOTOR_LOOK_ZERO_EDGE_DEC 600

64
usrc/subboards/subboard90_optical_module/subboard90_optical_module.cpp

@ -0,0 +1,64 @@
#include "subboard90_optical_module.hpp"
extern "C" {
#include "subboard90_optical_module_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"
#define TAG "ShakeModule"
using namespace iflytop;
static ZGPIO IO[EXT_READ_IO_NUM];
Subboard90OpticalModule::Subboard90OpticalModule(/* args */) {}
Subboard90OpticalModule::~Subboard90OpticalModule() {}
int32_t Subboard90OpticalModule::getmoduleId(int off) { return zdevice_id_mgr_get_device_id() + off; }
Subboard90OpticalModule *Subboard90OpticalModule::ins() {
static Subboard90OpticalModule instance;
return &instance;
}
/***********************************************************************************************************************
* PRI *
***********************************************************************************************************************/
int32_t Subboard90OpticalModule::getid(int32_t *id) {
*id = getmoduleId(0);
return 0;
}
int32_t Subboard90OpticalModule::module_xxx_reg(int32_t param_id, bool read, int32_t &val) { return err::kmodule_not_find_reg; }
int32_t Subboard90OpticalModule::board_read_ext_io(int32_t ioindex, int32_t *val) {
if (ioindex < 0 || ioindex >= ZARRAY_SIZE(IO)) return err::kparam_out_of_range;
*val = IO[ioindex].getState();
return 0;
}
int32_t Subboard90OpticalModule::board_write_ext_io(int32_t ioindex, int32_t val) { return 0; }
int32_t Subboard90OpticalModule::board_read_muti_io(int32_t *val) {
for (int i = 0; i < ZARRAY_SIZE(IO); i++) {
*val |= IO[i].getState() << i;
}
return 0;
}
/***********************************************************************************************************************
* IMPL *
***********************************************************************************************************************/
void Subboard90OpticalModule::initialize() {
IO_INIT();
GService::inst()->getZCanProtocolParser()->registerModule(this);
#if 1
/***********************************************************************************************************************
* ID1 *
***********************************************************************************************************************/
{ TMC5130_MOTOR_INITER(1, 1); }
{ TMC5130_MOTOR_INITER(2, 2); }
#endif
}

45
usrc/subboards/subboard90_optical_module/subboard90_optical_module.hpp

@ -0,0 +1,45 @@
#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"
namespace iflytop {
class Subboard90OpticalModule : public ZIBoard, public ZIModule {
ENABLE_MODULE(Subboard90OpticalModule, kboard, 1);
private:
/* data */
public:
Subboard90OpticalModule(/* args */);
~Subboard90OpticalModule();
static Subboard90OpticalModule *ins();
void initialize();
public:
/***********************************************************************************************************************
* ZIModule *
***********************************************************************************************************************/
virtual int32_t getid(int32_t *id);
virtual int32_t module_xxx_reg(int32_t param_id, bool read, int32_t &val);
/***********************************************************************************************************************
* ZIBoard *
***********************************************************************************************************************/
virtual int32_t board_read_ext_io(int32_t ioindex, int32_t *val);
virtual int32_t board_write_ext_io(int32_t ioindex, int32_t val);
virtual int32_t board_read_muti_io(int32_t *val);
private:
int32_t getmoduleId(int off);
};
} // namespace iflytop

73
usrc/subboards/subboard90_optical_module/subboard90_optical_module_board.c

@ -0,0 +1,73 @@
#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;
}
static void MX_SPI2_Init(void) {
__HAL_RCC_SPI2_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
hspi2.Instance = SPI2;
hspi2.Init.Mode = SPI_MODE_MASTER;
hspi2.Init.Direction = SPI_DIRECTION_2LINES;
hspi2.Init.DataSize = SPI_DATASIZE_8BIT;
hspi2.Init.CLKPolarity = SPI_POLARITY_LOW;
hspi2.Init.CLKPhase = SPI_PHASE_1EDGE;
hspi2.Init.NSS = SPI_NSS_SOFT;
hspi2.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_64;
hspi2.Init.FirstBit = SPI_FIRSTBIT_MSB;
hspi2.Init.TIMode = SPI_TIMODE_DISABLE;
hspi2.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
hspi2.Init.CRCPolynomial = 10;
if (HAL_SPI_Init(&hspi2) != HAL_OK) {
Error_Handler();
}
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15;
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_SPI2;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
hspi2_enable = true;
}
/**
* @brief
*/
void subboard90_optical_module_board_init() {
common_hardware_init();
MX_SPI1_Init();
MX_SPI2_Init();
}

12
usrc/subboards/subboard90_optical_module/subboard90_optical_module_board.h

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