Browse Source

update

master
zhaohe 2 years ago
parent
commit
a8d84d52ad
  1. 2
      Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c
  2. 2
      a8000_temperature_ctl.launch
  3. 2
      sdk
  4. 32
      usrc/board.h
  5. 288
      usrc/driver.cpp
  6. 97
      usrc/driver.hpp
  7. 352
      usrc/main.cpp
  8. 60
      usrc/project_configs.h

2
Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c

@ -326,7 +326,7 @@ __weak uint32_t HAL_GetTick(void)
}
/**
* @brief This function returns a tick priority.
* @brief This function returns ahiwdg tick priority.
* @retval tick priority
*/
uint32_t HAL_GetTickPrio(void)

2
a8000_temperature_ctl.launch

@ -51,7 +51,7 @@
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.low_power_debug" value="disable"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.max_halt_delay" value="2"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.reset_strategy" value="system_reset"/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.stlink_check_serial_number" value="true"/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.stlink_check_serial_number" value="false"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.stlink_txt_serial_number" value="001B00273132510838363431"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.watchdog_config" value="none"/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlinkenable_rtos" value="false"/>

2
sdk

@ -1 +1 @@
Subproject commit a41640afe9d4f8e990c13c769238e1a79940fc88
Subproject commit 89a7ff2c9c2328ba294d19ca501c2303a0942659

32
usrc/board.h

@ -0,0 +1,32 @@
#pragma once
// MOTOR1
#define TMC_MOTOR_SPI hspi1
#define TMC5130_MOTOR_NUM 1
#define MOTOR0_CSN PA4
#define MOTOR0_ENN PB7
#define MOTOR1_SPI_MODE_SELECT PB4
#define MOTOR_CFG_FLASH_MARK "MOTOR_CFG_FLASH_MARK"
#if 0
#define STEPPER_MOTOR_ZERO_SENSOR SENSOR_INT0
#define STEPPER_MOTOR_FORWARD_SENSOR SENSOR_INT8
#define STEPPER_MOTOR_BACKWARD_SENSOR SENSOR_INT9
#endif
#define ID0_IO PD11
#define ID1_IO PD12
#define ID2_IO PD13
#define ID3_IO PD14
#define ID4_IO PD15
#define SENSOR_INT0 PD0
#define SENSOR_INT1 PD1
#define SENSOR_INT2 PD2
#define SENSOR_INT3 PD3
#define SENSOR_INT4 PD4
#define SENSOR_INT5 PD5
#define SENSOR_INT6 PD6
#define SENSOR_INT7 PD7
#define SENSOR_INT8 PD8
#define SENSOR_INT9 PD9

288
usrc/driver.cpp

