Browse Source

update

master
zhaohe 2 years ago
parent
commit
434b9e9aed
  1. 5
      Core/Inc/tim.h
  2. 12
      Core/Src/gpio.c
  3. 1
      Core/Src/main.c
  4. 104
      Core/Src/tim.c
  5. 59
      graphite_digester_io_board_v2.ioc
  6. 2
      sdk
  7. 85
      usrc/main.cpp
  8. 25
      usrc/temperature_sensor.cpp
  9. 53
      usrc/temperature_sensor.hpp

5
Core/Inc/tim.h

@ -34,6 +34,8 @@ extern "C" {
extern TIM_HandleTypeDef htim1;
extern TIM_HandleTypeDef htim2;
extern TIM_HandleTypeDef htim3;
extern TIM_HandleTypeDef htim6;
@ -45,10 +47,13 @@ extern TIM_HandleTypeDef htim7;
/* USER CODE END Private defines */
void MX_TIM1_Init(void);
void MX_TIM2_Init(void);
void MX_TIM3_Init(void);
void MX_TIM6_Init(void);
void MX_TIM7_Init(void);
void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
/* USER CODE BEGIN Prototypes */
/* USER CODE END Prototypes */

12
Core/Src/gpio.c

@ -76,12 +76,12 @@ void MX_GPIO_Init(void)
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
/*Configure GPIO pins : PA0 PA1 PA2 PA3
PA4 PA5 PA6 PA7
PA8 PA15 */
GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3
|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7
|GPIO_PIN_8|GPIO_PIN_15;
/*Configure GPIO pins : PA0 PA2 PA3 PA4
PA5 PA6 PA7 PA8
PA15 */
GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4
|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8
|GPIO_PIN_15;
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

1
Core/Src/main.c

@ -104,6 +104,7 @@ int main(void)
MX_CAN1_Init();
MX_USART3_UART_Init();
MX_ADC1_Init();
MX_TIM2_Init();
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */

104
Core/Src/tim.c

@ -25,6 +25,7 @@
/* USER CODE END 0 */
TIM_HandleTypeDef htim1;
TIM_HandleTypeDef htim2;
TIM_HandleTypeDef htim3;
TIM_HandleTypeDef htim6;
TIM_HandleTypeDef htim7;
@ -70,6 +71,50 @@ void MX_TIM1_Init(void)
/* USER CODE END TIM1_Init 2 */
}
/* TIM2 init function */
void MX_TIM2_Init(void)
{
/* USER CODE BEGIN TIM2_Init 0 */
/* USER CODE END TIM2_Init 0 */
TIM_MasterConfigTypeDef sMasterConfig = {0};
TIM_OC_InitTypeDef sConfigOC = {0};
/* USER CODE BEGIN TIM2_Init 1 */
/* USER CODE END TIM2_Init 1 */
htim2.Instance = TIM2;
htim2.Init.Prescaler = 0;
htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
htim2.Init.Period = 4294967295;
htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
if (HAL_TIM_PWM_Init(&htim2) != HAL_OK)
{
Error_Handler();
}
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
{
Error_Handler();
}
sConfigOC.OCMode = TIM_OCMODE_PWM1;
sConfigOC.Pulse = 0;
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN TIM2_Init 2 */
/* USER CODE END TIM2_Init 2 */
HAL_TIM_MspPostInit(&htim2);
}
/* TIM3 init function */
void MX_TIM3_Init(void)
{
@ -238,6 +283,49 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
}
}
void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef* tim_pwmHandle)
{
if(tim_pwmHandle->Instance==TIM2)
{
/* USER CODE BEGIN TIM2_MspInit 0 */
/* USER CODE END TIM2_MspInit 0 */
/* TIM2 clock enable */
__HAL_RCC_TIM2_CLK_ENABLE();
/* USER CODE BEGIN TIM2_MspInit 1 */
/* USER CODE END TIM2_MspInit 1 */
}
}
void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
if(timHandle->Instance==TIM2)
{
/* USER CODE BEGIN TIM2_MspPostInit 0 */
/* USER CODE END TIM2_MspPostInit 0 */
__HAL_RCC_GPIOA_CLK_ENABLE();
/**TIM2 GPIO Configuration
PA1 ------> TIM2_CH2
*/
GPIO_InitStruct.Pin = GPIO_PIN_1;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Alternate = GPIO_AF1_TIM2;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/* USER CODE BEGIN TIM2_MspPostInit 1 */
/* USER CODE END TIM2_MspPostInit 1 */
}
}
void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle)
{
@ -296,6 +384,22 @@ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle)
}
}
void HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef* tim_pwmHandle)
{
if(tim_pwmHandle->Instance==TIM2)
{
/* USER CODE BEGIN TIM2_MspDeInit 0 */
/* USER CODE END TIM2_MspDeInit 0 */
/* Peripheral clock disable */
__HAL_RCC_TIM2_CLK_DISABLE();
/* USER CODE BEGIN TIM2_MspDeInit 1 */
/* USER CODE END TIM2_MspDeInit 1 */
}
}
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */

