diff --git a/Makefile b/Makefile index db08ee493..e1ddb490b 100644 --- a/Makefile +++ b/Makefile @@ -52,7 +52,7 @@ DOCKER_CMD=$(DOCKER_BIN) -f $(DOCKER_YML) run --rm builder MKDOCS_YML=$(CURDIR)/scripts/IronOS-mkdocs.yml # supported models -MODELS=TS100 TS80 TS80P Pinecil MHP30 Pinecilv2 S60 TS101 S60P T55 # target names & dir names +MODELS=TS100 TS80 TS80P Pinecil MHP30 Pinecilv2 S60 TS101 S60P T55 Si012Pro# target names & dir names MODELS_ML=Pinecil Pinecilv2 # target names MODELS_MULTILANG=Pinecil_multi-lang Pinecilv2_multi-lang # dir names diff --git a/source/Core/BSP/Sequre/Pins.h b/source/Core/BSP/Sequre/Pins.h index f00be339f..bf8b9a29f 100644 --- a/source/Core/BSP/Sequre/Pins.h +++ b/source/Core/BSP/Sequre/Pins.h @@ -98,4 +98,35 @@ #endif // MODEL_T55 +#ifdef MODEL_Si012Pro + +#define KEY_B_Pin GPIO_PIN_1 +#define KEY_B_GPIO_Port GPIOB +#define TMP36_INPUT_Pin GPIO_PIN_5 +#define TMP36_INPUT_GPIO_Port GPIOA +#define TMP36_ADC1_CHANNEL ADC_CHANNEL_5 +#define TMP36_ADC2_CHANNEL ADC_CHANNEL_5 +#define TIP_TEMP_Pin GPIO_PIN_0 +#define TIP_TEMP_GPIO_Port GPIOA +#define TIP_TEMP_ADC1_CHANNEL ADC_CHANNEL_0 +#define TIP_TEMP_ADC2_CHANNEL ADC_CHANNEL_0 +#define VIN_Pin GPIO_PIN_4 +#define VIN_GPIO_Port GPIOA +#define VIN_ADC1_CHANNEL ADC_CHANNEL_4 +#define VIN_ADC2_CHANNEL ADC_CHANNEL_4 +#define KEY_A_Pin GPIO_PIN_0 +#define KEY_A_GPIO_Port GPIOB +#define PWM_Out_Pin GPIO_PIN_8 +#define PWM_Out_GPIO_Port GPIOB +#define PWM_Out_CHANNEL TIM_CHANNEL_3 // Timer 4; channel 3 +#define SCL2_Pin GPIO_PIN_6 +#define SCL2_GPIO_Port GPIOB +#define SDA2_Pin GPIO_PIN_7 +#define SDA2_GPIO_Port GPIOB +// Pin gets pulled high on movement +#define MOVEMENT_Pin GPIO_PIN_3 +#define MOVEMENT_GPIO_Port GPIOA + +#endif // MODEL_Si012Pro + #endif /* BSP_MINIWARE_PINS_H_ */ diff --git a/source/Core/BSP/Sequre/configuration.h b/source/Core/BSP/Sequre/configuration.h index df06f68ef..624bb57db 100644 --- a/source/Core/BSP/Sequre/configuration.h +++ b/source/Core/BSP/Sequre/configuration.h @@ -116,7 +116,7 @@ // Vin_max = (3.3*(r1+r2))/(r2) // vdiv = (32768*4)/(vin_max*10) -#if defined(MODEL_S60) + defined(MODEL_S60P) + defined(MODEL_T55) == 0 +#if defined(MODEL_S60) + defined(MODEL_S60P) + defined(MODEL_T55) + defined(MODEL_Si012Pro)== 0 #error "No model defined!" #endif @@ -239,6 +239,43 @@ #define MODEL_HAS_DCDC // We dont have DC/DC but have reallly fast PWM that gets us roughly the same place #endif /* T55 */ + +//Si012Pro +#ifdef MODEL_Si012Pro + +#define VOLTAGE_DIV 460 // Default divider scaler +#define CALIBRATION_OFFSET 200 // Default adc offset in uV +#define PID_POWER_LIMIT 70 // Sets the max pwm power limit +#define POWER_LIMIT 0 // 0 watts default limit +#define MAX_POWER_LIMIT 70 +#define POWER_LIMIT_STEPS 5 +#define OP_AMP_GAIN_STAGE 536 +#define TEMP_uV_LOOKUP_S60 +#define USB_PD_VMAX 20 // Maximum voltage for PD to negotiate +#define THERMAL_RUNAWAY_TIME_SEC 20 +#define THERMAL_RUNAWAY_TEMP_C 3 + +#define HARDWARE_MAX_WATTAGE_X10 600 + +#define TIP_THERMAL_MASS 10 // X10 watts to raise 1 deg C in 1 second +#define TIP_THERMAL_INERTIA 128 // We use a large inertia value to smooth out the drive to the tip since its stupidly sensitive + +#define TIP_RESISTANCE 62 //(actually 2.5 ish but we need to be more conservative on pwm'ing watt limit) x10 ohms + +#define OLED_128x32 +#define GPIO_VIBRATION +#define POW_PD_EXT 1 //HUSB238 +#define USB_PD_EPR_WATTAGE 0 /*No EPR*/ +#define DEBUG_POWER_MENU_BUTTON_B 1 +#define HAS_POWER_DEBUG_MENU +#define TEMP_NTC +#define I2C_SOFT_BUS_2 // For now we are doing software I2C to get around hardware chip issues +#define OLED_I2CBB2 +#define FILTER_DISPLAYED_TIP_TEMP 4 // Filtering for GUI display + +#define MODEL_HAS_DCDC // We dont have DC/DC but have reallly fast PWM that gets us roughly the same place +#endif /* Si012Pro */ + #define FLASH_LOGOADDR (0x08000000 + (62 * 1024)) #define SETTINGS_START_PAGE (0x08000000 + (63 * 1024)) diff --git a/source/Core/Drivers/Font.h b/source/Core/Drivers/Font.h index 0d0943ff3..2097dbf16 100644 --- a/source/Core/Drivers/Font.h +++ b/source/Core/Drivers/Font.h @@ -93,8 +93,8 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x30, 0x0C, 0x02, 0xF1, 0xF1, 0xF1, 0x02, 0x0C, 0x30, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xB0, 0x8C, 0x83, 0x80, 0x80, 0x80, 0x80, 0xB3, 0xB3, 0xB3, 0x80, 0x80, 0x80, 0x80, 0x83, 0x8C, 0xB0, 0xC0, 0x00, 0x00}; - #if defined(MODEL_S60) || defined(MODEL_S60P) || defined(MODEL_TS101) || defined(MODEL_T55) - #if defined(MODEL_S60) || defined(MODEL_S60P) + #if defined(MODEL_S60) || defined(MODEL_Si012Pro) || defined(MODEL_S60P) || defined(MODEL_TS101) || defined(MODEL_T55) + #if defined(MODEL_S60) || defined(MODEL_S60P) || defined(MODEL_Si012Pro) const uint8_t buttonA[] = { // width = 56 // height = 32 diff --git a/source/Makefile b/source/Makefile index 5d370b361..e63f4f922 100644 --- a/source/Makefile +++ b/source/Makefile @@ -6,7 +6,7 @@ ALL_MINIWARE_MODELS=TS100 TS80 TS80P TS101 ALL_PINECIL_MODELS=Pinecil ALL_PINECIL_V2_MODELS=Pinecilv2 ALL_MHP30_MODELS=MHP30 -ALL_SEQURE_MODELS=S60 S60P T55 +ALL_SEQURE_MODELS=S60 S60P T55 Si012Pro ALL_MODELS=$(ALL_MINIWARE_MODELS) $(ALL_PINECIL_MODELS) $(ALL_MHP30_MODELS) $(ALL_PINECIL_V2_MODELS) $(ALL_SEQURE_MODELS) ifneq ($(model),$(filter $(model),$(ALL_MODELS))) @@ -91,7 +91,7 @@ DEVICE_DFU_ADDRESS=0x08008000 else flash_size=62k bootldr_size=0x4000 -DEVICE_DFU_ADDRESS=0x08004000 +DEVICE_DFU_ADDRESS=0x08004C00 endif DEV_GLOBAL_DEFS=-D STM32F103T8Ux \ @@ -147,8 +147,8 @@ bootldr_size=0x5000 DEVICE_DFU_ADDRESS=0x08005000 else # S60 or T55 -bootldr_size=0x4400 -DEVICE_DFU_ADDRESS=0x08004400 +bootldr_size=0x4C00 +DEVICE_DFU_ADDRESS=0x08004C00 endif DEVICE_DFU_VID_PID=0x1209:0xDB42 endif # ALL_SEQURE_MODELS diff --git a/source/build.sh b/source/build.sh index d831e4e57..7d3db7eec 100755 --- a/source/build.sh +++ b/source/build.sh @@ -6,7 +6,7 @@ TRANSLATION_DIR="../Translations" # AVAILABLE_LANGUAGES will be calculating according to json files in $TRANSLATION_DIR AVAILABLE_LANGUAGES=() BUILD_LANGUAGES=() -AVAILABLE_MODELS=("TS100" "TS80" "TS80P" "Pinecil" "MHP30" "Pinecilv2" "S60" "S60P" "T55" "TS101") +AVAILABLE_MODELS=("TS100" "TS80" "TS80P" "Pinecil" "MHP30" "Pinecilv2" "S60" "S60P" "Si012Pro" "T55" "TS101") BUILD_MODELS=() OPTIONS=()