@ -0,0 +1,288 @@
#include "driver.hpp"
using namespace iflytop;
#define TIMER2_FREQ 1000
#define TIMER1_FREQ 1000
#define HEART_SHAFT false
#define TAG "DRIVER"
/*******************************************************************************
* ·çÉÈÅäÖà *
*******************************************************************************/
PWMSpeedCtrlModule::config_t fan0cfg = {
.name = "fan0",
.pwm_cfg =
{
.name = "fan0pwmtimer",
.htim = &htim2,
.freq = TIMER2_FREQ,
.polarity = false,
},
.nfan = 2,
.fan0Channel = {3, 0, 0, 0},
.fanFBGpioCfg =
{
{.pin = PC10},
{.pin = PC11},
},
.fanPowerGpioCfg =
{
{
.pin = PC4,
.mode = ZGPIO::kMode_nopull,
.mirror = false,
},
},
.enablefbcheck = false,
.enableTrace = true,
};
PWMSpeedCtrlModule::config_t fan1cfg = {
.name = "fan1",
.pwm_cfg =
{
.name = "fan1pwmtimer",
.htim = &htim2,
.freq = TIMER2_FREQ,
.polarity = false,
},
.nfan = 2,
.fan0Channel = {4, 0, 0, 0},
.fanFBGpioCfg =
{
{.pin = PC12},
{.pin = PC13},
},
.fanPowerGpioCfg =
{
{
.pin = PC5,
.mode = ZGPIO::kMode_nopull,
.mirror = false,
},
},
.enablefbcheck = false,
.enableTrace = true,
};
/*******************************************************************************
* FanCtrlModule *
*******************************************************************************/
void FanCtrlModule::initialize(fan_index_t index) {
m_fanindex = index;
if (m_fanindex == kfan0) {
fan0.initialize(&fan0cfg);
} else if (m_fanindex == kfan1) {
fan1.initialize(&fan1cfg);
} else if (m_fanindex == kfan0and1) {
fan0.initialize(&fan0cfg);
fan1.initialize(&fan1cfg);
}
}
void FanCtrlModule::setFanSpeed(int32_t duty) {
if (m_fanindex == kfan0) {
fan0.startModule(duty);
} else if (m_fanindex == kfan1) {
fan1.startModule(duty);
} else if (m_fanindex == kfan0and1) {
fan0.startModule(duty);
fan1.startModule(duty);
}
}
void FanCtrlModule::stop() {
if (m_fanindex == kfan0) {
fan0.stopModule();
} else if (m_fanindex == kfan1) {
fan1.stopModule();
} else if (m_fanindex == kfan0and1) {
fan0.stopModule();
fan1.stopModule();
}
}
bool FanCtrlModule::isWorking() {
if (m_fanindex == kfan0) {
return fan0.isWorking();
} else if (m_fanindex == kfan1) {
return fan1.isWorking();
} else if (m_fanindex == kfan0and1) {
return fan0.isWorking() || fan1.isWorking();
}
return false;
}
void FanCtrlModule::clearError() {
if (m_fanindex == kfan0) {
fan0.clearError();
} else if (m_fanindex == kfan1) {
fan1.clearError();
} else if (m_fanindex == kfan0and1) {
fan0.clearError();
fan1.clearError();
}
};
bool FanCtrlModule::isError() {
if (m_fanindex == kfan0) {
return fan0.isError();
} else if (m_fanindex == kfan1) {
return fan1.isError();
} else if (m_fanindex == kfan0and1) {
return fan0.isError() || fan1.isError();
}
return false;
}
/*******************************************************************************
* Ë®±ÃÅäÖà *
*******************************************************************************/
PWMSpeedCtrlModule::config_t pumpcfg = {
.name = "pump",
.pwm_cfg =
{
.name = "pumptime",
.htim = &htim2,
.freq = TIMER2_FREQ,
.polarity = false,
.calltrace = true,
},
.nfan = 1,
.fan0Channel = {2, 0, 0, 0},
.fanFBGpioCfg =
{
{.pin = PC3},
},
.fanPowerGpioCfg =
{
{
.pin = PC2,
.mode = ZGPIO::kMode_nopull,
.mirror = false,
.log_when_setstate = true,
},
},
.enablefbcheck = false,
.enableTrace = true,
};
/*******************************************************************************
* PumpCtrlModule *
*******************************************************************************/
void PumpCtrlModule::initialize() { pump.initialize(&pumpcfg); }
void PumpCtrlModule::setPumpSpeed(int32_t duty) { pump.startModule(duty); }
void PumpCtrlModule::stop() { pump.stopModule(); }
bool PumpCtrlModule::isError() { return pump.isError(); }
bool PumpCtrlModule::isWorking() { return pump.isWorking(); }
void PumpCtrlModule::clearError() { return pump.clearError(); }
/*******************************************************************************
* ÅÁûÌùÅäÖÃ *
*******************************************************************************/
DRV8710::config_t peltier_config0 = {
.pwm_cfg =
{
.name = "peltier0_pwm",
.htim = &htim1,
.freq = TIMER1_FREQ,
.polarity = false,
},
.in1_chnannel_index = 1, // PE9
.in2 = PE11,
.nsleep = PB2,
.nfault = PB3,
.sensePin = PB4,
.shaft = HEART_SHAFT,
.enableTrace = true,
};
DRV8710::config_t peltier_config1 = {
.pwm_cfg =
{
.name = "peltier1_pwm",
.htim = &htim1,
.freq = TIMER1_FREQ,
.polarity = false,
},
.in1_chnannel_index = 3, // PE13
.in2 = PE14,
.nsleep = PB13,
.nfault = PB14,
.sensePin = PB15,
.shaft = HEART_SHAFT,
.enableTrace = true,
};
void PeltierCtrlModule::initialize(peltier_index_t index) {
m_index = index;
if (m_index == kpeltier0) {
peltier0.initialize(&peltier_config0);
} else if (m_index == kpeltier1) {
peltier1.initialize(&peltier_config1);
} else if (m_index == kpeltier0and1) {
peltier0.initialize(&peltier_config0);
peltier1.initialize(&peltier_config1);
}
}
void PeltierCtrlModule::setSpeed(int32_t duty) {
m_workflag = true;
if (m_index == kpeltier0) {
peltier0.enable(true);
peltier0.move(duty);
} else if (m_index == kpeltier1) {
peltier1.enable(true);
peltier1.move(duty);
} else if (m_index == kpeltier0and1) {
peltier0.enable(true);
peltier0.move(duty);
peltier1.enable(true);
peltier1.move(duty);
}
}
void PeltierCtrlModule::stop() {
m_workflag = false;
if (m_index == kpeltier0) {
peltier0.enable(false);
peltier0.move(0);
} else if (m_index == kpeltier1) {
peltier1.enable(false);
peltier1.move(0);
} else if (m_index == kpeltier0and1) {
peltier0.enable(false);
peltier0.move(0);
peltier1.enable(false);
peltier1.move(0);
}
}
bool PeltierCtrlModule::isError() {
if (m_index == kpeltier0) {
return peltier0.isFault();
} else if (m_index == kpeltier1) {
return peltier1.isFault();
} else if (m_index == kpeltier0and1) {
return peltier0.isFault() || peltier1.isFault();
}
return false;
}
bool PeltierCtrlModule::dumpErrorInfo() { //
if (m_index == kpeltier0) {
ZLOGI(TAG, "motor0 fault:%d,sense:%d", !peltier0.isFault(), peltier0.getSensePinState());
} else if (m_index == kpeltier1) {
ZLOGI(TAG, "motor1 fault:%d,sense:%d", !peltier1.isFault(), peltier1.getSensePinState());
} else if (m_index == kpeltier0and1) {
ZLOGI(TAG, "motor0 fault:%d,sense:%d", !peltier0.isFault(), peltier0.getSensePinState());
ZLOGI(TAG, "motor1 fault:%d,sense:%d", !peltier1.isFault(), peltier1.getSensePinState());
}
return true;
};
bool PeltierCtrlModule::isWorking() { return m_workflag; }
void PeltierCtrlModule::clearError() { return; }