59
graphite_digester_io_board_v2.ioc

@ -81,11 +81,12 @@ Mcu.CPN=STM32F407VET6
Mcu.Family=STM32F4
Mcu.IP0=ADC1
Mcu.IP1=CAN1
Mcu.IP10=TIM3
Mcu.IP11=TIM6
Mcu.IP12=TIM7
Mcu.IP13=USART1
Mcu.IP14=USART3
Mcu.IP10=TIM2
Mcu.IP11=TIM3
Mcu.IP12=TIM6
Mcu.IP13=TIM7
Mcu.IP14=USART1
Mcu.IP15=USART3
Mcu.IP2=CRC
Mcu.IP3=DMA
Mcu.IP4=FREERTOS
@ -94,33 +95,34 @@ Mcu.IP6=RCC
Mcu.IP7=RNG
Mcu.IP8=SYS
Mcu.IP9=TIM1
Mcu.IPNb=15
Mcu.IPNb=16
Mcu.Name=STM32F407V(E-G)Tx
Mcu.Package=LQFP100
Mcu.Pin0=PH0-OSC_IN
Mcu.Pin1=PH1-OSC_OUT
Mcu.Pin10=PA10
Mcu.Pin11=PA11
Mcu.Pin12=PA12
Mcu.Pin13=PA13
Mcu.Pin14=PA14
Mcu.Pin15=VP_CRC_VS_CRC
Mcu.Pin16=VP_FREERTOS_VS_CMSIS_V1
Mcu.Pin17=VP_RNG_VS_RNG
Mcu.Pin18=VP_SYS_VS_tim11
Mcu.Pin19=VP_TIM1_VS_ClockSourceINT
Mcu.Pin10=PA9
Mcu.Pin11=PA10
Mcu.Pin12=PA11
Mcu.Pin13=PA12
Mcu.Pin14=PA13
Mcu.Pin15=PA14
Mcu.Pin16=VP_CRC_VS_CRC
Mcu.Pin17=VP_FREERTOS_VS_CMSIS_V1
Mcu.Pin18=VP_RNG_VS_RNG
Mcu.Pin19=VP_SYS_VS_tim11
Mcu.Pin2=PC0
Mcu.Pin20=VP_TIM3_VS_ClockSourceINT
Mcu.Pin21=VP_TIM6_VS_ClockSourceINT
Mcu.Pin22=VP_TIM7_VS_ClockSourceINT
Mcu.Pin20=VP_TIM1_VS_ClockSourceINT
Mcu.Pin21=VP_TIM3_VS_ClockSourceINT
Mcu.Pin22=VP_TIM6_VS_ClockSourceINT
Mcu.Pin23=VP_TIM7_VS_ClockSourceINT
Mcu.Pin3=PC1
Mcu.Pin4=PC2
Mcu.Pin5=PC3
Mcu.Pin6=PC5
Mcu.Pin7=PB10
Mcu.Pin8=PB11
Mcu.Pin9=PA9
Mcu.PinsNb=23
Mcu.Pin6=PA1
Mcu.Pin7=PC5
Mcu.Pin8=PB10
Mcu.Pin9=PB11
Mcu.PinsNb=24
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32F407VETx
@ -155,6 +157,8 @@ NVIC.TimeBaseIP=TIM11
NVIC.USART1_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
NVIC.USART3_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false
PA1.Locked=true
PA1.Signal=S_TIM2_CH2
PA10.Locked=true
PA10.Mode=Asynchronous
PA10.Signal=USART1_RX
@ -219,7 +223,7 @@ ProjectManager.ToolChainLocation=
ProjectManager.UAScriptAfterPath=
ProjectManager.UAScriptBeforePath=
ProjectManager.UnderRoot=true
ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_USART1_UART_Init-USART1-false-HAL-true,5-MX_TIM3_Init-TIM3-false-HAL-true,6-MX_CRC_Init-CRC-false-HAL-true,7-MX_RNG_Init-RNG-false-HAL-true,8-MX_TIM7_Init-TIM7-false-HAL-true,9-MX_TIM6_Init-TIM6-false-HAL-true,10-MX_TIM1_Init-TIM1-false-HAL-true,11-MX_CAN1_Init-CAN1-false-HAL-true,12-MX_USART3_UART_Init-USART3-false-HAL-true
ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_USART1_UART_Init-USART1-false-HAL-true,5-MX_TIM3_Init-TIM3-false-HAL-true,6-MX_CRC_Init-CRC-false-HAL-true,7-MX_RNG_Init-RNG-false-HAL-true,8-MX_TIM7_Init-TIM7-false-HAL-true,9-MX_TIM6_Init-TIM6-false-HAL-true,10-MX_TIM1_Init-TIM1-false-HAL-true,11-MX_CAN1_Init-CAN1-false-HAL-true,12-MX_USART3_UART_Init-USART3-false-HAL-true,13-MX_ADC1_Init-ADC1-false-HAL-true
RCC.48MHZClocksFreq_Value=48000000
RCC.AHBFreq_Value=144000000
RCC.APB1CLKDivider=RCC_HCLK_DIV4
@ -270,9 +274,14 @@ SH.ADCx_IN13.0=ADC1_IN13,IN13
SH.ADCx_IN13.ConfNb=1
SH.ADCx_IN15.0=ADC1_IN15,IN15
SH.ADCx_IN15.ConfNb=1
SH.S_TIM2_CH2.0=TIM2_CH2,PWM Generation2 CH2
SH.S_TIM2_CH2.ConfNb=1
TIM1.IPParameters=Period,Prescaler
TIM1.Period=9999
TIM1.Prescaler=143
TIM2.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE
TIM2.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2
TIM2.IPParameters=Channel-PWM Generation2 CH2,AutoReloadPreload
TIM3.IPParameters=Prescaler,Period
TIM3.Period=9999
TIM3.Prescaler=71