97
usrc/driver.hpp

@ -0,0 +1,97 @@
#pragma once
#include <stddef.h>
#include <stdio.h>
#include "board.h"
#include "sdk\components\subcanmodule\zcancmder_subboard_initer.hpp"
/*******************************************************************************
* PROJECT_INCLUDE *
*******************************************************************************/
#include "sdk/components/step_motor_ctrl_module/step_motor_ctrl_module.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\pipette_module\pipette_ctrl_module_v2.hpp"
#include "sdk\components\sensors\m3078\m3078_code_scaner.hpp"
#include "sdk\components\tmc\ic\ztmc4361A.hpp"
#include "sdk\components\tmc\ic\ztmc5130.hpp"
//
#include "sdk\components\sensors\tmp117\tmp117.hpp"
#include "sdk\components\ti\drv8710.hpp"
#include "sdk\components\water_cooling_temperature_control_module\pwm_ctrl_module.hpp"
#include "sdk\components\water_cooling_temperature_control_module\water_cooling_temperature_control_module.hpp"
namespace iflytop {
class FanCtrlModule : public ZIPWMFanCtrlModule {
public:
typedef enum {
kfan0,
kfan1,
kfan0and1,
} fan_index_t;
private:
/* data */
PWMSpeedCtrlModule fan0;
PWMSpeedCtrlModule fan1;
fan_index_t m_fanindex = kfan0and1;
public:
void initialize(fan_index_t index);
virtual void setFanSpeed(int32_t duty) override;
virtual void stop() override;
virtual bool isWorking() override;
virtual bool isError() override;
virtual void clearError() override;
};
class PumpCtrlModule : public ZIPWMPumpCtrlModule {
private:
/* data */
PWMSpeedCtrlModule pump;
public:
void initialize();
virtual void setPumpSpeed(int32_t duty) override;
virtual void stop() override;
virtual bool isWorking() override;
virtual bool isError() override;
virtual void clearError() override;
};
class PeltierCtrlModule : public ZIDcMotorCtrlModule {
public:
typedef enum {
kpeltier0,
kpeltier1,
kpeltier0and1,
} peltier_index_t;
private:
/* data */
DRV8710 peltier0;
DRV8710 peltier1;
bool m_workflag = false;
peltier_index_t m_index;
public:
void initialize(peltier_index_t index);
virtual void setSpeed(int32_t duty) override;
virtual void stop() override;
virtual bool isWorking() override;
virtual bool dumpErrorInfo() override;
virtual bool isError() override;
virtual void clearError() override;
};
} // namespace iflytop