2
sdk

@ -1 +1 @@
Subproject commit cc8a5b4f9af4e1111cd51e0242dbf9172298db3a
Subproject commit 57cf05c056145c69697f94f5320581ad1dcb8cc3

85
usrc/main.cpp

@ -13,7 +13,6 @@
#include "sdk\components\sensors\m3078\m3078_code_scaner.hpp"
#include "sdk\components\tmc\ic\ztmc4361A.hpp"
#include "sdk\components\tmc\ic\ztmc5130.hpp"
#include "temperature_sensor.hpp"
#define TAG "main"
using namespace iflytop;
@ -52,38 +51,82 @@ static int32_t getDeviceId() {
/*******************************************************************************
* INIT_SUBMODULE *
*******************************************************************************/
void nvs_init_cb() {}
TemperatureSensor m_temperature_sensor[8];
static void initsubmodule() {
osDelay(1000);
{
m_temperature_sensor[0].initialize(&hadc1, ADC_CHANNEL_10);
m_temperature_sensor[1].initialize(&hadc1, ADC_CHANNEL_11);
m_temperature_sensor[2].initialize(&hadc1, ADC_CHANNEL_12);
m_temperature_sensor[3].initialize(&hadc1, ADC_CHANNEL_13);
m_temperature_sensor[4].initialize(&hadc1, ADC_CHANNEL_14);
class PWMCtrler : public ZIPWMCtrl {
ZPWMGenerator pwm;
int32_t freq;
int32_t duty;
int32_t state;
public:
void initialize() { pwm.initialize(&htim2, TIM_CHANNEL_2, 25000, 1); }
virtual int32_t set_pwm_duty(int32_t duty) {
pwm.startPWM(duty);
return 0;
}
virtual int32_t set_pwm_freq(int32_t freq) {}
virtual int32_t get_pwm_duty() {}
virtual int32_t get_pwm_freq() {}
};
PWMCtrler pwmCtrler;
void nvs_init_cb() {}
static void initsubmodule() {
osDelay(1000);
{ pwmCtrler.initialize(); }
{}
}
/*******************************************************************************
* MAIN *
*******************************************************************************/
void umain() {
ZCancmderSubboardIniter::cfg_t cfg = //
{
.deviceId = getDeviceId(),
.input_gpio = {},
.output_gpio = {},
.temperature_sensor =
.deviceId = getDeviceId(),
.input_gpio =
{
{.pin = PD0, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = false},
{.pin = PD1, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = false},
{.pin = PD2, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = false},
{.pin = PD3, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = false},
{.pin = PD4, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = false},
{.pin = PD5, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = false},
{.pin = PD6, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = false},
{.pin = PD7, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = false},
{.pin = PD8, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = false},
{.pin = PD9, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = false},
{.pin = PD10, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = false},
{.pin = PD11, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = false},
{.pin = PD12, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = false},
{.pin = PD13, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = false},
{.pin = PD14, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = false},
{.pin = PD15, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = false},
},
.output_gpio =
{
&m_temperature_sensor[0],
&m_temperature_sensor[1],
&m_temperature_sensor[2],
&m_temperature_sensor[3],
&m_temperature_sensor[4],
{.pin = PE7, .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
{.pin = PE8, .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
{.pin = PE9, .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
{.pin = PE10, .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
{.pin = PE11, .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
{.pin = PE12, .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
{.pin = PE13, .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
{.pin = PE14, .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
{.pin = PE15, .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
{.pin = PB0, .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
{.pin = PB1, .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
{.pin = PB2, .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
{.pin = PB3, .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
{.pin = PB4, .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
{.pin = PB5, .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
{.pin = PB6, .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
//
{.pin = PC6, .mode = ZGPIO::kMode_pulldown, .mirror = false, .initLevel = false, .log_when_setstate = false},
{.pin = PC7, .mode = ZGPIO::kMode_pulldown, .mirror = false, .initLevel = false, .log_when_setstate = false},
{.pin = PC8, .mode = ZGPIO::kMode_pulldown, .mirror = false, .initLevel = false, .log_when_setstate = false},
},
.pwmctrl = &pwmCtrler,
};
initer.init(&cfg);
initsubmodule();

25
usrc/temperature_sensor.cpp

@ -1,25 +0,0 @@
#include "temperature_sensor.hpp"
using namespace iflytop;
void TemperatureSensor::initialize(ADC_HandleTypeDef* hadc1, int32_t channel) { //
m_adc.initialize(hadc1, channel);
}
int32_t TemperatureSensor::getTemperature(int32_t& sensorval) {
// 4000ma->20ma ==> 0->350
// V=150*I
// I=V/150
int32_t adcval = 0;
int ret = m_adc.get_adc_value(adcval);
float v = adcval * 3.3 / 4096;
float I = v / 150.0 * 1000;
int32_t temperature001 = (I - 20) * (4000 - 20) * 350 * 100; // 0.01¶È
if (temperature001 < 0) {
temperature001 = 0;
}
sensorval = temperature001;
return ret;
}

53
usrc/temperature_sensor.hpp

@ -1,53 +0,0 @@
//
// Created by zwsd
//
#pragma once
#include "sdk/os/zos.hpp"
//
#include "sdk/chip/api/zi_temperature.hpp"
#include "sdk\chip\api\zi_adc.hpp"
#include "sdk\components\hardware\adc\z_simple_adc.hpp"
#include "sdk\components\zprotocols\zcancmder_v2\api\api.hpp"
namespace iflytop {
using namespace std;
class TemperatureSensor : public ZITemperatureSensor {
public:
ZADC m_adc;
ADC_HandleTypeDef* hadc1;
int32_t channel;
/**
* @brief
*
* @param hadc1 adc handle
* @param channel
* ADC_CHANNEL_0
* ADC_CHANNEL_1
* ADC_CHANNEL_2
* ADC_CHANNEL_3
* ADC_CHANNEL_4
* ADC_CHANNEL_5
* ADC_CHANNEL_6
* ADC_CHANNEL_7
* ADC_CHANNEL_8
* ADC_CHANNEL_9
* ADC_CHANNEL_10
* ADC_CHANNEL_11
* ADC_CHANNEL_12
* ADC_CHANNEL_13
* ADC_CHANNEL_14
* ADC_CHANNEL_15
* ADC_CHANNEL_16
* ADC_CHANNEL_17
* ADC_CHANNEL_18
*/
void initialize(ADC_HandleTypeDef* hadc1, int32_t channel);
virtual int32_t getTemperature(int32_t& sensorval);
};
} // namespace iflytop
Loading…
Cancel
Save