352
usrc/main.cpp

@ -1,243 +1,109 @@
#include <stddef.h>
#include <stdio.h>
#include "sdk/os/zos.hpp"
#include "sdk\components\flash\zsimple_flash.hpp"
#include "sdk\components\zcancmder\zcanreceiver.hpp"
#include "sdk\components\zcancmder_module\zcan_basic_order_module.hpp"
//
#include "sdk\components\flash\znvs.hpp"
#include "board.h"
#include "sdk\components\subcanmodule\zcancmder_subboard_initer.hpp"
/*******************************************************************************
* PROJECT_INCLUDE *
*******************************************************************************/
#include "sdk/components/step_motor_ctrl_module/step_motor_ctrl_module.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\pipette_module\pipette_ctrl_module_v2.hpp"
#include "sdk\components\sensors\m3078\m3078_code_scaner.hpp"
#include "sdk\components\tmc\ic\ztmc4361A.hpp"
#include "sdk\components\tmc\ic\ztmc5130.hpp"
//
#include "driver.hpp"
#include "sdk\components\sensors\tmp117\tmp117.hpp"
#include "sdk\components\ti\drv8710.hpp"
#include "sdk\components\water_cooling_temperature_control_module\pwm_ctrl_module.hpp"
#include "sdk\components\water_cooling_temperature_control_module\water_cooling_temperature_control_module.hpp"
#include "sdk\components\water_cooling_temperature_control_module\water_cooling_temperature_control_module_factory.cpp"
#include "sdk\components\water_cooling_temperature_control_module\water_cooling_temperature_control_module_factory.hpp"
#include "sdk\components\zcancmder_module\zcan_fan_ctrl_module.hpp"
// cancmder basic
#include "sdk\components\cmdscheduler\cmd_scheduler_v2.hpp"
#include "sdk\components\hardware\uart\zuart_dma_receiver.hpp"
#include "sdk\components\zcancmder\zcan_board_module.hpp"
#include "sdk\components\zprotocol_helper\micro_computer_module_device_script_cmder_paser.hpp"
#include "sdk\components\zprotocols\zcancmder_v2\protocol_parser.hpp"
#include "sdk\components\zprotocols\zcancmder_v2\zmodule_device_manager.hpp"
//
#define TAG "main"
using namespace iflytop;
using namespace std;
static ZCancmderSubboardIniter initer;
extern void umain();
extern "C" {
void StartDefaultTask(void const* argument) { umain(); }
}
// static ZCanCmder g_zcanCmder;
// static ZIProtocolParser g_ziProtocolParser;
static ZCanCmder g_zcanCmder;
static ZIProtocolParser g_ziProtocolParser;
static ZModuleDeviceManager g_zModuleDeviceManager;
static MicroComputerModuleDeviceScriptCmderPaser g_zModuleDeviceScriptCmderPaser;
static uint32_t g_deviceId = 0;
uint8_t getId() {
/*******************************************************************************
* GET_DEVICE_ID *
*******************************************************************************/
static int32_t getDeviceId() {
static bool init = false;
static ZGPIO ID0;
static ZGPIO ID1;
static ZGPIO ID2;
static ZGPIO ID3;
static ZGPIO ID4;
if (!init) {
ID0.initAsInput(ID0_IO, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true);
ID1.initAsInput(ID1_IO, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true);
ID2.initAsInput(ID2_IO, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true);
ID3.initAsInput(ID3_IO, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true);
ID4.initAsInput(ID4_IO, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true);
init = true;
}
uint8_t id = ID0.getState() * 1 + ID1.getState() * 2 + ID2.getState() * 4 + ID3.getState() * 8 + ID4.getState() * 16;
return id;
// uint8_t id = ID0.getState() * 1 + ID1.getState() * 2 + ID2.getState() * 4 + ID3.getState() * 8 + ID4.getState() * 16;
if (ID0.getState() == 0) {
return 4;
} else {
return 5;
}
}
void initcfg() {
/**
* @brief
*/
#if 0
static I_StepMotorCtrlModule::flash_config_t cfg;
StepMotorCtrlModule::create_default_cfg(cfg);
ZNVS::ins().alloc_config(MOTOR_CFG_FLASH_MARK, (uint8_t*)&cfg, sizeof(cfg));
#endif
static int32_t getPeltierNum() {
static bool init = false;
static ZGPIO ID4;
if (!init) {
ID4.initAsInput(ID4_IO, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true);
init = true;
}
if (ID4.getState() == 0) {
return 1;
} else {
return 2;
}
}
void initmodule() {
#define TIMER2_FREQ 1000
#define TIMER1_FREQ 1000
#define HEART_SHAFT false
/*******************************************************************************
* *
*******************************************************************************/
PWMSpeedCtrlModule::config_t fan0cfg = {
.name = "fan0",
.pwm_cfg =
{
.name = "fan0pwmtimer",
.htim = &htim2,
.freq = TIMER2_FREQ,
.polarity = false,
},
.nfan = 2,
.fan0Channel = {3, 0, 0, 0},
.fanFBGpioCfg =
{
{.pin = PC10},
{.pin = PC11},
},
.fanPowerGpioCfg =
{
{
.pin = PC4,
.mode = ZGPIO::kMode_nopull,
.mirror = false,
},
},
.enablefbcheck = false,
.enableTrace = true,
};
PWMSpeedCtrlModule::config_t fan1cfg = {
.name = "fan1",
.pwm_cfg =
{
.name = "fan1pwmtimer",
.htim = &htim2,
.freq = TIMER2_FREQ,
.polarity = false,
},
.nfan = 2,
.fan0Channel = {4, 0, 0, 0},
.fanFBGpioCfg =
{
{.pin = PC12},
{.pin = PC13},
},
.fanPowerGpioCfg =
{
{
.pin = PC5,
.mode = ZGPIO::kMode_nopull,
.mirror = false,
},
},
.enablefbcheck = false,
.enableTrace = true,
};
static bool m_onefan = false;
/*******************************************************************************
* *
*******************************************************************************/
PWMSpeedCtrlModule::config_t pumpcfg = {
.name = "pump",
.pwm_cfg =
{
.name = "pumptime",
.htim = &htim2,
.freq = TIMER2_FREQ,
.polarity = false,
.calltrace = true,
},
.nfan = 1,
.fan0Channel = {2, 0, 0, 0},
.fanFBGpioCfg =
{
{.pin = PC3},
},
.fanPowerGpioCfg =
{
{
.pin = PC2,
.mode = ZGPIO::kMode_nopull,
.mirror = false,
.log_when_setstate = true,
/*******************************************************************************
* INIT_SUBMODULE *
*******************************************************************************/
void nvs_init_cb() {}
},
},
.enablefbcheck = false,
.enableTrace = true,
};
// ZIPWMFanCtrlModule* fan_ctrl;
// ZIDcMotorCtrlModule* pelter_ctrl;
// ZIPWMPumpCtrlModule* pump_ctrl;
DRV8710::config_t peltier_config0 = {
.pwm_cfg =
{
.name = "peltier0_pwm",
.htim = &htim1,
.freq = TIMER1_FREQ,
.polarity = true,
},
.in1_chnannel_index = 1, // PE9
.in2 = PE11,
.nsleep = PB2,
.nfault = PB3,
.shaft = HEART_SHAFT,
.enableTrace = true,
};
DRV8710::config_t peltier_config1 = {
.pwm_cfg =
{
.name = "peltier1_pwm",
.htim = &htim1,
.freq = TIMER1_FREQ,
.polarity = true,
},
.in1_chnannel_index = 3, // PE13
.in2 = PE14,
.nsleep = PB13,
.nfault = PB14,
.shaft = HEART_SHAFT,
.enableTrace = true,
};
static TMP117 temp[4];
static PWMSpeedCtrlModule fan0;
static PWMSpeedCtrlModule fan1;
static PWMSpeedCtrlModule pump;
static DRV8710 peltier0;
static DRV8710 peltier1;
temp[0].initializate(&hi2c1, TMP117::ID0);
temp[1].initializate(&hi2c1, TMP117::ID1);
temp[2].initializate(&hi2c1, TMP117::ID2);
temp[3].initializate(&hi2c1, TMP117::ID3);
fan0.initialize(&fan0cfg);
fan1.initialize(&fan1cfg);
pump.initialize(&pumpcfg);
peltier0.initialize(&peltier_config0);
peltier1.initialize(&peltier_config1);
static void initsubmodule() {
#define TIMER1_FREQ 1000
#define HEART_SHAFT false
{
/**
* @brief
*/
static ZCanBoardModule::hardware_config_t cfg = {
.input =
{
{PC6, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true},
{PC7, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true},
},
.output =
{
{PD0, ZGPIO::kMode_nopull, false, false},
} //
};
static ZCanBoardModule boardmodule;
boardmodule.initialize(g_deviceId, &cfg);
g_ziProtocolParser.registerModule(&boardmodule);
g_zModuleDeviceManager.registerModule(&boardmodule);
}
static TMP117 temp[4];
static FanCtrlModule fan;
static PumpCtrlModule pump;
static PeltierCtrlModule peltier;
temp[0].initializate(&hi2c1, TMP117::ID0);
temp[1].initializate(&hi2c1, TMP117::ID1);
temp[2].initializate(&hi2c1, TMP117::ID2);
temp[3].initializate(&hi2c1, TMP117::ID3);
if (getPeltierNum() == 1) {
fan.initialize(FanCtrlModule::kfan0);
peltier.initialize(PeltierCtrlModule::kpeltier0);
} else {
fan.initialize(FanCtrlModule::kfan0and1);
peltier.initialize(PeltierCtrlModule::kpeltier0and1);
}
pump.initialize();
{
/*******************************************************************************
* *
*******************************************************************************/
@ -247,59 +113,43 @@ void initmodule() {
WaterCoolingTemperatureControlModule::hardwared_config_t hardwared_config = //
{
.temperature_sensor = {&temp[0], &temp[1], &temp[2], &temp[3]},
.fanTable = {&fan0, &fan1},
.pump = &pump,
.peltier_ctrl = {&peltier0, &peltier1},
.temp_fb_index = 1,
.fan_ctrl = &fan,
.pelter_ctrl = &peltier,
.pump_ctrl = &pump,
};
waterCoolingTemperatureControlModule.initialize(g_deviceId + 1, &temp_ctrl_config, &hardwared_config);
g_zModuleDeviceManager.registerModule(&waterCoolingTemperatureControlModule);
g_ziProtocolParser.registerModule(&waterCoolingTemperatureControlModule);
waterCoolingTemperatureControlModule.initialize(initer.get_module_id(1), &temp_ctrl_config, &hardwared_config);
initer.register_module(&waterCoolingTemperatureControlModule);
}
}
void umain() {
chip_cfg_t chipcfg;
chipcfg.us_dleay_tim = &DELAY_US_TIMER;
chipcfg.tim_irq_scheduler_tim = &TIM_IRQ_SCHEDULER_TIMER;
chipcfg.huart = &DEBUG_UART;
chipcfg.debuglight = DEBUG_LIGHT_GPIO;
chip_init(&chipcfg);
zos_cfg_t zoscfg;
zos_init(&zoscfg);
g_deviceId = getId() * 10;
ZLOGI(TAG, "motorId:%d", g_deviceId);
/*******************************************************************************
* NVSINIT *
*******************************************************************************/
ZNVS::ins().initialize(IFLYTOP_NVS_CONFIG_FLASH_SECTOR);
initcfg();
ZNVS::ins().init_config();
auto zcanCmder_cfg = g_zcanCmder.createCFG(g_deviceId);
g_zcanCmder.init(zcanCmder_cfg);
g_ziProtocolParser.initialize(&g_zcanCmder);
static ZUARTDmaReceiver dmaUartReceiver;
static CmdSchedulerV2 cmder;
ZUARTDmaReceiver::hardware_config_t cfg = {
.huart = &DEBUG_UART,
.dma_rx = &DEBUG_UART_DMA,
.rxbuffersize = 1024,
.rxovertime_ms = 10,
};
dmaUartReceiver.initialize(&cfg);
cmder.initialize(&dmaUartReceiver);
g_zModuleDeviceManager.initialize(nullptr);
g_zModuleDeviceScriptCmderPaser.initialize(&cmder, &g_zModuleDeviceManager);
initmodule();
while (true) {
OSDefaultSchduler::getInstance()->loop();
g_zcanCmder.loop();
cmder.schedule();
if (getPeltierNum() == 1) {
static FanCtrlModule fan;
static ZcanFanCtrlModule fan_ctrl_module;
fan.initialize(FanCtrlModule::kfan1);
fan_ctrl_module.initialize(initer.get_module_id(2), &fan, 50);
initer.register_module(&fan_ctrl_module);
}
}
/*******************************************************************************
* MAIN *
*******************************************************************************/
void umain() {
ZCancmderSubboardIniter::cfg_t cfg = //
{
.deviceId = getDeviceId(),
.input_gpio =
{
{PC6, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true},
{PC7, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true},
},
.output_gpio =
{
{PD0, ZGPIO::kMode_nopull, false, false},
},
};
initer.init(&cfg);
initsubmodule();
initer.loop();
}

60
usrc/project_configs.h

@ -1,51 +1,21 @@
#pragma once
#pragma once
#define PC_VERSION "v1.0.1"
#define PC_MANUFACTURER "http://www.iflytop.com/"
#define PC_PROJECT_NAME "a8000_temperature_ctrl"
#define PC_IFLYTOP_ENABLE_OS 1
#define VERSION "v1.0.0"
#define MANUFACTURER "http://www.iflytop.com/"
#define PROJECT_NAME "a8000_temperature_ctrl"
#define DEBUG_UART huart1
#define DEBUG_UART_DMA hdma_usart1_rx
#define DEBUG_LIGHT_GPIO PE2
#define DELAY_US_TIMER htim6 // US延时定时器
#define TIM_IRQ_SCHEDULER_TIMER htim7 // 中断定时器中断调度器
#define IFLTYOP_ZTICKET_TIMER TIM11 // 系统ticket定时器
#define IFLYTOP_ENABLE_OS 1
#define IFLYTOP_PREEMPTPRIORITY_DEFAULT 5
/****************************************FLASH***************************************/
#define IFLYTOP_NVS_CONFIG_FLASH_SECTOR 8
/*********************************************************************************/
// MOTOR1
#define TMC_MOTOR_SPI hspi1
#define TMC5130_MOTOR_NUM 1
#define MOTOR0_CSN PA4
#define MOTOR0_ENN PB7
#define MOTOR1_SPI_MODE_SELECT PB4
#define PC_DEBUG_UART huart1
#define PC_DEBUG_UART_DMA_HANDLER hdma_usart1_rx
#define PC_DEBUG_UART_RX_BUF_SIZE 1024
#define PC_DEBUG_LIGHT_GPIO PE2
#define MOTOR_CFG_FLASH_MARK "MOTOR_CFG_FLASH_MARK"
#define PC_SYS_DELAY_US_TIMER htim6 // US延时定时器
#define PC_SYS_ZTICKET_TIMER TIM11 // 系统ticket定时器
#define PC_SYS_TIM_IRQ_SCHEDULER_TIMER htim7 // 中断定时器中断调度器
#if 0
#define STEPPER_MOTOR_ZERO_SENSOR SENSOR_INT0
#define STEPPER_MOTOR_FORWARD_SENSOR SENSOR_INT8
#define STEPPER_MOTOR_BACKWARD_SENSOR SENSOR_INT9
#endif
#define PC_IRQ_PREEMPTPRIORITY_DEFAULT 5
#define ID0_IO PD11
#define ID1_IO PD12
#define ID2_IO PD13
#define ID3_IO PD14
#define ID4_IO PD15
#define PC_NVS_ENABLE 1
#define PC_NVS_CONFIG_FLASH_SECTOR 8
#define SENSOR_INT0 PD0
#define SENSOR_INT1 PD1
#define SENSOR_INT2 PD2
#define SENSOR_INT3 PD3
#define SENSOR_INT4 PD4
#define SENSOR_INT5 PD5
#define SENSOR_INT6 PD6
#define SENSOR_INT7 PD7
#define SENSOR_INT8 PD8
#define SENSOR_INT9 PD9
Loading…
Cancel
Save