├── .gitignore ├── Firmware ├── For HW version 10 │ ├── .cproject │ ├── .mxproject │ ├── .project │ ├── .settings │ │ ├── language.settings.xml │ │ ├── org.eclipse.cdt.codan.core.prefs │ │ ├── org.eclipse.cdt.core.prefs │ │ └── stm32cubeide.project.prefs │ ├── Core │ │ ├── Inc │ │ │ ├── main.h │ │ │ ├── stm32f0xx_hal_conf.h │ │ │ └── stm32f0xx_it.h │ │ ├── Src │ │ │ ├── main.c │ │ │ ├── stm32f0xx_hal_msp.c │ │ │ ├── stm32f0xx_it.c │ │ │ ├── syscalls.c │ │ │ ├── sysmem.c │ │ │ └── system_stm32f0xx.c │ │ └── Startup │ │ │ └── startup_stm32f072cbux.s │ ├── Drivers │ │ ├── CMSIS │ │ │ ├── Device │ │ │ │ └── ST │ │ │ │ │ └── STM32F0xx │ │ │ │ │ └── Include │ │ │ │ │ ├── stm32f072xb.h │ │ │ │ │ ├── stm32f0xx.h │ │ │ │ │ └── system_stm32f0xx.h │ │ │ └── Include │ │ │ │ ├── cmsis_armcc.h │ │ │ │ ├── cmsis_armclang.h │ │ │ │ ├── cmsis_compiler.h │ │ │ │ ├── cmsis_gcc.h │ │ │ │ ├── cmsis_iccarm.h │ │ │ │ ├── cmsis_version.h │ │ │ │ ├── core_armv8mbl.h │ │ │ │ ├── core_armv8mml.h │ │ │ │ ├── core_cm0.h │ │ │ │ ├── core_cm0plus.h │ │ │ │ ├── core_cm1.h │ │ │ │ ├── core_cm23.h │ │ │ │ ├── core_cm3.h │ │ │ │ ├── core_cm33.h │ │ │ │ ├── core_cm4.h │ │ │ │ ├── core_cm7.h │ │ │ │ ├── core_sc000.h │ │ │ │ ├── core_sc300.h │ │ │ │ ├── mpu_armv7.h │ │ │ │ ├── mpu_armv8.h │ │ │ │ └── tz_context.h │ │ └── STM32F0xx_HAL_Driver │ │ │ ├── Inc │ │ │ ├── Legacy │ │ │ │ └── stm32_hal_legacy.h │ │ │ ├── stm32f0xx_hal.h │ │ │ ├── stm32f0xx_hal_cortex.h │ │ │ ├── stm32f0xx_hal_dac.h │ │ │ ├── stm32f0xx_hal_dac_ex.h │ │ │ ├── stm32f0xx_hal_def.h │ │ │ ├── stm32f0xx_hal_dma.h │ │ │ ├── stm32f0xx_hal_dma_ex.h │ │ │ ├── stm32f0xx_hal_exti.h │ │ │ ├── stm32f0xx_hal_flash.h │ │ │ ├── stm32f0xx_hal_flash_ex.h │ │ │ ├── stm32f0xx_hal_gpio.h │ │ │ ├── stm32f0xx_hal_gpio_ex.h │ │ │ ├── stm32f0xx_hal_i2c.h │ │ │ ├── stm32f0xx_hal_i2c_ex.h │ │ │ ├── stm32f0xx_hal_pcd.h │ │ │ ├── stm32f0xx_hal_pcd_ex.h │ │ │ ├── stm32f0xx_hal_pwr.h │ │ │ ├── stm32f0xx_hal_pwr_ex.h │ │ │ ├── stm32f0xx_hal_rcc.h │ │ │ ├── stm32f0xx_hal_rcc_ex.h │ │ │ ├── stm32f0xx_hal_tim.h │ │ │ ├── stm32f0xx_hal_tim_ex.h │ │ │ └── stm32f0xx_ll_usb.h │ │ │ └── Src │ │ │ ├── stm32f0xx_hal.c │ │ │ ├── stm32f0xx_hal_cortex.c │ │ │ ├── stm32f0xx_hal_dac.c │ │ │ ├── stm32f0xx_hal_dac_ex.c │ │ │ ├── stm32f0xx_hal_dma.c │ │ │ ├── stm32f0xx_hal_exti.c │ │ │ ├── stm32f0xx_hal_flash.c │ │ │ ├── stm32f0xx_hal_flash_ex.c │ │ │ ├── stm32f0xx_hal_gpio.c │ │ │ ├── stm32f0xx_hal_i2c.c │ │ │ ├── stm32f0xx_hal_i2c_ex.c │ │ │ ├── stm32f0xx_hal_pcd.c │ │ │ ├── stm32f0xx_hal_pcd_ex.c │ │ │ ├── stm32f0xx_hal_pwr.c │ │ │ ├── stm32f0xx_hal_pwr_ex.c │ │ │ ├── stm32f0xx_hal_rcc.c │ │ │ ├── stm32f0xx_hal_rcc_ex.c │ │ │ ├── stm32f0xx_hal_tim.c │ │ │ ├── stm32f0xx_hal_tim_ex.c │ │ │ └── stm32f0xx_ll_usb.c │ ├── Middlewares │ │ └── ST │ │ │ └── STM32_USB_Device_Library │ │ │ ├── Class │ │ │ └── CDC │ │ │ │ ├── Inc │ │ │ │ └── usbd_cdc.h │ │ │ │ └── Src │ │ │ │ └── usbd_cdc.c │ │ │ └── Core │ │ │ ├── Inc │ │ │ ├── usbd_core.h │ │ │ ├── usbd_ctlreq.h │ │ │ ├── usbd_def.h │ │ │ └── usbd_ioreq.h │ │ │ └── Src │ │ │ ├── usbd_core.c │ │ │ ├── usbd_ctlreq.c │ │ │ └── usbd_ioreq.c │ ├── README.md │ ├── STM32F072CBUX_FLASH.ld │ ├── USB_DEVICE │ │ ├── App │ │ │ ├── usb_device.c │ │ │ ├── usb_device.h │ │ │ ├── usbd_cdc_if.c │ │ │ ├── usbd_cdc_if.h │ │ │ ├── usbd_desc.c │ │ │ └── usbd_desc.h │ │ └── Target │ │ │ ├── usbd_conf.c │ │ │ └── usbd_conf.h │ ├── calibration_graphs │ │ ├── .gitignore │ │ ├── currentlimit_graph.png │ │ ├── voltageadc_graph.png │ │ ├── voltagedac_graph.png │ │ ├── zerocurrent.png │ │ └── zerocurrent_graph.png │ ├── ee │ │ ├── ee.c │ │ ├── ee.h │ │ └── eeConfig.h │ ├── mx.scratch │ └── uSMU_v10.ioc └── For HW version 5 │ ├── .cproject │ ├── .mxproject │ ├── .project │ ├── .settings │ ├── language.settings.xml │ ├── org.eclipse.cdt.codan.core.prefs │ └── stm32cubeide.project.prefs │ ├── Core │ ├── Inc │ │ ├── main.h │ │ ├── stm32f0xx_hal_conf.h │ │ └── stm32f0xx_it.h │ ├── Src │ │ ├── main.c │ │ ├── stm32f0xx_hal_msp.c │ │ ├── stm32f0xx_it.c │ │ ├── syscalls.c │ │ ├── sysmem.c │ │ └── system_stm32f0xx.c │ └── Startup │ │ └── startup_stm32f072c8ux.s │ ├── Drivers │ ├── CMSIS │ │ ├── Device │ │ │ └── ST │ │ │ │ └── STM32F0xx │ │ │ │ └── Include │ │ │ │ ├── stm32f072xb.h │ │ │ │ ├── stm32f0xx.h │ │ │ │ └── system_stm32f0xx.h │ │ └── Include │ │ │ ├── cmsis_armcc.h │ │ │ ├── cmsis_armclang.h │ │ │ ├── cmsis_compiler.h │ │ │ ├── cmsis_gcc.h │ │ │ ├── cmsis_iccarm.h │ │ │ ├── cmsis_version.h │ │ │ ├── core_armv8mbl.h │ │ │ ├── core_armv8mml.h │ │ │ ├── core_cm0.h │ │ │ ├── core_cm0plus.h │ │ │ ├── core_cm1.h │ │ │ ├── core_cm23.h │ │ │ ├── core_cm3.h │ │ │ ├── core_cm33.h │ │ │ ├── core_cm4.h │ │ │ ├── core_cm7.h │ │ │ ├── core_sc000.h │ │ │ ├── core_sc300.h │ │ │ ├── mpu_armv7.h │ │ │ ├── mpu_armv8.h │ │ │ └── tz_context.h │ └── STM32F0xx_HAL_Driver │ │ ├── Inc │ │ ├── Legacy │ │ │ └── stm32_hal_legacy.h │ │ ├── stm32f0xx_hal.h │ │ ├── stm32f0xx_hal_cortex.h │ │ ├── stm32f0xx_hal_dac.h │ │ ├── stm32f0xx_hal_dac_ex.h │ │ ├── stm32f0xx_hal_def.h │ │ ├── stm32f0xx_hal_dma.h │ │ ├── stm32f0xx_hal_dma_ex.h │ │ ├── stm32f0xx_hal_exti.h │ │ ├── stm32f0xx_hal_flash.h │ │ ├── stm32f0xx_hal_flash_ex.h │ │ ├── stm32f0xx_hal_gpio.h │ │ ├── stm32f0xx_hal_gpio_ex.h │ │ ├── stm32f0xx_hal_i2c.h │ │ ├── stm32f0xx_hal_i2c_ex.h │ │ ├── stm32f0xx_hal_pcd.h │ │ ├── stm32f0xx_hal_pcd_ex.h │ │ ├── stm32f0xx_hal_pwr.h │ │ ├── stm32f0xx_hal_pwr_ex.h │ │ ├── stm32f0xx_hal_rcc.h │ │ ├── stm32f0xx_hal_rcc_ex.h │ │ ├── stm32f0xx_hal_tim.h │ │ ├── stm32f0xx_hal_tim_ex.h │ │ └── stm32f0xx_ll_usb.h │ │ └── Src │ │ ├── stm32f0xx_hal.c │ │ ├── stm32f0xx_hal_cortex.c │ │ ├── stm32f0xx_hal_dac.c │ │ ├── stm32f0xx_hal_dac_ex.c │ │ ├── stm32f0xx_hal_dma.c │ │ ├── stm32f0xx_hal_exti.c │ │ ├── stm32f0xx_hal_flash.c │ │ ├── stm32f0xx_hal_flash_ex.c │ │ ├── stm32f0xx_hal_gpio.c │ │ ├── stm32f0xx_hal_i2c.c │ │ ├── stm32f0xx_hal_i2c_ex.c │ │ ├── stm32f0xx_hal_pcd.c │ │ ├── stm32f0xx_hal_pcd_ex.c │ │ ├── stm32f0xx_hal_pwr.c │ │ ├── stm32f0xx_hal_pwr_ex.c │ │ ├── stm32f0xx_hal_rcc.c │ │ ├── stm32f0xx_hal_rcc_ex.c │ │ ├── stm32f0xx_hal_tim.c │ │ ├── stm32f0xx_hal_tim_ex.c │ │ └── stm32f0xx_ll_usb.c │ ├── Middlewares │ └── ST │ │ └── STM32_USB_Device_Library │ │ ├── Class │ │ └── CDC │ │ │ ├── Inc │ │ │ └── usbd_cdc.h │ │ │ └── Src │ │ │ └── usbd_cdc.c │ │ └── Core │ │ ├── Inc │ │ ├── usbd_core.h │ │ ├── usbd_ctlreq.h │ │ ├── usbd_def.h │ │ └── usbd_ioreq.h │ │ └── Src │ │ ├── usbd_core.c │ │ ├── usbd_ctlreq.c │ │ └── usbd_ioreq.c │ ├── README.md │ ├── STM32F072C8UX_FLASH.ld │ ├── USB_DEVICE │ ├── App │ │ ├── usb_device.c │ │ ├── usb_device.h │ │ ├── usbd_cdc_if.c │ │ ├── usbd_cdc_if.h │ │ ├── usbd_desc.c │ │ └── usbd_desc.h │ └── Target │ │ ├── usbd_conf.c │ │ └── usbd_conf.h │ ├── uSMU Debug.cfg │ ├── uSMU Debug.launch │ └── uSMU.ioc ├── Hardware ├── Version 10 │ ├── Gerber files │ │ ├── uSMU_v10-B_Cu.gbr │ │ ├── uSMU_v10-B_Mask.gbr │ │ ├── uSMU_v10-B_Paste.gbr │ │ ├── uSMU_v10-B_Silkscreen.gbr │ │ ├── uSMU_v10-Edge_Cuts.gbr │ │ ├── uSMU_v10-F_Cu.gbr │ │ ├── uSMU_v10-F_Mask.gbr │ │ ├── uSMU_v10-F_Paste.gbr │ │ ├── uSMU_v10-F_Silkscreen.gbr │ │ ├── uSMU_v10-Ground.gbr │ │ ├── uSMU_v10-NPTH-drl_map.ps │ │ ├── uSMU_v10-NPTH.drl │ │ ├── uSMU_v10-PTH-drl_map.ps │ │ ├── uSMU_v10-PTH.drl │ │ ├── uSMU_v10-Power.gbr │ │ └── uSMU_v10-job.gbrjob │ ├── Interactive BOM │ │ └── uSMU_v10_BOM.html │ ├── fp-info-cache │ ├── fp-lib-table │ ├── sym-lib-table │ ├── uSMU_v10.kicad_pcb │ ├── uSMU_v10.kicad_pro │ ├── uSMU_v10.kicad_sch │ ├── uSMU_v10.kicad_sym │ ├── uSMU_v10.png │ ├── uSMU_v10.pretty │ │ ├── E6C0606RGBC3UDA.kicad_mod │ │ └── TYPE-C-31-M-12.kicad_mod │ ├── uSMU_v10_BOM.csv │ └── uSMU_v10_schematic.pdf ├── Version 10r1 │ ├── Gerber files │ │ ├── Gerber files.zip │ │ ├── uSMU_v10-B_Cu.gbr │ │ ├── uSMU_v10-B_Mask.gbr │ │ ├── uSMU_v10-B_Paste.gbr │ │ ├── uSMU_v10-B_Silkscreen.gbr │ │ ├── uSMU_v10-Edge_Cuts.gbr │ │ ├── uSMU_v10-F_Cu.gbr │ │ ├── uSMU_v10-F_Mask.gbr │ │ ├── uSMU_v10-F_Paste.gbr │ │ ├── uSMU_v10-F_Silkscreen.gbr │ │ ├── uSMU_v10-Ground.gbr │ │ ├── uSMU_v10-NPTH-drl_map.ps │ │ ├── uSMU_v10-NPTH.drl │ │ ├── uSMU_v10-PTH-drl_map.ps │ │ ├── uSMU_v10-PTH.drl │ │ ├── uSMU_v10-Power.gbr │ │ └── uSMU_v10-job.gbrjob │ ├── Interactive BOM │ │ └── uSMU_v10_BOM.html │ ├── uSMU_v10-backups │ │ ├── uSMU_v10-2022-03-21_154303.zip │ │ └── uSMU_v10-2022-03-21_154837.zip │ ├── uSMU_v10.kicad_pcb │ ├── uSMU_v10.kicad_prl │ ├── uSMU_v10.kicad_pro │ ├── uSMU_v10.kicad_sch │ ├── uSMU_v10.kicad_sym │ ├── uSMU_v10.pretty │ │ ├── E6C0606RGBC3UDA.kicad_mod │ │ └── TYPE-C-31-M-12.kicad_mod │ ├── uSMU_v10_BOM.csv │ └── uSMU_v10_schematic.pdf └── Version 5 │ ├── Gerber files │ ├── uSMU_v05-B_Cu.gbr │ ├── uSMU_v05-B_Mask.gbr │ ├── uSMU_v05-B_Paste.gbr │ ├── uSMU_v05-B_Silkscreen.gbr │ ├── uSMU_v05-Edge_Cuts.gbr │ ├── uSMU_v05-F_Cu.gbr │ ├── uSMU_v05-F_Mask.gbr │ ├── uSMU_v05-F_Paste.gbr │ ├── uSMU_v05-F_Silkscreen.gbr │ ├── uSMU_v05-Ground.gbr │ ├── uSMU_v05-NPTH-drl_map.ps │ ├── uSMU_v05-NPTH.drl │ ├── uSMU_v05-PTH-drl_map.ps │ ├── uSMU_v05-PTH.drl │ ├── uSMU_v05-Power.gbr │ └── uSMU_v05-job.gbrjob │ ├── Interactive BOM │ └── Interactive_BOM.html │ ├── fp-lib-table │ ├── sym-lib-table │ ├── uSMU_v05.kicad_pcb │ ├── uSMU_v05.kicad_prl │ ├── uSMU_v05.kicad_pro │ ├── uSMU_v05.kicad_sch │ ├── uSMU_v05.kicad_sym │ ├── uSMU_v05.png │ ├── uSMU_v05.pretty │ ├── CUI_PDM2-S5-D7-D.kicad_mod │ ├── E6C0606RGBC3UDA.kicad_mod │ ├── Linear_FE_TSSOP20.kicad_mod │ ├── Molex_105450-0101.kicad_mod │ ├── SOIC-20.kicad_mod │ ├── Seeeduino XIAO-MOUDLE14P-2.54-21X17.8MM.kicad_mod │ └── ksclogo.kicad_mod │ └── uSMU_v05_schematic.pdf ├── README.md ├── licence.txt └── usmu_tracer.png /.gitignore: -------------------------------------------------------------------------------- 1 | /Firmware/For HW version 10/Debug 2 | -------------------------------------------------------------------------------- /Firmware/For HW version 10/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | uSMU_v10 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.cdt.managedbuilder.core.genmakebuilder 10 | clean,full,incremental, 11 | 12 | 13 | 14 | 15 | org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder 16 | full,incremental, 17 | 18 | 19 | 20 | 21 | 22 | com.st.stm32cube.ide.mcu.MCUProjectNature 23 | org.eclipse.cdt.core.cnature 24 | com.st.stm32cube.ide.mcu.MCUCubeIdeServicesRevAev2ProjectNature 25 | com.st.stm32cube.ide.mcu.MCUCubeProjectNature 26 | com.st.stm32cube.ide.mcu.MCUAdvancedStructureProjectNature 27 | com.st.stm32cube.ide.mcu.MCUEndUserDisabledTrustZoneProjectNature 28 | com.st.stm32cube.ide.mcu.MCUSingleCpuProjectNature 29 | com.st.stm32cube.ide.mcu.MCURootProjectNature 30 | org.eclipse.cdt.managedbuilder.core.managedBuildNature 31 | org.eclipse.cdt.managedbuilder.core.ScannerConfigNature 32 | 33 | 34 | -------------------------------------------------------------------------------- /Firmware/For HW version 10/.settings/language.settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /Firmware/For HW version 10/.settings/org.eclipse.cdt.core.prefs: -------------------------------------------------------------------------------- 1 | doxygen/doxygen_new_line_after_brief=true 2 | doxygen/doxygen_use_brief_tag=false 3 | doxygen/doxygen_use_javadoc_tags=true 4 | doxygen/doxygen_use_pre_tag=false 5 | doxygen/doxygen_use_structural_commands=false 6 | eclipse.preferences.version=1 7 | -------------------------------------------------------------------------------- /Firmware/For HW version 10/.settings/stm32cubeide.project.prefs: -------------------------------------------------------------------------------- 1 | 2F62501ED4689FB349E356AB974DBE57=E807F1F7DE5EA78A4944F4A09A060BA0 2 | 8DF89ED150041C4CBC7CB9A9CAA90856=E807F1F7DE5EA78A4944F4A09A060BA0 3 | DC22A860405A8BF2F2C095E5B6529F12=74130BDEE96982E7A452358AFD50B322 4 | eclipse.preferences.version=1 5 | -------------------------------------------------------------------------------- /Firmware/For HW version 10/Core/Inc/main.h: -------------------------------------------------------------------------------- 1 | /* USER CODE BEGIN Header */ 2 | /** 3 | ****************************************************************************** 4 | * @file : main.h 5 | * @brief : Header for main.c file. 6 | * This file contains the common defines of the application. 7 | ****************************************************************************** 8 | * @attention 9 | * 10 | *

© Copyright (c) 2021 STMicroelectronics. 11 | * All rights reserved.

12 | * 13 | * This software component is licensed by ST under Ultimate Liberty license 14 | * SLA0044, the "License"; You may not use this file except in compliance with 15 | * the License. You may obtain a copy of the License at: 16 | * www.st.com/SLA0044 17 | * 18 | ****************************************************************************** 19 | */ 20 | /* USER CODE END Header */ 21 | 22 | /* Define to prevent recursive inclusion -------------------------------------*/ 23 | #ifndef __MAIN_H 24 | #define __MAIN_H 25 | 26 | #ifdef __cplusplus 27 | extern "C" { 28 | #endif 29 | 30 | /* Includes ------------------------------------------------------------------*/ 31 | #include "stm32f0xx_hal.h" 32 | 33 | /* Private includes ----------------------------------------------------------*/ 34 | /* USER CODE BEGIN Includes */ 35 | 36 | /* USER CODE END Includes */ 37 | 38 | /* Exported types ------------------------------------------------------------*/ 39 | /* USER CODE BEGIN ET */ 40 | 41 | /* USER CODE END ET */ 42 | 43 | /* Exported constants --------------------------------------------------------*/ 44 | /* USER CODE BEGIN EC */ 45 | 46 | /* USER CODE END EC */ 47 | 48 | /* Exported macro ------------------------------------------------------------*/ 49 | /* USER CODE BEGIN EM */ 50 | 51 | /* USER CODE END EM */ 52 | 53 | /* Exported functions prototypes ---------------------------------------------*/ 54 | void Error_Handler(void); 55 | 56 | /* USER CODE BEGIN EFP */ 57 | 58 | /* USER CODE END EFP */ 59 | 60 | /* Private defines -----------------------------------------------------------*/ 61 | #define LEDR_Pin GPIO_PIN_0 62 | #define LEDR_GPIO_Port GPIOA 63 | #define LEDG_Pin GPIO_PIN_1 64 | #define LEDG_GPIO_Port GPIOA 65 | #define LEDB_Pin GPIO_PIN_2 66 | #define LEDB_GPIO_Port GPIOA 67 | #define AMP_EN_Pin GPIO_PIN_5 68 | #define AMP_EN_GPIO_Port GPIOA 69 | #define I_G0_Pin GPIO_PIN_14 70 | #define I_G0_GPIO_Port GPIOB 71 | #define I_G1_Pin GPIO_PIN_15 72 | #define I_G1_GPIO_Port GPIOB 73 | #define I_G4_Pin GPIO_PIN_8 74 | #define I_G4_GPIO_Port GPIOA 75 | #define I_G3_Pin GPIO_PIN_9 76 | #define I_G3_GPIO_Port GPIOA 77 | #define I_G2_Pin GPIO_PIN_10 78 | #define I_G2_GPIO_Port GPIOA 79 | #define ADC_Alert_Pin GPIO_PIN_9 80 | #define ADC_Alert_GPIO_Port GPIOB 81 | /* USER CODE BEGIN Private defines */ 82 | 83 | /* USER CODE END Private defines */ 84 | 85 | #ifdef __cplusplus 86 | } 87 | #endif 88 | 89 | #endif /* __MAIN_H */ 90 | 91 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 92 | -------------------------------------------------------------------------------- /Firmware/For HW version 10/Core/Inc/stm32f0xx_it.h: -------------------------------------------------------------------------------- 1 | /* USER CODE BEGIN Header */ 2 | /** 3 | ****************************************************************************** 4 | * @file stm32f0xx_it.h 5 | * @brief This file contains the headers of the interrupt handlers. 6 | ****************************************************************************** 7 | * @attention 8 | * 9 | *

© Copyright (c) 2021 STMicroelectronics. 10 | * All rights reserved.

11 | * 12 | * This software component is licensed by ST under Ultimate Liberty license 13 | * SLA0044, the "License"; You may not use this file except in compliance with 14 | * the License. You may obtain a copy of the License at: 15 | * www.st.com/SLA0044 16 | * 17 | ****************************************************************************** 18 | */ 19 | /* USER CODE END Header */ 20 | 21 | /* Define to prevent recursive inclusion -------------------------------------*/ 22 | #ifndef __STM32F0xx_IT_H 23 | #define __STM32F0xx_IT_H 24 | 25 | #ifdef __cplusplus 26 | extern "C" { 27 | #endif 28 | 29 | /* Private includes ----------------------------------------------------------*/ 30 | /* USER CODE BEGIN Includes */ 31 | 32 | /* USER CODE END Includes */ 33 | 34 | /* Exported types ------------------------------------------------------------*/ 35 | /* USER CODE BEGIN ET */ 36 | 37 | /* USER CODE END ET */ 38 | 39 | /* Exported constants --------------------------------------------------------*/ 40 | /* USER CODE BEGIN EC */ 41 | 42 | /* USER CODE END EC */ 43 | 44 | /* Exported macro ------------------------------------------------------------*/ 45 | /* USER CODE BEGIN EM */ 46 | 47 | /* USER CODE END EM */ 48 | 49 | /* Exported functions prototypes ---------------------------------------------*/ 50 | void NMI_Handler(void); 51 | void HardFault_Handler(void); 52 | void SVC_Handler(void); 53 | void PendSV_Handler(void); 54 | void SysTick_Handler(void); 55 | void USB_IRQHandler(void); 56 | /* USER CODE BEGIN EFP */ 57 | 58 | /* USER CODE END EFP */ 59 | 60 | #ifdef __cplusplus 61 | } 62 | #endif 63 | 64 | #endif /* __STM32F0xx_IT_H */ 65 | 66 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 67 | -------------------------------------------------------------------------------- /Firmware/For HW version 10/Core/Src/stm32f0xx_it.c: -------------------------------------------------------------------------------- 1 | /* USER CODE BEGIN Header */ 2 | /** 3 | ****************************************************************************** 4 | * @file stm32f0xx_it.c 5 | * @brief Interrupt Service Routines. 6 | ****************************************************************************** 7 | * @attention 8 | * 9 | *

© Copyright (c) 2021 STMicroelectronics. 10 | * All rights reserved.

11 | * 12 | * This software component is licensed by ST under Ultimate Liberty license 13 | * SLA0044, the "License"; You may not use this file except in compliance with 14 | * the License. You may obtain a copy of the License at: 15 | * www.st.com/SLA0044 16 | * 17 | ****************************************************************************** 18 | */ 19 | /* USER CODE END Header */ 20 | 21 | /* Includes ------------------------------------------------------------------*/ 22 | #include "main.h" 23 | #include "stm32f0xx_it.h" 24 | /* Private includes ----------------------------------------------------------*/ 25 | /* USER CODE BEGIN Includes */ 26 | /* USER CODE END Includes */ 27 | 28 | /* Private typedef -----------------------------------------------------------*/ 29 | /* USER CODE BEGIN TD */ 30 | 31 | /* USER CODE END TD */ 32 | 33 | /* Private define ------------------------------------------------------------*/ 34 | /* USER CODE BEGIN PD */ 35 | 36 | /* USER CODE END PD */ 37 | 38 | /* Private macro -------------------------------------------------------------*/ 39 | /* USER CODE BEGIN PM */ 40 | 41 | /* USER CODE END PM */ 42 | 43 | /* Private variables ---------------------------------------------------------*/ 44 | /* USER CODE BEGIN PV */ 45 | 46 | /* USER CODE END PV */ 47 | 48 | /* Private function prototypes -----------------------------------------------*/ 49 | /* USER CODE BEGIN PFP */ 50 | 51 | /* USER CODE END PFP */ 52 | 53 | /* Private user code ---------------------------------------------------------*/ 54 | /* USER CODE BEGIN 0 */ 55 | 56 | /* USER CODE END 0 */ 57 | 58 | /* External variables --------------------------------------------------------*/ 59 | extern PCD_HandleTypeDef hpcd_USB_FS; 60 | /* USER CODE BEGIN EV */ 61 | 62 | /* USER CODE END EV */ 63 | 64 | /******************************************************************************/ 65 | /* Cortex-M0 Processor Interruption and Exception Handlers */ 66 | /******************************************************************************/ 67 | /** 68 | * @brief This function handles Non maskable interrupt. 69 | */ 70 | void NMI_Handler(void) 71 | { 72 | /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ 73 | 74 | /* USER CODE END NonMaskableInt_IRQn 0 */ 75 | /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ 76 | while (1) 77 | { 78 | } 79 | /* USER CODE END NonMaskableInt_IRQn 1 */ 80 | } 81 | 82 | /** 83 | * @brief This function handles Hard fault interrupt. 84 | */ 85 | void HardFault_Handler(void) 86 | { 87 | /* USER CODE BEGIN HardFault_IRQn 0 */ 88 | 89 | /* USER CODE END HardFault_IRQn 0 */ 90 | while (1) 91 | { 92 | /* USER CODE BEGIN W1_HardFault_IRQn 0 */ 93 | /* USER CODE END W1_HardFault_IRQn 0 */ 94 | } 95 | } 96 | 97 | /** 98 | * @brief This function handles System service call via SWI instruction. 99 | */ 100 | void SVC_Handler(void) 101 | { 102 | /* USER CODE BEGIN SVC_IRQn 0 */ 103 | 104 | /* USER CODE END SVC_IRQn 0 */ 105 | /* USER CODE BEGIN SVC_IRQn 1 */ 106 | 107 | /* USER CODE END SVC_IRQn 1 */ 108 | } 109 | 110 | /** 111 | * @brief This function handles Pendable request for system service. 112 | */ 113 | void PendSV_Handler(void) 114 | { 115 | /* USER CODE BEGIN PendSV_IRQn 0 */ 116 | 117 | /* USER CODE END PendSV_IRQn 0 */ 118 | /* USER CODE BEGIN PendSV_IRQn 1 */ 119 | 120 | /* USER CODE END PendSV_IRQn 1 */ 121 | } 122 | 123 | /** 124 | * @brief This function handles System tick timer. 125 | */ 126 | void SysTick_Handler(void) 127 | { 128 | /* USER CODE BEGIN SysTick_IRQn 0 */ 129 | 130 | /* USER CODE END SysTick_IRQn 0 */ 131 | HAL_IncTick(); 132 | /* USER CODE BEGIN SysTick_IRQn 1 */ 133 | 134 | /* USER CODE END SysTick_IRQn 1 */ 135 | } 136 | 137 | /******************************************************************************/ 138 | /* STM32F0xx Peripheral Interrupt Handlers */ 139 | /* Add here the Interrupt Handlers for the used peripherals. */ 140 | /* For the available peripheral interrupt handler names, */ 141 | /* please refer to the startup file (startup_stm32f0xx.s). */ 142 | /******************************************************************************/ 143 | 144 | /** 145 | * @brief This function handles USB global interrupt / USB wake-up interrupt through EXTI line 18. 146 | */ 147 | void USB_IRQHandler(void) 148 | { 149 | /* USER CODE BEGIN USB_IRQn 0 */ 150 | 151 | /* USER CODE END USB_IRQn 0 */ 152 | HAL_PCD_IRQHandler(&hpcd_USB_FS); 153 | /* USER CODE BEGIN USB_IRQn 1 */ 154 | 155 | /* USER CODE END USB_IRQn 1 */ 156 | } 157 | 158 | /* USER CODE BEGIN 1 */ 159 | 160 | /* USER CODE END 1 */ 161 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 162 | -------------------------------------------------------------------------------- /Firmware/For HW version 10/Core/Src/syscalls.c: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file syscalls.c 4 | * @author Auto-generated by STM32CubeIDE 5 | * @brief STM32CubeIDE Minimal System calls file 6 | * 7 | * For more information about which c-functions 8 | * need which of these lowlevel functions 9 | * please consult the Newlib libc-manual 10 | ****************************************************************************** 11 | * @attention 12 | * 13 | *

© Copyright (c) 2020 STMicroelectronics. 14 | * All rights reserved.

15 | * 16 | * This software component is licensed by ST under BSD 3-Clause license, 17 | * the "License"; You may not use this file except in compliance with the 18 | * License. You may obtain a copy of the License at: 19 | * opensource.org/licenses/BSD-3-Clause 20 | * 21 | ****************************************************************************** 22 | */ 23 | 24 | /* Includes */ 25 | #include 26 | #include 27 | #include 28 | #include 29 | #include 30 | #include 31 | #include 32 | #include 33 | 34 | 35 | /* Variables */ 36 | //#undef errno 37 | extern int errno; 38 | extern int __io_putchar(int ch) __attribute__((weak)); 39 | extern int __io_getchar(void) __attribute__((weak)); 40 | 41 | register char * stack_ptr asm("sp"); 42 | 43 | char *__env[1] = { 0 }; 44 | char **environ = __env; 45 | 46 | 47 | /* Functions */ 48 | void initialise_monitor_handles() 49 | { 50 | } 51 | 52 | int _getpid(void) 53 | { 54 | return 1; 55 | } 56 | 57 | int _kill(int pid, int sig) 58 | { 59 | errno = EINVAL; 60 | return -1; 61 | } 62 | 63 | void _exit (int status) 64 | { 65 | _kill(status, -1); 66 | while (1) {} /* Make sure we hang here */ 67 | } 68 | 69 | __attribute__((weak)) int _read(int file, char *ptr, int len) 70 | { 71 | int DataIdx; 72 | 73 | for (DataIdx = 0; DataIdx < len; DataIdx++) 74 | { 75 | *ptr++ = __io_getchar(); 76 | } 77 | 78 | return len; 79 | } 80 | 81 | __attribute__((weak)) int _write(int file, char *ptr, int len) 82 | { 83 | int DataIdx; 84 | 85 | for (DataIdx = 0; DataIdx < len; DataIdx++) 86 | { 87 | __io_putchar(*ptr++); 88 | } 89 | return len; 90 | } 91 | 92 | int _close(int file) 93 | { 94 | return -1; 95 | } 96 | 97 | 98 | int _fstat(int file, struct stat *st) 99 | { 100 | st->st_mode = S_IFCHR; 101 | return 0; 102 | } 103 | 104 | int _isatty(int file) 105 | { 106 | return 1; 107 | } 108 | 109 | int _lseek(int file, int ptr, int dir) 110 | { 111 | return 0; 112 | } 113 | 114 | int _open(char *path, int flags, ...) 115 | { 116 | /* Pretend like we always fail */ 117 | return -1; 118 | } 119 | 120 | int _wait(int *status) 121 | { 122 | errno = ECHILD; 123 | return -1; 124 | } 125 | 126 | int _unlink(char *name) 127 | { 128 | errno = ENOENT; 129 | return -1; 130 | } 131 | 132 | int _times(struct tms *buf) 133 | { 134 | return -1; 135 | } 136 | 137 | int _stat(char *file, struct stat *st) 138 | { 139 | st->st_mode = S_IFCHR; 140 | return 0; 141 | } 142 | 143 | int _link(char *old, char *new) 144 | { 145 | errno = EMLINK; 146 | return -1; 147 | } 148 | 149 | int _fork(void) 150 | { 151 | errno = EAGAIN; 152 | return -1; 153 | } 154 | 155 | int _execve(char *name, char **argv, char **env) 156 | { 157 | errno = ENOMEM; 158 | return -1; 159 | } 160 | -------------------------------------------------------------------------------- /Firmware/For HW version 10/Core/Src/sysmem.c: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file sysmem.c 4 | * @author Generated by STM32CubeIDE 5 | * @brief STM32CubeIDE System Memory calls file 6 | * 7 | * For more information about which C functions 8 | * need which of these lowlevel functions 9 | * please consult the newlib libc manual 10 | ****************************************************************************** 11 | * @attention 12 | * 13 | *

© Copyright (c) 2020 STMicroelectronics. 14 | * All rights reserved.

15 | * 16 | * This software component is licensed by ST under BSD 3-Clause license, 17 | * the "License"; You may not use this file except in compliance with the 18 | * License. You may obtain a copy of the License at: 19 | * opensource.org/licenses/BSD-3-Clause 20 | * 21 | ****************************************************************************** 22 | */ 23 | 24 | /* Includes */ 25 | #include 26 | #include 27 | 28 | /** 29 | * Pointer to the current high watermark of the heap usage 30 | */ 31 | static uint8_t *__sbrk_heap_end = NULL; 32 | 33 | /** 34 | * @brief _sbrk() allocates memory to the newlib heap and is used by malloc 35 | * and others from the C library 36 | * 37 | * @verbatim 38 | * ############################################################################ 39 | * # .data # .bss # newlib heap # MSP stack # 40 | * # # # # Reserved by _Min_Stack_Size # 41 | * ############################################################################ 42 | * ^-- RAM start ^-- _end _estack, RAM end --^ 43 | * @endverbatim 44 | * 45 | * This implementation starts allocating at the '_end' linker symbol 46 | * The '_Min_Stack_Size' linker symbol reserves a memory for the MSP stack 47 | * The implementation considers '_estack' linker symbol to be RAM end 48 | * NOTE: If the MSP stack, at any point during execution, grows larger than the 49 | * reserved size, please increase the '_Min_Stack_Size'. 50 | * 51 | * @param incr Memory size 52 | * @return Pointer to allocated memory 53 | */ 54 | void *_sbrk(ptrdiff_t incr) 55 | { 56 | extern uint8_t _end; /* Symbol defined in the linker script */ 57 | extern uint8_t _estack; /* Symbol defined in the linker script */ 58 | extern uint32_t _Min_Stack_Size; /* Symbol defined in the linker script */ 59 | const uint32_t stack_limit = (uint32_t)&_estack - (uint32_t)&_Min_Stack_Size; 60 | const uint8_t *max_heap = (uint8_t *)stack_limit; 61 | uint8_t *prev_heap_end; 62 | 63 | /* Initialize heap end at first call */ 64 | if (NULL == __sbrk_heap_end) 65 | { 66 | __sbrk_heap_end = &_end; 67 | } 68 | 69 | /* Protect heap from growing into the reserved MSP stack */ 70 | if (__sbrk_heap_end + incr > max_heap) 71 | { 72 | errno = ENOMEM; 73 | return (void *)-1; 74 | } 75 | 76 | prev_heap_end = __sbrk_heap_end; 77 | __sbrk_heap_end += incr; 78 | 79 | return (void *)prev_heap_end; 80 | } 81 | -------------------------------------------------------------------------------- /Firmware/For HW version 10/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f072xb.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joeltroughton/uSMU/51ece4f96c4998d568ea8d883581df1624eadf7e/Firmware/For HW version 10/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f072xb.h -------------------------------------------------------------------------------- /Firmware/For HW version 10/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f0xx.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joeltroughton/uSMU/51ece4f96c4998d568ea8d883581df1624eadf7e/Firmware/For HW version 10/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f0xx.h -------------------------------------------------------------------------------- /Firmware/For HW version 10/Drivers/CMSIS/Device/ST/STM32F0xx/Include/system_stm32f0xx.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file system_stm32f0xx.h 4 | * @author MCD Application Team 5 | * @brief CMSIS Cortex-M0 Device System Source File for STM32F0xx devices. 6 | ****************************************************************************** 7 | * @attention 8 | * 9 | *

© Copyright (c) 2016 STMicroelectronics. 10 | * All rights reserved.

11 | * 12 | * This software component is licensed by ST under BSD 3-Clause license, 13 | * the "License"; You may not use this file except in compliance with the 14 | * License. You may obtain a copy of the License at: 15 | * opensource.org/licenses/BSD-3-Clause 16 | * 17 | ****************************************************************************** 18 | */ 19 | 20 | /** @addtogroup CMSIS 21 | * @{ 22 | */ 23 | 24 | /** @addtogroup stm32f0xx_system 25 | * @{ 26 | */ 27 | 28 | /** 29 | * @brief Define to prevent recursive inclusion 30 | */ 31 | #ifndef __SYSTEM_STM32F0XX_H 32 | #define __SYSTEM_STM32F0XX_H 33 | 34 | #ifdef __cplusplus 35 | extern "C" { 36 | #endif 37 | 38 | /** @addtogroup STM32F0xx_System_Includes 39 | * @{ 40 | */ 41 | 42 | /** 43 | * @} 44 | */ 45 | 46 | 47 | /** @addtogroup STM32F0xx_System_Exported_types 48 | * @{ 49 | */ 50 | /* This variable is updated in three ways: 51 | 1) by calling CMSIS function SystemCoreClockUpdate() 52 | 3) by calling HAL API function HAL_RCC_GetHCLKFreq() 53 | 3) by calling HAL API function HAL_RCC_ClockConfig() 54 | Note: If you use this function to configure the system clock; then there 55 | is no need to call the 2 first functions listed above, since SystemCoreClock 56 | variable is updated automatically. 57 | */ 58 | extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */ 59 | extern const uint8_t AHBPrescTable[16]; /*!< AHB prescalers table values */ 60 | extern const uint8_t APBPrescTable[8]; /*!< APB prescalers table values */ 61 | 62 | /** 63 | * @} 64 | */ 65 | 66 | /** @addtogroup STM32F0xx_System_Exported_Constants 67 | * @{ 68 | */ 69 | 70 | /** 71 | * @} 72 | */ 73 | 74 | /** @addtogroup STM32F0xx_System_Exported_Macros 75 | * @{ 76 | */ 77 | 78 | /** 79 | * @} 80 | */ 81 | 82 | /** @addtogroup STM32F0xx_System_Exported_Functions 83 | * @{ 84 | */ 85 | 86 | extern void SystemInit(void); 87 | extern void SystemCoreClockUpdate(void); 88 | /** 89 | * @} 90 | */ 91 | 92 | #ifdef __cplusplus 93 | } 94 | #endif 95 | 96 | #endif /*__SYSTEM_STM32F0XX_H */ 97 | 98 | /** 99 | * @} 100 | */ 101 | 102 | /** 103 | * @} 104 | */ 105 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 106 | -------------------------------------------------------------------------------- /Firmware/For HW version 10/Drivers/CMSIS/Include/cmsis_version.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************//** 2 | * @file cmsis_version.h 3 | * @brief CMSIS Core(M) Version definitions 4 | * @version V5.0.2 5 | * @date 19. April 2017 6 | ******************************************************************************/ 7 | /* 8 | * Copyright (c) 2009-2017 ARM Limited. All rights reserved. 9 | * 10 | * SPDX-License-Identifier: Apache-2.0 11 | * 12 | * Licensed under the Apache License, Version 2.0 (the License); you may 13 | * not use this file except in compliance with the License. 14 | * You may obtain a copy of the License at 15 | * 16 | * www.apache.org/licenses/LICENSE-2.0 17 | * 18 | * Unless required by applicable law or agreed to in writing, software 19 | * distributed under the License is distributed on an AS IS BASIS, WITHOUT 20 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 21 | * See the License for the specific language governing permissions and 22 | * limitations under the License. 23 | */ 24 | 25 | #if defined ( __ICCARM__ ) 26 | #pragma system_include /* treat file as system include file for MISRA check */ 27 | #elif defined (__clang__) 28 | #pragma clang system_header /* treat file as system include file */ 29 | #endif 30 | 31 | #ifndef __CMSIS_VERSION_H 32 | #define __CMSIS_VERSION_H 33 | 34 | /* CMSIS Version definitions */ 35 | #define __CM_CMSIS_VERSION_MAIN ( 5U) /*!< [31:16] CMSIS Core(M) main version */ 36 | #define __CM_CMSIS_VERSION_SUB ( 1U) /*!< [15:0] CMSIS Core(M) sub version */ 37 | #define __CM_CMSIS_VERSION ((__CM_CMSIS_VERSION_MAIN << 16U) | \ 38 | __CM_CMSIS_VERSION_SUB ) /*!< CMSIS Core(M) version number */ 39 | #endif 40 | -------------------------------------------------------------------------------- /Firmware/For HW version 10/Drivers/CMSIS/Include/tz_context.h: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * @file tz_context.h 3 | * @brief Context Management for Armv8-M TrustZone 4 | * @version V1.0.1 5 | * @date 10. January 2018 6 | ******************************************************************************/ 7 | /* 8 | * Copyright (c) 2017-2018 Arm Limited. All rights reserved. 9 | * 10 | * SPDX-License-Identifier: Apache-2.0 11 | * 12 | * Licensed under the Apache License, Version 2.0 (the License); you may 13 | * not use this file except in compliance with the License. 14 | * You may obtain a copy of the License at 15 | * 16 | * www.apache.org/licenses/LICENSE-2.0 17 | * 18 | * Unless required by applicable law or agreed to in writing, software 19 | * distributed under the License is distributed on an AS IS BASIS, WITHOUT 20 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 21 | * See the License for the specific language governing permissions and 22 | * limitations under the License. 23 | */ 24 | 25 | #if defined ( __ICCARM__ ) 26 | #pragma system_include /* treat file as system include file for MISRA check */ 27 | #elif defined (__clang__) 28 | #pragma clang system_header /* treat file as system include file */ 29 | #endif 30 | 31 | #ifndef TZ_CONTEXT_H 32 | #define TZ_CONTEXT_H 33 | 34 | #include 35 | 36 | #ifndef TZ_MODULEID_T 37 | #define TZ_MODULEID_T 38 | /// \details Data type that identifies secure software modules called by a process. 39 | typedef uint32_t TZ_ModuleId_t; 40 | #endif 41 | 42 | /// \details TZ Memory ID identifies an allocated memory slot. 43 | typedef uint32_t TZ_MemoryId_t; 44 | 45 | /// Initialize secure context memory system 46 | /// \return execution status (1: success, 0: error) 47 | uint32_t TZ_InitContextSystem_S (void); 48 | 49 | /// Allocate context memory for calling secure software modules in TrustZone 50 | /// \param[in] module identifies software modules called from non-secure mode 51 | /// \return value != 0 id TrustZone memory slot identifier 52 | /// \return value 0 no memory available or internal error 53 | TZ_MemoryId_t TZ_AllocModuleContext_S (TZ_ModuleId_t module); 54 | 55 | /// Free context memory that was previously allocated with \ref TZ_AllocModuleContext_S 56 | /// \param[in] id TrustZone memory slot identifier 57 | /// \return execution status (1: success, 0: error) 58 | uint32_t TZ_FreeModuleContext_S (TZ_MemoryId_t id); 59 | 60 | /// Load secure context (called on RTOS thread context switch) 61 | /// \param[in] id TrustZone memory slot identifier 62 | /// \return execution status (1: success, 0: error) 63 | uint32_t TZ_LoadContext_S (TZ_MemoryId_t id); 64 | 65 | /// Store secure context (called on RTOS thread context switch) 66 | /// \param[in] id TrustZone memory slot identifier 67 | /// \return execution status (1: success, 0: error) 68 | uint32_t TZ_StoreContext_S (TZ_MemoryId_t id); 69 | 70 | #endif // TZ_CONTEXT_H 71 | -------------------------------------------------------------------------------- /Firmware/For HW version 10/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_cortex.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file stm32f0xx_hal_cortex.h 4 | * @author MCD Application Team 5 | * @brief Header file of CORTEX HAL module. 6 | ****************************************************************************** 7 | * @attention 8 | * 9 | *

© Copyright (c) 2016 STMicroelectronics. 10 | * All rights reserved.

11 | * 12 | * This software component is licensed by ST under BSD 3-Clause license, 13 | * the "License"; You may not use this file except in compliance with the 14 | * License. You may obtain a copy of the License at: 15 | * opensource.org/licenses/BSD-3-Clause 16 | * 17 | ****************************************************************************** 18 | */ 19 | 20 | /* Define to prevent recursive inclusion -------------------------------------*/ 21 | #ifndef __STM32F0xx_HAL_CORTEX_H 22 | #define __STM32F0xx_HAL_CORTEX_H 23 | 24 | #ifdef __cplusplus 25 | extern "C" { 26 | #endif 27 | 28 | /* Includes ------------------------------------------------------------------*/ 29 | #include "stm32f0xx_hal_def.h" 30 | 31 | /** @addtogroup STM32F0xx_HAL_Driver 32 | * @{ 33 | */ 34 | 35 | /** @addtogroup CORTEX CORTEX 36 | * @{ 37 | */ 38 | /* Exported types ------------------------------------------------------------*/ 39 | /* Exported constants --------------------------------------------------------*/ 40 | 41 | /** @defgroup CORTEX_Exported_Constants CORTEX Exported Constants 42 | * @{ 43 | */ 44 | 45 | /** @defgroup CORTEX_SysTick_clock_source CORTEX SysTick clock source 46 | * @{ 47 | */ 48 | #define SYSTICK_CLKSOURCE_HCLK_DIV8 (0x00000000U) 49 | #define SYSTICK_CLKSOURCE_HCLK (0x00000004U) 50 | 51 | /** 52 | * @} 53 | */ 54 | 55 | /** 56 | * @} 57 | */ 58 | 59 | /* Exported Macros -----------------------------------------------------------*/ 60 | 61 | /* Exported functions --------------------------------------------------------*/ 62 | /** @addtogroup CORTEX_Exported_Functions CORTEX Exported Functions 63 | * @{ 64 | */ 65 | /** @addtogroup CORTEX_Exported_Functions_Group1 Initialization and de-initialization functions 66 | * @brief Initialization and Configuration functions 67 | * @{ 68 | */ 69 | /* Initialization and de-initialization functions *******************************/ 70 | void HAL_NVIC_SetPriority(IRQn_Type IRQn,uint32_t PreemptPriority, uint32_t SubPriority); 71 | void HAL_NVIC_EnableIRQ(IRQn_Type IRQn); 72 | void HAL_NVIC_DisableIRQ(IRQn_Type IRQn); 73 | void HAL_NVIC_SystemReset(void); 74 | uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb); 75 | /** 76 | * @} 77 | */ 78 | 79 | /** @addtogroup CORTEX_Exported_Functions_Group2 Peripheral Control functions 80 | * @brief Cortex control functions 81 | * @{ 82 | */ 83 | 84 | /* Peripheral Control functions *************************************************/ 85 | uint32_t HAL_NVIC_GetPriority(IRQn_Type IRQn); 86 | uint32_t HAL_NVIC_GetPendingIRQ(IRQn_Type IRQn); 87 | void HAL_NVIC_SetPendingIRQ(IRQn_Type IRQn); 88 | void HAL_NVIC_ClearPendingIRQ(IRQn_Type IRQn); 89 | void HAL_SYSTICK_CLKSourceConfig(uint32_t CLKSource); 90 | void HAL_SYSTICK_IRQHandler(void); 91 | void HAL_SYSTICK_Callback(void); 92 | /** 93 | * @} 94 | */ 95 | 96 | /** 97 | * @} 98 | */ 99 | 100 | /* Private types -------------------------------------------------------------*/ 101 | /* Private variables ---------------------------------------------------------*/ 102 | /* Private constants ---------------------------------------------------------*/ 103 | /* Private macros ------------------------------------------------------------*/ 104 | /** @defgroup CORTEX_Private_Macros CORTEX Private Macros 105 | * @{ 106 | */ 107 | #define IS_NVIC_PREEMPTION_PRIORITY(PRIORITY) ((PRIORITY) < 0x4) 108 | 109 | #define IS_NVIC_DEVICE_IRQ(IRQ) ((IRQ) >= 0x00) 110 | 111 | #define IS_SYSTICK_CLK_SOURCE(SOURCE) (((SOURCE) == SYSTICK_CLKSOURCE_HCLK) || \ 112 | ((SOURCE) == SYSTICK_CLKSOURCE_HCLK_DIV8)) 113 | /** 114 | * @} 115 | */ 116 | 117 | /** 118 | * @} 119 | */ 120 | 121 | /** 122 | * @} 123 | */ 124 | 125 | #ifdef __cplusplus 126 | } 127 | #endif 128 | 129 | #endif /* __STM32F0xx_HAL_CORTEX_H */ 130 | 131 | 132 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 133 | 134 | -------------------------------------------------------------------------------- /Firmware/For HW version 10/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_pcd_ex.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file stm32f0xx_hal_pcd_ex.h 4 | * @author MCD Application Team 5 | * @brief Header file of PCD HAL Extension module. 6 | ****************************************************************************** 7 | * @attention 8 | * 9 | *

© Copyright (c) 2016 STMicroelectronics. 10 | * All rights reserved.

11 | * 12 | * This software component is licensed by ST under BSD 3-Clause license, 13 | * the "License"; You may not use this file except in compliance with the 14 | * License. You may obtain a copy of the License at: 15 | * opensource.org/licenses/BSD-3-Clause 16 | * 17 | ****************************************************************************** 18 | */ 19 | 20 | /* Define to prevent recursive inclusion -------------------------------------*/ 21 | #ifndef STM32F0xx_HAL_PCD_EX_H 22 | #define STM32F0xx_HAL_PCD_EX_H 23 | 24 | #ifdef __cplusplus 25 | extern "C" { 26 | #endif 27 | 28 | /* Includes ------------------------------------------------------------------*/ 29 | #include "stm32f0xx_hal_def.h" 30 | 31 | #if defined (USB) 32 | /** @addtogroup STM32F0xx_HAL_Driver 33 | * @{ 34 | */ 35 | 36 | /** @addtogroup PCDEx 37 | * @{ 38 | */ 39 | /* Exported types ------------------------------------------------------------*/ 40 | /* Exported constants --------------------------------------------------------*/ 41 | /* Exported macros -----------------------------------------------------------*/ 42 | /* Exported functions --------------------------------------------------------*/ 43 | /** @addtogroup PCDEx_Exported_Functions PCDEx Exported Functions 44 | * @{ 45 | */ 46 | /** @addtogroup PCDEx_Exported_Functions_Group1 Peripheral Control functions 47 | * @{ 48 | */ 49 | 50 | 51 | 52 | HAL_StatusTypeDef HAL_PCDEx_PMAConfig(PCD_HandleTypeDef *hpcd, uint16_t ep_addr, 53 | uint16_t ep_kind, uint32_t pmaadress); 54 | 55 | 56 | HAL_StatusTypeDef HAL_PCDEx_ActivateLPM(PCD_HandleTypeDef *hpcd); 57 | HAL_StatusTypeDef HAL_PCDEx_DeActivateLPM(PCD_HandleTypeDef *hpcd); 58 | 59 | 60 | HAL_StatusTypeDef HAL_PCDEx_ActivateBCD(PCD_HandleTypeDef *hpcd); 61 | HAL_StatusTypeDef HAL_PCDEx_DeActivateBCD(PCD_HandleTypeDef *hpcd); 62 | void HAL_PCDEx_BCD_VBUSDetect(PCD_HandleTypeDef *hpcd); 63 | 64 | void HAL_PCDEx_LPM_Callback(PCD_HandleTypeDef *hpcd, PCD_LPM_MsgTypeDef msg); 65 | void HAL_PCDEx_BCD_Callback(PCD_HandleTypeDef *hpcd, PCD_BCD_MsgTypeDef msg); 66 | 67 | /** 68 | * @} 69 | */ 70 | 71 | /** 72 | * @} 73 | */ 74 | 75 | /** 76 | * @} 77 | */ 78 | 79 | /** 80 | * @} 81 | */ 82 | #endif /* defined (USB) */ 83 | 84 | #ifdef __cplusplus 85 | } 86 | #endif 87 | 88 | 89 | #endif /* STM32F0xx_HAL_PCD_EX_H */ 90 | 91 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 92 | -------------------------------------------------------------------------------- /Firmware/For HW version 10/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file usbd_req.h 4 | * @author MCD Application Team 5 | * @brief Header file for the usbd_req.c file 6 | ****************************************************************************** 7 | * @attention 8 | * 9 | *

© Copyright (c) 2015 STMicroelectronics. 10 | * All rights reserved.

11 | * 12 | * This software component is licensed by ST under Ultimate Liberty license 13 | * SLA0044, the "License"; You may not use this file except in compliance with 14 | * the License. You may obtain a copy of the License at: 15 | * www.st.com/SLA0044 16 | * 17 | ****************************************************************************** 18 | */ 19 | 20 | /* Define to prevent recursive inclusion -------------------------------------*/ 21 | #ifndef __USB_REQUEST_H 22 | #define __USB_REQUEST_H 23 | 24 | #ifdef __cplusplus 25 | extern "C" { 26 | #endif 27 | 28 | /* Includes ------------------------------------------------------------------*/ 29 | #include "usbd_def.h" 30 | 31 | 32 | /** @addtogroup STM32_USB_DEVICE_LIBRARY 33 | * @{ 34 | */ 35 | 36 | /** @defgroup USBD_REQ 37 | * @brief header file for the usbd_req.c file 38 | * @{ 39 | */ 40 | 41 | /** @defgroup USBD_REQ_Exported_Defines 42 | * @{ 43 | */ 44 | /** 45 | * @} 46 | */ 47 | 48 | 49 | /** @defgroup USBD_REQ_Exported_Types 50 | * @{ 51 | */ 52 | /** 53 | * @} 54 | */ 55 | 56 | 57 | 58 | /** @defgroup USBD_REQ_Exported_Macros 59 | * @{ 60 | */ 61 | /** 62 | * @} 63 | */ 64 | 65 | /** @defgroup USBD_REQ_Exported_Variables 66 | * @{ 67 | */ 68 | /** 69 | * @} 70 | */ 71 | 72 | /** @defgroup USBD_REQ_Exported_FunctionsPrototype 73 | * @{ 74 | */ 75 | 76 | USBD_StatusTypeDef USBD_StdDevReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); 77 | USBD_StatusTypeDef USBD_StdItfReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); 78 | USBD_StatusTypeDef USBD_StdEPReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); 79 | 80 | 81 | void USBD_CtlError(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); 82 | 83 | void USBD_ParseSetupRequest(USBD_SetupReqTypedef *req, uint8_t *pdata); 84 | 85 | void USBD_GetString(uint8_t *desc, uint8_t *unicode, uint16_t *len); 86 | /** 87 | * @} 88 | */ 89 | 90 | #ifdef __cplusplus 91 | } 92 | #endif 93 | 94 | #endif /* __USB_REQUEST_H */ 95 | 96 | /** 97 | * @} 98 | */ 99 | 100 | /** 101 | * @} 102 | */ 103 | 104 | 105 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 106 | -------------------------------------------------------------------------------- /Firmware/For HW version 10/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file usbd_ioreq.h 4 | * @author MCD Application Team 5 | * @brief Header file for the usbd_ioreq.c file 6 | ****************************************************************************** 7 | * @attention 8 | * 9 | *

© Copyright (c) 2015 STMicroelectronics. 10 | * All rights reserved.

11 | * 12 | * This software component is licensed by ST under Ultimate Liberty license 13 | * SLA0044, the "License"; You may not use this file except in compliance with 14 | * the License. You may obtain a copy of the License at: 15 | * www.st.com/SLA0044 16 | * 17 | ****************************************************************************** 18 | */ 19 | 20 | /* Define to prevent recursive inclusion -------------------------------------*/ 21 | #ifndef __USBD_IOREQ_H 22 | #define __USBD_IOREQ_H 23 | 24 | #ifdef __cplusplus 25 | extern "C" { 26 | #endif 27 | 28 | /* Includes ------------------------------------------------------------------*/ 29 | #include "usbd_def.h" 30 | #include "usbd_core.h" 31 | 32 | /** @addtogroup STM32_USB_DEVICE_LIBRARY 33 | * @{ 34 | */ 35 | 36 | /** @defgroup USBD_IOREQ 37 | * @brief header file for the usbd_ioreq.c file 38 | * @{ 39 | */ 40 | 41 | /** @defgroup USBD_IOREQ_Exported_Defines 42 | * @{ 43 | */ 44 | /** 45 | * @} 46 | */ 47 | 48 | 49 | /** @defgroup USBD_IOREQ_Exported_Types 50 | * @{ 51 | */ 52 | 53 | 54 | /** 55 | * @} 56 | */ 57 | 58 | 59 | 60 | /** @defgroup USBD_IOREQ_Exported_Macros 61 | * @{ 62 | */ 63 | 64 | /** 65 | * @} 66 | */ 67 | 68 | /** @defgroup USBD_IOREQ_Exported_Variables 69 | * @{ 70 | */ 71 | 72 | /** 73 | * @} 74 | */ 75 | 76 | /** @defgroup USBD_IOREQ_Exported_FunctionsPrototype 77 | * @{ 78 | */ 79 | 80 | USBD_StatusTypeDef USBD_CtlSendData(USBD_HandleTypeDef *pdev, 81 | uint8_t *pbuf, 82 | uint16_t len); 83 | 84 | USBD_StatusTypeDef USBD_CtlContinueSendData(USBD_HandleTypeDef *pdev, 85 | uint8_t *pbuf, 86 | uint16_t len); 87 | 88 | USBD_StatusTypeDef USBD_CtlPrepareRx(USBD_HandleTypeDef *pdev, 89 | uint8_t *pbuf, 90 | uint16_t len); 91 | 92 | USBD_StatusTypeDef USBD_CtlContinueRx(USBD_HandleTypeDef *pdev, 93 | uint8_t *pbuf, 94 | uint16_t len); 95 | 96 | USBD_StatusTypeDef USBD_CtlSendStatus(USBD_HandleTypeDef *pdev); 97 | 98 | USBD_StatusTypeDef USBD_CtlReceiveStatus(USBD_HandleTypeDef *pdev); 99 | 100 | uint32_t USBD_GetRxCount(USBD_HandleTypeDef *pdev, uint8_t ep_addr); 101 | 102 | /** 103 | * @} 104 | */ 105 | 106 | #ifdef __cplusplus 107 | } 108 | #endif 109 | 110 | #endif /* __USBD_IOREQ_H */ 111 | 112 | /** 113 | * @} 114 | */ 115 | 116 | /** 117 | * @} 118 | */ 119 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 120 | -------------------------------------------------------------------------------- /Firmware/For HW version 10/STM32F072CBUX_FLASH.ld: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file LinkerScript.ld 4 | * @author Auto-generated by STM32CubeIDE 5 | * @brief Linker script for STM32F072CBUx Device from STM32F0 series 6 | * 128Kbytes FLASH 7 | * 16Kbytes RAM 8 | * 9 | * Set heap size, stack size and stack location according 10 | * to application requirements. 11 | * 12 | * Set memory bank area and size if external memory is used 13 | ****************************************************************************** 14 | * @attention 15 | * 16 | *

© Copyright (c) 2020 STMicroelectronics. 17 | * All rights reserved.

18 | * 19 | * This software component is licensed by ST under BSD 3-Clause license, 20 | * the "License"; You may not use this file except in compliance with the 21 | * License. You may obtain a copy of the License at: 22 | * opensource.org/licenses/BSD-3-Clause 23 | * 24 | ****************************************************************************** 25 | */ 26 | 27 | /* Entry Point */ 28 | ENTRY(Reset_Handler) 29 | 30 | /* Highest address of the user mode stack */ 31 | _estack = ORIGIN(RAM) + LENGTH(RAM); /* end of "RAM" Ram type memory */ 32 | 33 | _Min_Heap_Size = 0x200; /* required amount of heap */ 34 | _Min_Stack_Size = 0x400; /* required amount of stack */ 35 | 36 | /* Memories definition */ 37 | MEMORY 38 | { 39 | RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 16K 40 | FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 128K 41 | } 42 | 43 | /* Sections */ 44 | SECTIONS 45 | { 46 | /* The startup code into "FLASH" Rom type memory */ 47 | .isr_vector : 48 | { 49 | . = ALIGN(4); 50 | KEEP(*(.isr_vector)) /* Startup code */ 51 | . = ALIGN(4); 52 | } >FLASH 53 | 54 | /* The program code and other data into "FLASH" Rom type memory */ 55 | .text : 56 | { 57 | . = ALIGN(4); 58 | *(.text) /* .text sections (code) */ 59 | *(.text*) /* .text* sections (code) */ 60 | *(.glue_7) /* glue arm to thumb code */ 61 | *(.glue_7t) /* glue thumb to arm code */ 62 | *(.eh_frame) 63 | 64 | KEEP (*(.init)) 65 | KEEP (*(.fini)) 66 | 67 | . = ALIGN(4); 68 | _etext = .; /* define a global symbols at end of code */ 69 | } >FLASH 70 | 71 | /* Constant data into "FLASH" Rom type memory */ 72 | .rodata : 73 | { 74 | . = ALIGN(4); 75 | *(.rodata) /* .rodata sections (constants, strings, etc.) */ 76 | *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ 77 | . = ALIGN(4); 78 | } >FLASH 79 | 80 | .ARM.extab : { 81 | . = ALIGN(4); 82 | *(.ARM.extab* .gnu.linkonce.armextab.*) 83 | . = ALIGN(4); 84 | } >FLASH 85 | 86 | .ARM : { 87 | . = ALIGN(4); 88 | __exidx_start = .; 89 | *(.ARM.exidx*) 90 | __exidx_end = .; 91 | . = ALIGN(4); 92 | } >FLASH 93 | 94 | .preinit_array : 95 | { 96 | . = ALIGN(4); 97 | PROVIDE_HIDDEN (__preinit_array_start = .); 98 | KEEP (*(.preinit_array*)) 99 | PROVIDE_HIDDEN (__preinit_array_end = .); 100 | . = ALIGN(4); 101 | } >FLASH 102 | 103 | .init_array : 104 | { 105 | . = ALIGN(4); 106 | PROVIDE_HIDDEN (__init_array_start = .); 107 | KEEP (*(SORT(.init_array.*))) 108 | KEEP (*(.init_array*)) 109 | PROVIDE_HIDDEN (__init_array_end = .); 110 | . = ALIGN(4); 111 | } >FLASH 112 | 113 | .fini_array : 114 | { 115 | . = ALIGN(4); 116 | PROVIDE_HIDDEN (__fini_array_start = .); 117 | KEEP (*(SORT(.fini_array.*))) 118 | KEEP (*(.fini_array*)) 119 | PROVIDE_HIDDEN (__fini_array_end = .); 120 | . = ALIGN(4); 121 | } >FLASH 122 | 123 | /* Used by the startup to initialize data */ 124 | _sidata = LOADADDR(.data); 125 | 126 | /* Initialized data sections into "RAM" Ram type memory */ 127 | .data : 128 | { 129 | . = ALIGN(4); 130 | _sdata = .; /* create a global symbol at data start */ 131 | *(.data) /* .data sections */ 132 | *(.data*) /* .data* sections */ 133 | 134 | . = ALIGN(4); 135 | _edata = .; /* define a global symbol at data end */ 136 | 137 | } >RAM AT> FLASH 138 | 139 | /* Uninitialized data section into "RAM" Ram type memory */ 140 | . = ALIGN(4); 141 | .bss : 142 | { 143 | /* This is used by the startup in order to initialize the .bss section */ 144 | _sbss = .; /* define a global symbol at bss start */ 145 | __bss_start__ = _sbss; 146 | *(.bss) 147 | *(.bss*) 148 | *(COMMON) 149 | 150 | . = ALIGN(4); 151 | _ebss = .; /* define a global symbol at bss end */ 152 | __bss_end__ = _ebss; 153 | } >RAM 154 | 155 | /* User_heap_stack section, used to check that there is enough "RAM" Ram type memory left */ 156 | ._user_heap_stack : 157 | { 158 | . = ALIGN(8); 159 | PROVIDE ( end = . ); 160 | PROVIDE ( _end = . ); 161 | . = . + _Min_Heap_Size; 162 | . = . + _Min_Stack_Size; 163 | . = ALIGN(8); 164 | } >RAM 165 | 166 | /* Remove information from the compiler libraries */ 167 | /DISCARD/ : 168 | { 169 | libc.a ( * ) 170 | libm.a ( * ) 171 | libgcc.a ( * ) 172 | } 173 | 174 | .ARM.attributes 0 : { *(.ARM.attributes) } 175 | } 176 | -------------------------------------------------------------------------------- /Firmware/For HW version 10/USB_DEVICE/App/usb_device.c: -------------------------------------------------------------------------------- 1 | /* USER CODE BEGIN Header */ 2 | /** 3 | ****************************************************************************** 4 | * @file : usb_device.c 5 | * @version : v2.0_Cube 6 | * @brief : This file implements the USB Device 7 | ****************************************************************************** 8 | * @attention 9 | * 10 | *

© Copyright (c) 2021 STMicroelectronics. 11 | * All rights reserved.

12 | * 13 | * This software component is licensed by ST under Ultimate Liberty license 14 | * SLA0044, the "License"; You may not use this file except in compliance with 15 | * the License. You may obtain a copy of the License at: 16 | * www.st.com/SLA0044 17 | * 18 | ****************************************************************************** 19 | */ 20 | /* USER CODE END Header */ 21 | 22 | /* Includes ------------------------------------------------------------------*/ 23 | 24 | #include "usb_device.h" 25 | #include "usbd_core.h" 26 | #include "usbd_desc.h" 27 | #include "usbd_cdc.h" 28 | #include "usbd_cdc_if.h" 29 | 30 | /* USER CODE BEGIN Includes */ 31 | 32 | /* USER CODE END Includes */ 33 | 34 | /* USER CODE BEGIN PV */ 35 | /* Private variables ---------------------------------------------------------*/ 36 | 37 | /* USER CODE END PV */ 38 | 39 | /* USER CODE BEGIN PFP */ 40 | /* Private function prototypes -----------------------------------------------*/ 41 | 42 | /* USER CODE END PFP */ 43 | 44 | /* USB Device Core handle declaration. */ 45 | USBD_HandleTypeDef hUsbDeviceFS; 46 | 47 | /* 48 | * -- Insert your variables declaration here -- 49 | */ 50 | /* USER CODE BEGIN 0 */ 51 | 52 | /* USER CODE END 0 */ 53 | 54 | /* 55 | * -- Insert your external function declaration here -- 56 | */ 57 | /* USER CODE BEGIN 1 */ 58 | 59 | /* USER CODE END 1 */ 60 | 61 | /** 62 | * Init USB device Library, add supported class and start the library 63 | * @retval None 64 | */ 65 | void MX_USB_DEVICE_Init(void) 66 | { 67 | /* USER CODE BEGIN USB_DEVICE_Init_PreTreatment */ 68 | 69 | /* USER CODE END USB_DEVICE_Init_PreTreatment */ 70 | 71 | /* Init Device Library, add supported class and start the library. */ 72 | if (USBD_Init(&hUsbDeviceFS, &FS_Desc, DEVICE_FS) != USBD_OK) 73 | { 74 | Error_Handler(); 75 | } 76 | if (USBD_RegisterClass(&hUsbDeviceFS, &USBD_CDC) != USBD_OK) 77 | { 78 | Error_Handler(); 79 | } 80 | if (USBD_CDC_RegisterInterface(&hUsbDeviceFS, &USBD_Interface_fops_FS) != USBD_OK) 81 | { 82 | Error_Handler(); 83 | } 84 | if (USBD_Start(&hUsbDeviceFS) != USBD_OK) 85 | { 86 | Error_Handler(); 87 | } 88 | 89 | /* USER CODE BEGIN USB_DEVICE_Init_PostTreatment */ 90 | 91 | /* USER CODE END USB_DEVICE_Init_PostTreatment */ 92 | } 93 | 94 | /** 95 | * @} 96 | */ 97 | 98 | /** 99 | * @} 100 | */ 101 | 102 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 103 | -------------------------------------------------------------------------------- /Firmware/For HW version 10/USB_DEVICE/App/usb_device.h: -------------------------------------------------------------------------------- 1 | /* USER CODE BEGIN Header */ 2 | /** 3 | ****************************************************************************** 4 | * @file : usb_device.h 5 | * @version : v2.0_Cube 6 | * @brief : Header for usb_device.c file. 7 | ****************************************************************************** 8 | * @attention 9 | * 10 | *

© Copyright (c) 2021 STMicroelectronics. 11 | * All rights reserved.

12 | * 13 | * This software component is licensed by ST under Ultimate Liberty license 14 | * SLA0044, the "License"; You may not use this file except in compliance with 15 | * the License. You may obtain a copy of the License at: 16 | * www.st.com/SLA0044 17 | * 18 | ****************************************************************************** 19 | */ 20 | /* USER CODE END Header */ 21 | 22 | /* Define to prevent recursive inclusion -------------------------------------*/ 23 | #ifndef __USB_DEVICE__H__ 24 | #define __USB_DEVICE__H__ 25 | 26 | #ifdef __cplusplus 27 | extern "C" { 28 | #endif 29 | 30 | /* Includes ------------------------------------------------------------------*/ 31 | #include "stm32f0xx.h" 32 | #include "stm32f0xx_hal.h" 33 | #include "usbd_def.h" 34 | 35 | /* USER CODE BEGIN INCLUDE */ 36 | 37 | /* USER CODE END INCLUDE */ 38 | 39 | /** @addtogroup USBD_OTG_DRIVER 40 | * @{ 41 | */ 42 | 43 | /** @defgroup USBD_DEVICE USBD_DEVICE 44 | * @brief Device file for Usb otg low level driver. 45 | * @{ 46 | */ 47 | 48 | /** @defgroup USBD_DEVICE_Exported_Variables USBD_DEVICE_Exported_Variables 49 | * @brief Public variables. 50 | * @{ 51 | */ 52 | 53 | /* Private variables ---------------------------------------------------------*/ 54 | /* USER CODE BEGIN PV */ 55 | 56 | /* USER CODE END PV */ 57 | 58 | /* Private function prototypes -----------------------------------------------*/ 59 | /* USER CODE BEGIN PFP */ 60 | 61 | /* USER CODE END PFP */ 62 | 63 | /* 64 | * -- Insert your variables declaration here -- 65 | */ 66 | /* USER CODE BEGIN VARIABLES */ 67 | 68 | /* USER CODE END VARIABLES */ 69 | /** 70 | * @} 71 | */ 72 | 73 | /** @defgroup USBD_DEVICE_Exported_FunctionsPrototype USBD_DEVICE_Exported_FunctionsPrototype 74 | * @brief Declaration of public functions for Usb device. 75 | * @{ 76 | */ 77 | 78 | /** USB Device initialization function. */ 79 | void MX_USB_DEVICE_Init(void); 80 | 81 | /* 82 | * -- Insert functions declaration here -- 83 | */ 84 | /* USER CODE BEGIN FD */ 85 | 86 | /* USER CODE END FD */ 87 | /** 88 | * @} 89 | */ 90 | 91 | /** 92 | * @} 93 | */ 94 | 95 | /** 96 | * @} 97 | */ 98 | 99 | #ifdef __cplusplus 100 | } 101 | #endif 102 | 103 | #endif /* __USB_DEVICE__H__ */ 104 | 105 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 106 | -------------------------------------------------------------------------------- /Firmware/For HW version 10/USB_DEVICE/App/usbd_cdc_if.h: -------------------------------------------------------------------------------- 1 | /* USER CODE BEGIN Header */ 2 | /** 3 | ****************************************************************************** 4 | * @file : usbd_cdc_if.h 5 | * @version : v2.0_Cube 6 | * @brief : Header for usbd_cdc_if.c file. 7 | ****************************************************************************** 8 | * @attention 9 | * 10 | *

© Copyright (c) 2021 STMicroelectronics. 11 | * All rights reserved.

12 | * 13 | * This software component is licensed by ST under Ultimate Liberty license 14 | * SLA0044, the "License"; You may not use this file except in compliance with 15 | * the License. You may obtain a copy of the License at: 16 | * www.st.com/SLA0044 17 | * 18 | ****************************************************************************** 19 | */ 20 | /* USER CODE END Header */ 21 | 22 | /* Define to prevent recursive inclusion -------------------------------------*/ 23 | #ifndef __USBD_CDC_IF_H__ 24 | #define __USBD_CDC_IF_H__ 25 | 26 | #ifdef __cplusplus 27 | extern "C" { 28 | #endif 29 | 30 | /* Includes ------------------------------------------------------------------*/ 31 | #include "usbd_cdc.h" 32 | 33 | /* USER CODE BEGIN INCLUDE */ 34 | #define FIFO_SIZE 32 // must be 2^N 35 | 36 | #define FIFO_INCR(x) (((x)+1)&((FIFO_SIZE)-1)) 37 | 38 | /* Structure of FIFO*/ 39 | 40 | typedef struct FIFO 41 | { 42 | uint32_t head; 43 | uint32_t tail; 44 | uint8_t data[FIFO_SIZE]; 45 | } FIFO; 46 | 47 | extern FIFO RX_FIFO; 48 | /* USER CODE END INCLUDE */ 49 | 50 | /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY 51 | * @brief For Usb device. 52 | * @{ 53 | */ 54 | 55 | /** @defgroup USBD_CDC_IF USBD_CDC_IF 56 | * @brief Usb VCP device module 57 | * @{ 58 | */ 59 | 60 | /** @defgroup USBD_CDC_IF_Exported_Defines USBD_CDC_IF_Exported_Defines 61 | * @brief Defines. 62 | * @{ 63 | */ 64 | /* USER CODE BEGIN EXPORTED_DEFINES */ 65 | /* Define size for the receive and transmit buffer over CDC */ 66 | /* It's up to user to redefine and/or remove those define */ 67 | #define APP_RX_DATA_SIZE 1000 68 | #define APP_TX_DATA_SIZE 1000 69 | 70 | /* USER CODE END EXPORTED_DEFINES */ 71 | 72 | /** 73 | * @} 74 | */ 75 | 76 | /** @defgroup USBD_CDC_IF_Exported_Types USBD_CDC_IF_Exported_Types 77 | * @brief Types. 78 | * @{ 79 | */ 80 | 81 | /* USER CODE BEGIN EXPORTED_TYPES */ 82 | 83 | /* USER CODE END EXPORTED_TYPES */ 84 | 85 | /** 86 | * @} 87 | */ 88 | 89 | /** @defgroup USBD_CDC_IF_Exported_Macros USBD_CDC_IF_Exported_Macros 90 | * @brief Aliases. 91 | * @{ 92 | */ 93 | 94 | /* USER CODE BEGIN EXPORTED_MACRO */ 95 | 96 | /* USER CODE END EXPORTED_MACRO */ 97 | 98 | /** 99 | * @} 100 | */ 101 | 102 | /** @defgroup USBD_CDC_IF_Exported_Variables USBD_CDC_IF_Exported_Variables 103 | * @brief Public variables. 104 | * @{ 105 | */ 106 | 107 | /** CDC Interface callback. */ 108 | extern USBD_CDC_ItfTypeDef USBD_Interface_fops_FS; 109 | 110 | /* USER CODE BEGIN EXPORTED_VARIABLES */ 111 | 112 | /* USER CODE END EXPORTED_VARIABLES */ 113 | 114 | /** 115 | * @} 116 | */ 117 | 118 | /** @defgroup USBD_CDC_IF_Exported_FunctionsPrototype USBD_CDC_IF_Exported_FunctionsPrototype 119 | * @brief Public functions declaration. 120 | * @{ 121 | */ 122 | 123 | uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len); 124 | 125 | /* USER CODE BEGIN EXPORTED_FUNCTIONS */ 126 | 127 | /* USER CODE END EXPORTED_FUNCTIONS */ 128 | 129 | /** 130 | * @} 131 | */ 132 | 133 | /** 134 | * @} 135 | */ 136 | 137 | /** 138 | * @} 139 | */ 140 | 141 | #ifdef __cplusplus 142 | } 143 | #endif 144 | 145 | #endif /* __USBD_CDC_IF_H__ */ 146 | 147 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 148 | -------------------------------------------------------------------------------- /Firmware/For HW version 10/USB_DEVICE/App/usbd_desc.h: -------------------------------------------------------------------------------- 1 | /* USER CODE BEGIN Header */ 2 | /** 3 | ****************************************************************************** 4 | * @file : usbd_desc.c 5 | * @version : v2.0_Cube 6 | * @brief : Header for usbd_conf.c file. 7 | ****************************************************************************** 8 | * @attention 9 | * 10 | *

© Copyright (c) 2021 STMicroelectronics. 11 | * All rights reserved.

12 | * 13 | * This software component is licensed by ST under Ultimate Liberty license 14 | * SLA0044, the "License"; You may not use this file except in compliance with 15 | * the License. You may obtain a copy of the License at: 16 | * www.st.com/SLA0044 17 | * 18 | ****************************************************************************** 19 | */ 20 | /* USER CODE END Header */ 21 | /* Define to prevent recursive inclusion -------------------------------------*/ 22 | #ifndef __USBD_DESC__C__ 23 | #define __USBD_DESC__C__ 24 | 25 | #ifdef __cplusplus 26 | extern "C" { 27 | #endif 28 | 29 | /* Includes ------------------------------------------------------------------*/ 30 | #include "usbd_def.h" 31 | 32 | /* USER CODE BEGIN INCLUDE */ 33 | 34 | /* USER CODE END INCLUDE */ 35 | 36 | /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY 37 | * @{ 38 | */ 39 | 40 | /** @defgroup USBD_DESC USBD_DESC 41 | * @brief Usb device descriptors module. 42 | * @{ 43 | */ 44 | 45 | /** @defgroup USBD_DESC_Exported_Constants USBD_DESC_Exported_Constants 46 | * @brief Constants. 47 | * @{ 48 | */ 49 | #define DEVICE_ID1 (UID_BASE) 50 | #define DEVICE_ID2 (UID_BASE + 0x4) 51 | #define DEVICE_ID3 (UID_BASE + 0x8) 52 | 53 | #define USB_SIZ_STRING_SERIAL 0x1A 54 | 55 | /* USER CODE BEGIN EXPORTED_CONSTANTS */ 56 | 57 | /* USER CODE END EXPORTED_CONSTANTS */ 58 | 59 | /** 60 | * @} 61 | */ 62 | 63 | /** @defgroup USBD_DESC_Exported_Defines USBD_DESC_Exported_Defines 64 | * @brief Defines. 65 | * @{ 66 | */ 67 | 68 | /* USER CODE BEGIN EXPORTED_DEFINES */ 69 | 70 | /* USER CODE END EXPORTED_DEFINES */ 71 | 72 | /** 73 | * @} 74 | */ 75 | 76 | /** @defgroup USBD_DESC_Exported_TypesDefinitions USBD_DESC_Exported_TypesDefinitions 77 | * @brief Types. 78 | * @{ 79 | */ 80 | 81 | /* USER CODE BEGIN EXPORTED_TYPES */ 82 | 83 | /* USER CODE END EXPORTED_TYPES */ 84 | 85 | /** 86 | * @} 87 | */ 88 | 89 | /** @defgroup USBD_DESC_Exported_Macros USBD_DESC_Exported_Macros 90 | * @brief Aliases. 91 | * @{ 92 | */ 93 | 94 | /* USER CODE BEGIN EXPORTED_MACRO */ 95 | 96 | /* USER CODE END EXPORTED_MACRO */ 97 | 98 | /** 99 | * @} 100 | */ 101 | 102 | /** @defgroup USBD_DESC_Exported_Variables USBD_DESC_Exported_Variables 103 | * @brief Public variables. 104 | * @{ 105 | */ 106 | 107 | /** Descriptor for the Usb device. */ 108 | extern USBD_DescriptorsTypeDef FS_Desc; 109 | 110 | /* USER CODE BEGIN EXPORTED_VARIABLES */ 111 | 112 | /* USER CODE END EXPORTED_VARIABLES */ 113 | 114 | /** 115 | * @} 116 | */ 117 | 118 | /** @defgroup USBD_DESC_Exported_FunctionsPrototype USBD_DESC_Exported_FunctionsPrototype 119 | * @brief Public functions declaration. 120 | * @{ 121 | */ 122 | 123 | /* USER CODE BEGIN EXPORTED_FUNCTIONS */ 124 | 125 | /* USER CODE END EXPORTED_FUNCTIONS */ 126 | 127 | /** 128 | * @} 129 | */ 130 | 131 | /** 132 | * @} 133 | */ 134 | 135 | /** 136 | * @} 137 | */ 138 | 139 | #ifdef __cplusplus 140 | } 141 | #endif 142 | 143 | #endif /* __USBD_DESC__C__ */ 144 | 145 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 146 | -------------------------------------------------------------------------------- /Firmware/For HW version 10/USB_DEVICE/Target/usbd_conf.h: -------------------------------------------------------------------------------- 1 | /* USER CODE BEGIN Header */ 2 | /** 3 | ****************************************************************************** 4 | * @file : usbd_conf.h 5 | * @version : v2.0_Cube 6 | * @brief : Header for usbd_conf.c file. 7 | ****************************************************************************** 8 | * @attention 9 | * 10 | *

© Copyright (c) 2021 STMicroelectronics. 11 | * All rights reserved.

12 | * 13 | * This software component is licensed by ST under Ultimate Liberty license 14 | * SLA0044, the "License"; You may not use this file except in compliance with 15 | * the License. You may obtain a copy of the License at: 16 | * www.st.com/SLA0044 17 | * 18 | ****************************************************************************** 19 | */ 20 | /* USER CODE END Header */ 21 | 22 | /* Define to prevent recursive inclusion -------------------------------------*/ 23 | #ifndef __USBD_CONF__H__ 24 | #define __USBD_CONF__H__ 25 | 26 | #ifdef __cplusplus 27 | extern "C" { 28 | #endif 29 | 30 | /* Includes ------------------------------------------------------------------*/ 31 | #include 32 | #include 33 | #include 34 | #include "main.h" 35 | #include "stm32f0xx.h" 36 | #include "stm32f0xx_hal.h" 37 | 38 | /* USER CODE BEGIN INCLUDE */ 39 | 40 | /* USER CODE END INCLUDE */ 41 | 42 | /** @addtogroup USBD_OTG_DRIVER 43 | * @{ 44 | */ 45 | 46 | /** @defgroup USBD_CONF USBD_CONF 47 | * @brief Configuration file for Usb otg low level driver. 48 | * @{ 49 | */ 50 | 51 | /** @defgroup USBD_CONF_Exported_Variables USBD_CONF_Exported_Variables 52 | * @brief Public variables. 53 | * @{ 54 | */ 55 | 56 | /** 57 | * @} 58 | */ 59 | 60 | /** @defgroup USBD_CONF_Exported_Defines USBD_CONF_Exported_Defines 61 | * @brief Defines for configuration of the Usb device. 62 | * @{ 63 | */ 64 | 65 | /*---------- -----------*/ 66 | #define USBD_MAX_NUM_INTERFACES 1 67 | /*---------- -----------*/ 68 | #define USBD_MAX_NUM_CONFIGURATION 1 69 | /*---------- -----------*/ 70 | #define USBD_MAX_STR_DESC_SIZ 512 71 | /*---------- -----------*/ 72 | #define USBD_DEBUG_LEVEL 0 73 | /*---------- -----------*/ 74 | #define USBD_SELF_POWERED 0 75 | /*---------- -----------*/ 76 | #define MAX_STATIC_ALLOC_SIZE 512 77 | 78 | /****************************************/ 79 | /* #define for FS and HS identification */ 80 | #define DEVICE_FS 0 81 | 82 | /** 83 | * @} 84 | */ 85 | 86 | /** @defgroup USBD_CONF_Exported_Macros USBD_CONF_Exported_Macros 87 | * @brief Aliases. 88 | * @{ 89 | */ 90 | 91 | /* Memory management macros */ 92 | 93 | /** Alias for memory allocation. */ 94 | #define USBD_malloc (uint32_t *)USBD_static_malloc 95 | 96 | /** Alias for memory release. */ 97 | #define USBD_free USBD_static_free 98 | 99 | /** Alias for memory set. */ 100 | #define USBD_memset /* Not used */ 101 | 102 | /** Alias for memory copy. */ 103 | #define USBD_memcpy /* Not used */ 104 | 105 | /** Alias for delay. */ 106 | #define USBD_Delay HAL_Delay 107 | 108 | /* DEBUG macros */ 109 | 110 | #if (USBD_DEBUG_LEVEL > 0) 111 | #define USBD_UsrLog(...) printf(__VA_ARGS__);\ 112 | printf("\n"); 113 | #else 114 | #define USBD_UsrLog(...) 115 | #endif 116 | 117 | #if (USBD_DEBUG_LEVEL > 1) 118 | 119 | #define USBD_ErrLog(...) printf("ERROR: ") ;\ 120 | printf(__VA_ARGS__);\ 121 | printf("\n"); 122 | #else 123 | #define USBD_ErrLog(...) 124 | #endif 125 | 126 | #if (USBD_DEBUG_LEVEL > 2) 127 | #define USBD_DbgLog(...) printf("DEBUG : ") ;\ 128 | printf(__VA_ARGS__);\ 129 | printf("\n"); 130 | #else 131 | #define USBD_DbgLog(...) 132 | #endif 133 | 134 | /** 135 | * @} 136 | */ 137 | 138 | /** @defgroup USBD_CONF_Exported_Types USBD_CONF_Exported_Types 139 | * @brief Types. 140 | * @{ 141 | */ 142 | 143 | /** 144 | * @} 145 | */ 146 | 147 | /** @defgroup USBD_CONF_Exported_FunctionsPrototype USBD_CONF_Exported_FunctionsPrototype 148 | * @brief Declaration of public functions for Usb device. 149 | * @{ 150 | */ 151 | 152 | /* Exported functions -------------------------------------------------------*/ 153 | void *USBD_static_malloc(uint32_t size); 154 | void USBD_static_free(void *p); 155 | /** 156 | * @} 157 | */ 158 | 159 | /** 160 | * @} 161 | */ 162 | 163 | /** 164 | * @} 165 | */ 166 | 167 | #ifdef __cplusplus 168 | } 169 | #endif 170 | 171 | #endif /* __USBD_CONF__H__ */ 172 | 173 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 174 | -------------------------------------------------------------------------------- /Firmware/For HW version 10/calibration_graphs/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Firmware/For HW version 10/calibration_graphs/currentlimit_graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joeltroughton/uSMU/51ece4f96c4998d568ea8d883581df1624eadf7e/Firmware/For HW version 10/calibration_graphs/currentlimit_graph.png -------------------------------------------------------------------------------- /Firmware/For HW version 10/calibration_graphs/voltageadc_graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joeltroughton/uSMU/51ece4f96c4998d568ea8d883581df1624eadf7e/Firmware/For HW version 10/calibration_graphs/voltageadc_graph.png -------------------------------------------------------------------------------- /Firmware/For HW version 10/calibration_graphs/voltagedac_graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joeltroughton/uSMU/51ece4f96c4998d568ea8d883581df1624eadf7e/Firmware/For HW version 10/calibration_graphs/voltagedac_graph.png -------------------------------------------------------------------------------- /Firmware/For HW version 10/calibration_graphs/zerocurrent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joeltroughton/uSMU/51ece4f96c4998d568ea8d883581df1624eadf7e/Firmware/For HW version 10/calibration_graphs/zerocurrent.png -------------------------------------------------------------------------------- /Firmware/For HW version 10/calibration_graphs/zerocurrent_graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joeltroughton/uSMU/51ece4f96c4998d568ea8d883581df1624eadf7e/Firmware/For HW version 10/calibration_graphs/zerocurrent_graph.png -------------------------------------------------------------------------------- /Firmware/For HW version 10/ee/ee.h: -------------------------------------------------------------------------------- 1 | #ifndef __EEPROM_H 2 | #define __EEPROM_H 3 | 4 | /* 5 | Author: Nima Askari 6 | WebSite: http://www.github.com/NimaLTD 7 | Instagram: http://instagram.com/github.NimaLTD 8 | Youtube: https://www.youtube.com/channel/UCUhY7qY1klJm1d2kulr9ckw 9 | 10 | Version: 2.0.3 11 | 12 | (2.0.3) 13 | Add F411. 14 | 15 | (2.0.2) 16 | Add L4. 17 | 18 | (2.0.1) 19 | Change function name to ee_commit(). 20 | 21 | Reversion History: 22 | (2.0.0) 23 | Rewrite again. 24 | 25 | */ 26 | 27 | #ifdef __cplusplus 28 | extern "C" { 29 | #endif 30 | 31 | #include "stdbool.h" 32 | #include "main.h" 33 | 34 | //################################################################################################################ 35 | bool ee_init(void); 36 | bool ee_format(bool keepRamData); 37 | bool ee_read(uint32_t startVirtualAddress, uint32_t len, uint8_t* data); 38 | bool ee_write(uint32_t startVirtualAddress, uint32_t len, uint8_t* data); 39 | bool ee_writeToRam(uint32_t startVirtualAddress, uint32_t len, uint8_t* data); // only use when _EE_USE_RAM_BYTE is enabled 40 | bool ee_commit(void); // only use when _EE_USE_RAM_BYTE is enabled 41 | uint32_t ee_maxVirtualAddress(void); 42 | 43 | //################################################################################################################ 44 | 45 | #ifdef __cplusplus 46 | } 47 | #endif 48 | 49 | #endif 50 | -------------------------------------------------------------------------------- /Firmware/For HW version 10/ee/eeConfig.h: -------------------------------------------------------------------------------- 1 | #ifndef __EECONFIG_H 2 | #define __EECONFIG_H 3 | 4 | #define _EE_USE_FLASH_PAGE_OR_SECTOR (63) 5 | #define _EE_USE_RAM_BYTE (2048) 6 | #define _EE_VOLTAGE FLASH_VOLTAGE_RANGE_3 // use in some devices 7 | #endif 8 | -------------------------------------------------------------------------------- /Firmware/For HW version 10/mx.scratch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 3.0 4 | 5 | Single-project 6 | C:\Users\Joel\Documents\uSMU_v7_pga281\ 7 | true 8 | 0 9 | C:\Users\Joel\STM32Cube\Repository\STM32Cube_FW_F0_V1.11.1\ 10 | Drivers/CMSIS 11 | STM32CubeIDE 12 | uSMU_v7_pga281.ioc 13 | 14 | uSMU_v7_pga281 15 | C 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | uSMU_v7_pga281 24 | Core 25 | Advanced 26 | STM32F072CBUx 27 | Arm Cortex-M0 28 | None 29 | 30 | 31 | 32 | 33 | C:\Users\Joel\STM32Cube\Repository\STM32Cube_FW_F0_V1.11.1\Drivers\CMSIS\Device\ST\STM32F0xx\Source\Templates\gcc\startup_stm32f072xb.s 34 | 35 | 1 36 | 37 | 38 | 0x200 39 | 0x400 40 | custom 41 | swd 42 | 43 | 44 | 45 | 46 | 47 | 48 | USE_HAL_DRIVER 49 | STM32F072xB 50 | 51 | 52 | 53 | USB_DEVICE\App 54 | USB_DEVICE\Target 55 | Core\Inc 56 | Drivers\STM32F0xx_HAL_Driver\Inc 57 | Drivers\STM32F0xx_HAL_Driver\Inc\Legacy 58 | Middlewares\ST\STM32_USB_Device_Library\Core\Inc 59 | Middlewares\ST\STM32_USB_Device_Library\Class\CDC\Inc 60 | Drivers\CMSIS\Device\ST\STM32F0xx\Include 61 | Drivers\CMSIS\Include 62 | 63 | 64 | 65 | 66 | USE_FULL_LL_DRIVER 67 | MBEDTLS_CONFIG_FILE="mbedtls_config.h" 68 | USE_FULL_ASSERT=1U 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | false 81 | 82 | 83 | Core 84 | 85 | 86 | Drivers 87 | 88 | 89 | Middlewares 90 | 91 | 92 | USB_DEVICE 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | -------------------------------------------------------------------------------- /Firmware/For HW version 5/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | uSMU 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.cdt.managedbuilder.core.genmakebuilder 10 | clean,full,incremental, 11 | 12 | 13 | 14 | 15 | org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder 16 | full,incremental, 17 | 18 | 19 | 20 | 21 | 22 | com.st.stm32cube.ide.mcu.MCUProjectNature 23 | com.st.stm32cube.ide.mcu.MCUCubeProjectNature 24 | org.eclipse.cdt.core.cnature 25 | com.st.stm32cube.ide.mcu.MCUCubeIdeServicesRevAev2ProjectNature 26 | com.st.stm32cube.ide.mcu.MCUAdvancedStructureProjectNature 27 | com.st.stm32cube.ide.mcu.MCUEndUserDisabledTrustZoneProjectNature 28 | com.st.stm32cube.ide.mcu.MCUSingleCpuProjectNature 29 | com.st.stm32cube.ide.mcu.MCURootProjectNature 30 | org.eclipse.cdt.managedbuilder.core.managedBuildNature 31 | org.eclipse.cdt.managedbuilder.core.ScannerConfigNature 32 | 33 | 34 | -------------------------------------------------------------------------------- /Firmware/For HW version 5/.settings/language.settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /Firmware/For HW version 5/.settings/stm32cubeide.project.prefs: -------------------------------------------------------------------------------- 1 | 2F62501ED4689FB349E356AB974DBE57=E89B72CA1C3E82AE56771BEE1379307F 2 | 8DF89ED150041C4CBC7CB9A9CAA90856=E89B72CA1C3E82AE56771BEE1379307F 3 | DC22A860405A8BF2F2C095E5B6529F12=57B445F7ADCFDB7BF7050E759D96C152 4 | eclipse.preferences.version=1 5 | -------------------------------------------------------------------------------- /Firmware/For HW version 5/Core/Inc/main.h: -------------------------------------------------------------------------------- 1 | /* USER CODE BEGIN Header */ 2 | /** 3 | ****************************************************************************** 4 | * @file : main.h 5 | * @brief : Header for main.c file. 6 | * This file contains the common defines of the application. 7 | ****************************************************************************** 8 | * @attention 9 | * 10 | *

© Copyright (c) 2020 STMicroelectronics. 11 | * All rights reserved.

12 | * 13 | * This software component is licensed by ST under Ultimate Liberty license 14 | * SLA0044, the "License"; You may not use this file except in compliance with 15 | * the License. You may obtain a copy of the License at: 16 | * www.st.com/SLA0044 17 | * 18 | ****************************************************************************** 19 | */ 20 | /* USER CODE END Header */ 21 | 22 | /* Define to prevent recursive inclusion -------------------------------------*/ 23 | #ifndef __MAIN_H 24 | #define __MAIN_H 25 | 26 | #ifdef __cplusplus 27 | extern "C" { 28 | #endif 29 | 30 | /* Includes ------------------------------------------------------------------*/ 31 | #include "stm32f0xx_hal.h" 32 | 33 | /* Private includes ----------------------------------------------------------*/ 34 | /* USER CODE BEGIN Includes */ 35 | 36 | /* USER CODE END Includes */ 37 | 38 | /* Exported types ------------------------------------------------------------*/ 39 | /* USER CODE BEGIN ET */ 40 | 41 | /* USER CODE END ET */ 42 | 43 | /* Exported constants --------------------------------------------------------*/ 44 | /* USER CODE BEGIN EC */ 45 | 46 | /* USER CODE END EC */ 47 | 48 | /* Exported macro ------------------------------------------------------------*/ 49 | /* USER CODE BEGIN EM */ 50 | 51 | /* USER CODE END EM */ 52 | 53 | void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); 54 | 55 | /* Exported functions prototypes ---------------------------------------------*/ 56 | void Error_Handler(void); 57 | 58 | /* USER CODE BEGIN EFP */ 59 | 60 | /* USER CODE END EFP */ 61 | 62 | /* Private defines -----------------------------------------------------------*/ 63 | #define AMP_EN_Pin GPIO_PIN_5 64 | #define AMP_EN_GPIO_Port GPIOA 65 | #define LED_Pin GPIO_PIN_0 66 | #define LED_GPIO_Port GPIOB 67 | #define SHUNT_RANGE_Pin GPIO_PIN_5 68 | #define SHUNT_RANGE_GPIO_Port GPIOB 69 | #define ADC_Alert_Pin GPIO_PIN_9 70 | #define ADC_Alert_GPIO_Port GPIOB 71 | /* USER CODE BEGIN Private defines */ 72 | 73 | /* USER CODE END Private defines */ 74 | 75 | #ifdef __cplusplus 76 | } 77 | #endif 78 | 79 | #endif /* __MAIN_H */ 80 | 81 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 82 | -------------------------------------------------------------------------------- /Firmware/For HW version 5/Core/Inc/stm32f0xx_it.h: -------------------------------------------------------------------------------- 1 | /* USER CODE BEGIN Header */ 2 | /** 3 | ****************************************************************************** 4 | * @file stm32f0xx_it.h 5 | * @brief This file contains the headers of the interrupt handlers. 6 | ****************************************************************************** 7 | * @attention 8 | * 9 | *

© Copyright (c) 2020 STMicroelectronics. 10 | * All rights reserved.

11 | * 12 | * This software component is licensed by ST under Ultimate Liberty license 13 | * SLA0044, the "License"; You may not use this file except in compliance with 14 | * the License. You may obtain a copy of the License at: 15 | * www.st.com/SLA0044 16 | * 17 | ****************************************************************************** 18 | */ 19 | /* USER CODE END Header */ 20 | 21 | /* Define to prevent recursive inclusion -------------------------------------*/ 22 | #ifndef __STM32F0xx_IT_H 23 | #define __STM32F0xx_IT_H 24 | 25 | #ifdef __cplusplus 26 | extern "C" { 27 | #endif 28 | 29 | /* Private includes ----------------------------------------------------------*/ 30 | /* USER CODE BEGIN Includes */ 31 | 32 | /* USER CODE END Includes */ 33 | 34 | /* Exported types ------------------------------------------------------------*/ 35 | /* USER CODE BEGIN ET */ 36 | 37 | /* USER CODE END ET */ 38 | 39 | /* Exported constants --------------------------------------------------------*/ 40 | /* USER CODE BEGIN EC */ 41 | 42 | /* USER CODE END EC */ 43 | 44 | /* Exported macro ------------------------------------------------------------*/ 45 | /* USER CODE BEGIN EM */ 46 | 47 | /* USER CODE END EM */ 48 | 49 | /* Exported functions prototypes ---------------------------------------------*/ 50 | void NMI_Handler(void); 51 | void HardFault_Handler(void); 52 | void SVC_Handler(void); 53 | void PendSV_Handler(void); 54 | void SysTick_Handler(void); 55 | void USB_IRQHandler(void); 56 | /* USER CODE BEGIN EFP */ 57 | 58 | /* USER CODE END EFP */ 59 | 60 | #ifdef __cplusplus 61 | } 62 | #endif 63 | 64 | #endif /* __STM32F0xx_IT_H */ 65 | 66 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 67 | -------------------------------------------------------------------------------- /Firmware/For HW version 5/Core/Src/stm32f0xx_it.c: -------------------------------------------------------------------------------- 1 | /* USER CODE BEGIN Header */ 2 | /** 3 | ****************************************************************************** 4 | * @file stm32f0xx_it.c 5 | * @brief Interrupt Service Routines. 6 | ****************************************************************************** 7 | * @attention 8 | * 9 | *

© Copyright (c) 2020 STMicroelectronics. 10 | * All rights reserved.

11 | * 12 | * This software component is licensed by ST under Ultimate Liberty license 13 | * SLA0044, the "License"; You may not use this file except in compliance with 14 | * the License. You may obtain a copy of the License at: 15 | * www.st.com/SLA0044 16 | * 17 | ****************************************************************************** 18 | */ 19 | /* USER CODE END Header */ 20 | 21 | /* Includes ------------------------------------------------------------------*/ 22 | #include "main.h" 23 | #include "stm32f0xx_it.h" 24 | /* Private includes ----------------------------------------------------------*/ 25 | /* USER CODE BEGIN Includes */ 26 | /* USER CODE END Includes */ 27 | 28 | /* Private typedef -----------------------------------------------------------*/ 29 | /* USER CODE BEGIN TD */ 30 | 31 | /* USER CODE END TD */ 32 | 33 | /* Private define ------------------------------------------------------------*/ 34 | /* USER CODE BEGIN PD */ 35 | 36 | /* USER CODE END PD */ 37 | 38 | /* Private macro -------------------------------------------------------------*/ 39 | /* USER CODE BEGIN PM */ 40 | 41 | /* USER CODE END PM */ 42 | 43 | /* Private variables ---------------------------------------------------------*/ 44 | /* USER CODE BEGIN PV */ 45 | 46 | /* USER CODE END PV */ 47 | 48 | /* Private function prototypes -----------------------------------------------*/ 49 | /* USER CODE BEGIN PFP */ 50 | 51 | /* USER CODE END PFP */ 52 | 53 | /* Private user code ---------------------------------------------------------*/ 54 | /* USER CODE BEGIN 0 */ 55 | 56 | /* USER CODE END 0 */ 57 | 58 | /* External variables --------------------------------------------------------*/ 59 | extern PCD_HandleTypeDef hpcd_USB_FS; 60 | /* USER CODE BEGIN EV */ 61 | 62 | /* USER CODE END EV */ 63 | 64 | /******************************************************************************/ 65 | /* Cortex-M0 Processor Interruption and Exception Handlers */ 66 | /******************************************************************************/ 67 | /** 68 | * @brief This function handles Non maskable interrupt. 69 | */ 70 | void NMI_Handler(void) 71 | { 72 | /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ 73 | 74 | /* USER CODE END NonMaskableInt_IRQn 0 */ 75 | /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ 76 | 77 | /* USER CODE END NonMaskableInt_IRQn 1 */ 78 | } 79 | 80 | /** 81 | * @brief This function handles Hard fault interrupt. 82 | */ 83 | void HardFault_Handler(void) 84 | { 85 | /* USER CODE BEGIN HardFault_IRQn 0 */ 86 | 87 | /* USER CODE END HardFault_IRQn 0 */ 88 | while (1) 89 | { 90 | /* USER CODE BEGIN W1_HardFault_IRQn 0 */ 91 | /* USER CODE END W1_HardFault_IRQn 0 */ 92 | } 93 | } 94 | 95 | /** 96 | * @brief This function handles System service call via SWI instruction. 97 | */ 98 | void SVC_Handler(void) 99 | { 100 | /* USER CODE BEGIN SVC_IRQn 0 */ 101 | 102 | /* USER CODE END SVC_IRQn 0 */ 103 | /* USER CODE BEGIN SVC_IRQn 1 */ 104 | 105 | /* USER CODE END SVC_IRQn 1 */ 106 | } 107 | 108 | /** 109 | * @brief This function handles Pendable request for system service. 110 | */ 111 | void PendSV_Handler(void) 112 | { 113 | /* USER CODE BEGIN PendSV_IRQn 0 */ 114 | 115 | /* USER CODE END PendSV_IRQn 0 */ 116 | /* USER CODE BEGIN PendSV_IRQn 1 */ 117 | 118 | /* USER CODE END PendSV_IRQn 1 */ 119 | } 120 | 121 | /** 122 | * @brief This function handles System tick timer. 123 | */ 124 | void SysTick_Handler(void) 125 | { 126 | /* USER CODE BEGIN SysTick_IRQn 0 */ 127 | 128 | /* USER CODE END SysTick_IRQn 0 */ 129 | HAL_IncTick(); 130 | /* USER CODE BEGIN SysTick_IRQn 1 */ 131 | 132 | /* USER CODE END SysTick_IRQn 1 */ 133 | } 134 | 135 | /******************************************************************************/ 136 | /* STM32F0xx Peripheral Interrupt Handlers */ 137 | /* Add here the Interrupt Handlers for the used peripherals. */ 138 | /* For the available peripheral interrupt handler names, */ 139 | /* please refer to the startup file (startup_stm32f0xx.s). */ 140 | /******************************************************************************/ 141 | 142 | /** 143 | * @brief This function handles USB global interrupt / USB wake-up interrupt through EXTI line 18. 144 | */ 145 | void USB_IRQHandler(void) 146 | { 147 | /* USER CODE BEGIN USB_IRQn 0 */ 148 | 149 | /* USER CODE END USB_IRQn 0 */ 150 | HAL_PCD_IRQHandler(&hpcd_USB_FS); 151 | /* USER CODE BEGIN USB_IRQn 1 */ 152 | 153 | /* USER CODE END USB_IRQn 1 */ 154 | } 155 | 156 | /* USER CODE BEGIN 1 */ 157 | 158 | /* USER CODE END 1 */ 159 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 160 | -------------------------------------------------------------------------------- /Firmware/For HW version 5/Core/Src/syscalls.c: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file syscalls.c 4 | * @author Auto-generated by STM32CubeIDE 5 | * @brief STM32CubeIDE Minimal System calls file 6 | * 7 | * For more information about which c-functions 8 | * need which of these lowlevel functions 9 | * please consult the Newlib libc-manual 10 | ****************************************************************************** 11 | * @attention 12 | * 13 | *

© Copyright (c) 2020 STMicroelectronics. 14 | * All rights reserved.

15 | * 16 | * This software component is licensed by ST under BSD 3-Clause license, 17 | * the "License"; You may not use this file except in compliance with the 18 | * License. You may obtain a copy of the License at: 19 | * opensource.org/licenses/BSD-3-Clause 20 | * 21 | ****************************************************************************** 22 | */ 23 | 24 | /* Includes */ 25 | #include 26 | #include 27 | #include 28 | #include 29 | #include 30 | #include 31 | #include 32 | #include 33 | 34 | 35 | /* Variables */ 36 | //#undef errno 37 | extern int errno; 38 | extern int __io_putchar(int ch) __attribute__((weak)); 39 | extern int __io_getchar(void) __attribute__((weak)); 40 | 41 | register char * stack_ptr asm("sp"); 42 | 43 | char *__env[1] = { 0 }; 44 | char **environ = __env; 45 | 46 | 47 | /* Functions */ 48 | void initialise_monitor_handles() 49 | { 50 | } 51 | 52 | int _getpid(void) 53 | { 54 | return 1; 55 | } 56 | 57 | int _kill(int pid, int sig) 58 | { 59 | errno = EINVAL; 60 | return -1; 61 | } 62 | 63 | void _exit (int status) 64 | { 65 | _kill(status, -1); 66 | while (1) {} /* Make sure we hang here */ 67 | } 68 | 69 | __attribute__((weak)) int _read(int file, char *ptr, int len) 70 | { 71 | int DataIdx; 72 | 73 | for (DataIdx = 0; DataIdx < len; DataIdx++) 74 | { 75 | *ptr++ = __io_getchar(); 76 | } 77 | 78 | return len; 79 | } 80 | 81 | __attribute__((weak)) int _write(int file, char *ptr, int len) 82 | { 83 | int DataIdx; 84 | 85 | for (DataIdx = 0; DataIdx < len; DataIdx++) 86 | { 87 | __io_putchar(*ptr++); 88 | } 89 | return len; 90 | } 91 | 92 | int _close(int file) 93 | { 94 | return -1; 95 | } 96 | 97 | 98 | int _fstat(int file, struct stat *st) 99 | { 100 | st->st_mode = S_IFCHR; 101 | return 0; 102 | } 103 | 104 | int _isatty(int file) 105 | { 106 | return 1; 107 | } 108 | 109 | int _lseek(int file, int ptr, int dir) 110 | { 111 | return 0; 112 | } 113 | 114 | int _open(char *path, int flags, ...) 115 | { 116 | /* Pretend like we always fail */ 117 | return -1; 118 | } 119 | 120 | int _wait(int *status) 121 | { 122 | errno = ECHILD; 123 | return -1; 124 | } 125 | 126 | int _unlink(char *name) 127 | { 128 | errno = ENOENT; 129 | return -1; 130 | } 131 | 132 | int _times(struct tms *buf) 133 | { 134 | return -1; 135 | } 136 | 137 | int _stat(char *file, struct stat *st) 138 | { 139 | st->st_mode = S_IFCHR; 140 | return 0; 141 | } 142 | 143 | int _link(char *old, char *new) 144 | { 145 | errno = EMLINK; 146 | return -1; 147 | } 148 | 149 | int _fork(void) 150 | { 151 | errno = EAGAIN; 152 | return -1; 153 | } 154 | 155 | int _execve(char *name, char **argv, char **env) 156 | { 157 | errno = ENOMEM; 158 | return -1; 159 | } 160 | -------------------------------------------------------------------------------- /Firmware/For HW version 5/Core/Src/sysmem.c: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file sysmem.c 4 | * @author Generated by STM32CubeIDE 5 | * @brief STM32CubeIDE System Memory calls file 6 | * 7 | * For more information about which C functions 8 | * need which of these lowlevel functions 9 | * please consult the newlib libc manual 10 | ****************************************************************************** 11 | * @attention 12 | * 13 | *

© Copyright (c) 2020 STMicroelectronics. 14 | * All rights reserved.

15 | * 16 | * This software component is licensed by ST under BSD 3-Clause license, 17 | * the "License"; You may not use this file except in compliance with the 18 | * License. You may obtain a copy of the License at: 19 | * opensource.org/licenses/BSD-3-Clause 20 | * 21 | ****************************************************************************** 22 | */ 23 | 24 | /* Includes */ 25 | #include 26 | #include 27 | 28 | /** 29 | * Pointer to the current high watermark of the heap usage 30 | */ 31 | static uint8_t *__sbrk_heap_end = NULL; 32 | 33 | /** 34 | * @brief _sbrk() allocates memory to the newlib heap and is used by malloc 35 | * and others from the C library 36 | * 37 | * @verbatim 38 | * ############################################################################ 39 | * # .data # .bss # newlib heap # MSP stack # 40 | * # # # # Reserved by _Min_Stack_Size # 41 | * ############################################################################ 42 | * ^-- RAM start ^-- _end _estack, RAM end --^ 43 | * @endverbatim 44 | * 45 | * This implementation starts allocating at the '_end' linker symbol 46 | * The '_Min_Stack_Size' linker symbol reserves a memory for the MSP stack 47 | * The implementation considers '_estack' linker symbol to be RAM end 48 | * NOTE: If the MSP stack, at any point during execution, grows larger than the 49 | * reserved size, please increase the '_Min_Stack_Size'. 50 | * 51 | * @param incr Memory size 52 | * @return Pointer to allocated memory 53 | */ 54 | void *_sbrk(ptrdiff_t incr) 55 | { 56 | extern uint8_t _end; /* Symbol defined in the linker script */ 57 | extern uint8_t _estack; /* Symbol defined in the linker script */ 58 | extern uint32_t _Min_Stack_Size; /* Symbol defined in the linker script */ 59 | const uint32_t stack_limit = (uint32_t)&_estack - (uint32_t)&_Min_Stack_Size; 60 | const uint8_t *max_heap = (uint8_t *)stack_limit; 61 | uint8_t *prev_heap_end; 62 | 63 | /* Initalize heap end at first call */ 64 | if (NULL == __sbrk_heap_end) 65 | { 66 | __sbrk_heap_end = &_end; 67 | } 68 | 69 | /* Protect heap from growing into the reserved MSP stack */ 70 | if (__sbrk_heap_end + incr > max_heap) 71 | { 72 | errno = ENOMEM; 73 | return (void *)-1; 74 | } 75 | 76 | prev_heap_end = __sbrk_heap_end; 77 | __sbrk_heap_end += incr; 78 | 79 | return (void *)prev_heap_end; 80 | } 81 | -------------------------------------------------------------------------------- /Firmware/For HW version 5/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f072xb.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joeltroughton/uSMU/51ece4f96c4998d568ea8d883581df1624eadf7e/Firmware/For HW version 5/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f072xb.h -------------------------------------------------------------------------------- /Firmware/For HW version 5/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f0xx.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joeltroughton/uSMU/51ece4f96c4998d568ea8d883581df1624eadf7e/Firmware/For HW version 5/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f0xx.h -------------------------------------------------------------------------------- /Firmware/For HW version 5/Drivers/CMSIS/Device/ST/STM32F0xx/Include/system_stm32f0xx.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file system_stm32f0xx.h 4 | * @author MCD Application Team 5 | * @brief CMSIS Cortex-M0 Device System Source File for STM32F0xx devices. 6 | ****************************************************************************** 7 | * @attention 8 | * 9 | *

© Copyright (c) 2016 STMicroelectronics. 10 | * All rights reserved.

11 | * 12 | * This software component is licensed by ST under BSD 3-Clause license, 13 | * the "License"; You may not use this file except in compliance with the 14 | * License. You may obtain a copy of the License at: 15 | * opensource.org/licenses/BSD-3-Clause 16 | * 17 | ****************************************************************************** 18 | */ 19 | 20 | /** @addtogroup CMSIS 21 | * @{ 22 | */ 23 | 24 | /** @addtogroup stm32f0xx_system 25 | * @{ 26 | */ 27 | 28 | /** 29 | * @brief Define to prevent recursive inclusion 30 | */ 31 | #ifndef __SYSTEM_STM32F0XX_H 32 | #define __SYSTEM_STM32F0XX_H 33 | 34 | #ifdef __cplusplus 35 | extern "C" { 36 | #endif 37 | 38 | /** @addtogroup STM32F0xx_System_Includes 39 | * @{ 40 | */ 41 | 42 | /** 43 | * @} 44 | */ 45 | 46 | 47 | /** @addtogroup STM32F0xx_System_Exported_types 48 | * @{ 49 | */ 50 | /* This variable is updated in three ways: 51 | 1) by calling CMSIS function SystemCoreClockUpdate() 52 | 3) by calling HAL API function HAL_RCC_GetHCLKFreq() 53 | 3) by calling HAL API function HAL_RCC_ClockConfig() 54 | Note: If you use this function to configure the system clock; then there 55 | is no need to call the 2 first functions listed above, since SystemCoreClock 56 | variable is updated automatically. 57 | */ 58 | extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */ 59 | extern const uint8_t AHBPrescTable[16]; /*!< AHB prescalers table values */ 60 | extern const uint8_t APBPrescTable[8]; /*!< APB prescalers table values */ 61 | 62 | /** 63 | * @} 64 | */ 65 | 66 | /** @addtogroup STM32F0xx_System_Exported_Constants 67 | * @{ 68 | */ 69 | 70 | /** 71 | * @} 72 | */ 73 | 74 | /** @addtogroup STM32F0xx_System_Exported_Macros 75 | * @{ 76 | */ 77 | 78 | /** 79 | * @} 80 | */ 81 | 82 | /** @addtogroup STM32F0xx_System_Exported_Functions 83 | * @{ 84 | */ 85 | 86 | extern void SystemInit(void); 87 | extern void SystemCoreClockUpdate(void); 88 | /** 89 | * @} 90 | */ 91 | 92 | #ifdef __cplusplus 93 | } 94 | #endif 95 | 96 | #endif /*__SYSTEM_STM32F0XX_H */ 97 | 98 | /** 99 | * @} 100 | */ 101 | 102 | /** 103 | * @} 104 | */ 105 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 106 | -------------------------------------------------------------------------------- /Firmware/For HW version 5/Drivers/CMSIS/Include/cmsis_version.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************//** 2 | * @file cmsis_version.h 3 | * @brief CMSIS Core(M) Version definitions 4 | * @version V5.0.2 5 | * @date 19. April 2017 6 | ******************************************************************************/ 7 | /* 8 | * Copyright (c) 2009-2017 ARM Limited. All rights reserved. 9 | * 10 | * SPDX-License-Identifier: Apache-2.0 11 | * 12 | * Licensed under the Apache License, Version 2.0 (the License); you may 13 | * not use this file except in compliance with the License. 14 | * You may obtain a copy of the License at 15 | * 16 | * www.apache.org/licenses/LICENSE-2.0 17 | * 18 | * Unless required by applicable law or agreed to in writing, software 19 | * distributed under the License is distributed on an AS IS BASIS, WITHOUT 20 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 21 | * See the License for the specific language governing permissions and 22 | * limitations under the License. 23 | */ 24 | 25 | #if defined ( __ICCARM__ ) 26 | #pragma system_include /* treat file as system include file for MISRA check */ 27 | #elif defined (__clang__) 28 | #pragma clang system_header /* treat file as system include file */ 29 | #endif 30 | 31 | #ifndef __CMSIS_VERSION_H 32 | #define __CMSIS_VERSION_H 33 | 34 | /* CMSIS Version definitions */ 35 | #define __CM_CMSIS_VERSION_MAIN ( 5U) /*!< [31:16] CMSIS Core(M) main version */ 36 | #define __CM_CMSIS_VERSION_SUB ( 1U) /*!< [15:0] CMSIS Core(M) sub version */ 37 | #define __CM_CMSIS_VERSION ((__CM_CMSIS_VERSION_MAIN << 16U) | \ 38 | __CM_CMSIS_VERSION_SUB ) /*!< CMSIS Core(M) version number */ 39 | #endif 40 | -------------------------------------------------------------------------------- /Firmware/For HW version 5/Drivers/CMSIS/Include/tz_context.h: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * @file tz_context.h 3 | * @brief Context Management for Armv8-M TrustZone 4 | * @version V1.0.1 5 | * @date 10. January 2018 6 | ******************************************************************************/ 7 | /* 8 | * Copyright (c) 2017-2018 Arm Limited. All rights reserved. 9 | * 10 | * SPDX-License-Identifier: Apache-2.0 11 | * 12 | * Licensed under the Apache License, Version 2.0 (the License); you may 13 | * not use this file except in compliance with the License. 14 | * You may obtain a copy of the License at 15 | * 16 | * www.apache.org/licenses/LICENSE-2.0 17 | * 18 | * Unless required by applicable law or agreed to in writing, software 19 | * distributed under the License is distributed on an AS IS BASIS, WITHOUT 20 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 21 | * See the License for the specific language governing permissions and 22 | * limitations under the License. 23 | */ 24 | 25 | #if defined ( __ICCARM__ ) 26 | #pragma system_include /* treat file as system include file for MISRA check */ 27 | #elif defined (__clang__) 28 | #pragma clang system_header /* treat file as system include file */ 29 | #endif 30 | 31 | #ifndef TZ_CONTEXT_H 32 | #define TZ_CONTEXT_H 33 | 34 | #include 35 | 36 | #ifndef TZ_MODULEID_T 37 | #define TZ_MODULEID_T 38 | /// \details Data type that identifies secure software modules called by a process. 39 | typedef uint32_t TZ_ModuleId_t; 40 | #endif 41 | 42 | /// \details TZ Memory ID identifies an allocated memory slot. 43 | typedef uint32_t TZ_MemoryId_t; 44 | 45 | /// Initialize secure context memory system 46 | /// \return execution status (1: success, 0: error) 47 | uint32_t TZ_InitContextSystem_S (void); 48 | 49 | /// Allocate context memory for calling secure software modules in TrustZone 50 | /// \param[in] module identifies software modules called from non-secure mode 51 | /// \return value != 0 id TrustZone memory slot identifier 52 | /// \return value 0 no memory available or internal error 53 | TZ_MemoryId_t TZ_AllocModuleContext_S (TZ_ModuleId_t module); 54 | 55 | /// Free context memory that was previously allocated with \ref TZ_AllocModuleContext_S 56 | /// \param[in] id TrustZone memory slot identifier 57 | /// \return execution status (1: success, 0: error) 58 | uint32_t TZ_FreeModuleContext_S (TZ_MemoryId_t id); 59 | 60 | /// Load secure context (called on RTOS thread context switch) 61 | /// \param[in] id TrustZone memory slot identifier 62 | /// \return execution status (1: success, 0: error) 63 | uint32_t TZ_LoadContext_S (TZ_MemoryId_t id); 64 | 65 | /// Store secure context (called on RTOS thread context switch) 66 | /// \param[in] id TrustZone memory slot identifier 67 | /// \return execution status (1: success, 0: error) 68 | uint32_t TZ_StoreContext_S (TZ_MemoryId_t id); 69 | 70 | #endif // TZ_CONTEXT_H 71 | -------------------------------------------------------------------------------- /Firmware/For HW version 5/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_cortex.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file stm32f0xx_hal_cortex.h 4 | * @author MCD Application Team 5 | * @brief Header file of CORTEX HAL module. 6 | ****************************************************************************** 7 | * @attention 8 | * 9 | *

© Copyright (c) 2016 STMicroelectronics. 10 | * All rights reserved.

11 | * 12 | * This software component is licensed by ST under BSD 3-Clause license, 13 | * the "License"; You may not use this file except in compliance with the 14 | * License. You may obtain a copy of the License at: 15 | * opensource.org/licenses/BSD-3-Clause 16 | * 17 | ****************************************************************************** 18 | */ 19 | 20 | /* Define to prevent recursive inclusion -------------------------------------*/ 21 | #ifndef __STM32F0xx_HAL_CORTEX_H 22 | #define __STM32F0xx_HAL_CORTEX_H 23 | 24 | #ifdef __cplusplus 25 | extern "C" { 26 | #endif 27 | 28 | /* Includes ------------------------------------------------------------------*/ 29 | #include "stm32f0xx_hal_def.h" 30 | 31 | /** @addtogroup STM32F0xx_HAL_Driver 32 | * @{ 33 | */ 34 | 35 | /** @addtogroup CORTEX CORTEX 36 | * @{ 37 | */ 38 | /* Exported types ------------------------------------------------------------*/ 39 | /* Exported constants --------------------------------------------------------*/ 40 | 41 | /** @defgroup CORTEX_Exported_Constants CORTEX Exported Constants 42 | * @{ 43 | */ 44 | 45 | /** @defgroup CORTEX_SysTick_clock_source CORTEX SysTick clock source 46 | * @{ 47 | */ 48 | #define SYSTICK_CLKSOURCE_HCLK_DIV8 (0x00000000U) 49 | #define SYSTICK_CLKSOURCE_HCLK (0x00000004U) 50 | 51 | /** 52 | * @} 53 | */ 54 | 55 | /** 56 | * @} 57 | */ 58 | 59 | /* Exported Macros -----------------------------------------------------------*/ 60 | 61 | /* Exported functions --------------------------------------------------------*/ 62 | /** @addtogroup CORTEX_Exported_Functions CORTEX Exported Functions 63 | * @{ 64 | */ 65 | /** @addtogroup CORTEX_Exported_Functions_Group1 Initialization and de-initialization functions 66 | * @brief Initialization and Configuration functions 67 | * @{ 68 | */ 69 | /* Initialization and de-initialization functions *******************************/ 70 | void HAL_NVIC_SetPriority(IRQn_Type IRQn,uint32_t PreemptPriority, uint32_t SubPriority); 71 | void HAL_NVIC_EnableIRQ(IRQn_Type IRQn); 72 | void HAL_NVIC_DisableIRQ(IRQn_Type IRQn); 73 | void HAL_NVIC_SystemReset(void); 74 | uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb); 75 | /** 76 | * @} 77 | */ 78 | 79 | /** @addtogroup CORTEX_Exported_Functions_Group2 Peripheral Control functions 80 | * @brief Cortex control functions 81 | * @{ 82 | */ 83 | 84 | /* Peripheral Control functions *************************************************/ 85 | uint32_t HAL_NVIC_GetPriority(IRQn_Type IRQn); 86 | uint32_t HAL_NVIC_GetPendingIRQ(IRQn_Type IRQn); 87 | void HAL_NVIC_SetPendingIRQ(IRQn_Type IRQn); 88 | void HAL_NVIC_ClearPendingIRQ(IRQn_Type IRQn); 89 | void HAL_SYSTICK_CLKSourceConfig(uint32_t CLKSource); 90 | void HAL_SYSTICK_IRQHandler(void); 91 | void HAL_SYSTICK_Callback(void); 92 | /** 93 | * @} 94 | */ 95 | 96 | /** 97 | * @} 98 | */ 99 | 100 | /* Private types -------------------------------------------------------------*/ 101 | /* Private variables ---------------------------------------------------------*/ 102 | /* Private constants ---------------------------------------------------------*/ 103 | /* Private macros ------------------------------------------------------------*/ 104 | /** @defgroup CORTEX_Private_Macros CORTEX Private Macros 105 | * @{ 106 | */ 107 | #define IS_NVIC_PREEMPTION_PRIORITY(PRIORITY) ((PRIORITY) < 0x4) 108 | 109 | #define IS_NVIC_DEVICE_IRQ(IRQ) ((IRQ) >= 0x00) 110 | 111 | #define IS_SYSTICK_CLK_SOURCE(SOURCE) (((SOURCE) == SYSTICK_CLKSOURCE_HCLK) || \ 112 | ((SOURCE) == SYSTICK_CLKSOURCE_HCLK_DIV8)) 113 | /** 114 | * @} 115 | */ 116 | 117 | /** 118 | * @} 119 | */ 120 | 121 | /** 122 | * @} 123 | */ 124 | 125 | #ifdef __cplusplus 126 | } 127 | #endif 128 | 129 | #endif /* __STM32F0xx_HAL_CORTEX_H */ 130 | 131 | 132 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 133 | 134 | -------------------------------------------------------------------------------- /Firmware/For HW version 5/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_pcd_ex.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file stm32f0xx_hal_pcd_ex.h 4 | * @author MCD Application Team 5 | * @brief Header file of PCD HAL Extension module. 6 | ****************************************************************************** 7 | * @attention 8 | * 9 | *

© Copyright (c) 2016 STMicroelectronics. 10 | * All rights reserved.

11 | * 12 | * This software component is licensed by ST under BSD 3-Clause license, 13 | * the "License"; You may not use this file except in compliance with the 14 | * License. You may obtain a copy of the License at: 15 | * opensource.org/licenses/BSD-3-Clause 16 | * 17 | ****************************************************************************** 18 | */ 19 | 20 | /* Define to prevent recursive inclusion -------------------------------------*/ 21 | #ifndef STM32F0xx_HAL_PCD_EX_H 22 | #define STM32F0xx_HAL_PCD_EX_H 23 | 24 | #ifdef __cplusplus 25 | extern "C" { 26 | #endif 27 | 28 | /* Includes ------------------------------------------------------------------*/ 29 | #include "stm32f0xx_hal_def.h" 30 | 31 | #if defined (USB) 32 | /** @addtogroup STM32F0xx_HAL_Driver 33 | * @{ 34 | */ 35 | 36 | /** @addtogroup PCDEx 37 | * @{ 38 | */ 39 | /* Exported types ------------------------------------------------------------*/ 40 | /* Exported constants --------------------------------------------------------*/ 41 | /* Exported macros -----------------------------------------------------------*/ 42 | /* Exported functions --------------------------------------------------------*/ 43 | /** @addtogroup PCDEx_Exported_Functions PCDEx Exported Functions 44 | * @{ 45 | */ 46 | /** @addtogroup PCDEx_Exported_Functions_Group1 Peripheral Control functions 47 | * @{ 48 | */ 49 | 50 | 51 | 52 | HAL_StatusTypeDef HAL_PCDEx_PMAConfig(PCD_HandleTypeDef *hpcd, uint16_t ep_addr, 53 | uint16_t ep_kind, uint32_t pmaadress); 54 | 55 | 56 | HAL_StatusTypeDef HAL_PCDEx_ActivateLPM(PCD_HandleTypeDef *hpcd); 57 | HAL_StatusTypeDef HAL_PCDEx_DeActivateLPM(PCD_HandleTypeDef *hpcd); 58 | 59 | 60 | HAL_StatusTypeDef HAL_PCDEx_ActivateBCD(PCD_HandleTypeDef *hpcd); 61 | HAL_StatusTypeDef HAL_PCDEx_DeActivateBCD(PCD_HandleTypeDef *hpcd); 62 | void HAL_PCDEx_BCD_VBUSDetect(PCD_HandleTypeDef *hpcd); 63 | 64 | void HAL_PCDEx_LPM_Callback(PCD_HandleTypeDef *hpcd, PCD_LPM_MsgTypeDef msg); 65 | void HAL_PCDEx_BCD_Callback(PCD_HandleTypeDef *hpcd, PCD_BCD_MsgTypeDef msg); 66 | 67 | /** 68 | * @} 69 | */ 70 | 71 | /** 72 | * @} 73 | */ 74 | 75 | /** 76 | * @} 77 | */ 78 | 79 | /** 80 | * @} 81 | */ 82 | #endif /* defined (USB) */ 83 | 84 | #ifdef __cplusplus 85 | } 86 | #endif 87 | 88 | 89 | #endif /* STM32F0xx_HAL_PCD_EX_H */ 90 | 91 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 92 | -------------------------------------------------------------------------------- /Firmware/For HW version 5/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file usbd_req.h 4 | * @author MCD Application Team 5 | * @brief Header file for the usbd_req.c file 6 | ****************************************************************************** 7 | * @attention 8 | * 9 | *

© Copyright (c) 2015 STMicroelectronics. 10 | * All rights reserved.

11 | * 12 | * This software component is licensed by ST under Ultimate Liberty license 13 | * SLA0044, the "License"; You may not use this file except in compliance with 14 | * the License. You may obtain a copy of the License at: 15 | * www.st.com/SLA0044 16 | * 17 | ****************************************************************************** 18 | */ 19 | 20 | /* Define to prevent recursive inclusion -------------------------------------*/ 21 | #ifndef __USB_REQUEST_H 22 | #define __USB_REQUEST_H 23 | 24 | #ifdef __cplusplus 25 | extern "C" { 26 | #endif 27 | 28 | /* Includes ------------------------------------------------------------------*/ 29 | #include "usbd_def.h" 30 | 31 | 32 | /** @addtogroup STM32_USB_DEVICE_LIBRARY 33 | * @{ 34 | */ 35 | 36 | /** @defgroup USBD_REQ 37 | * @brief header file for the usbd_req.c file 38 | * @{ 39 | */ 40 | 41 | /** @defgroup USBD_REQ_Exported_Defines 42 | * @{ 43 | */ 44 | /** 45 | * @} 46 | */ 47 | 48 | 49 | /** @defgroup USBD_REQ_Exported_Types 50 | * @{ 51 | */ 52 | /** 53 | * @} 54 | */ 55 | 56 | 57 | 58 | /** @defgroup USBD_REQ_Exported_Macros 59 | * @{ 60 | */ 61 | /** 62 | * @} 63 | */ 64 | 65 | /** @defgroup USBD_REQ_Exported_Variables 66 | * @{ 67 | */ 68 | /** 69 | * @} 70 | */ 71 | 72 | /** @defgroup USBD_REQ_Exported_FunctionsPrototype 73 | * @{ 74 | */ 75 | 76 | USBD_StatusTypeDef USBD_StdDevReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); 77 | USBD_StatusTypeDef USBD_StdItfReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); 78 | USBD_StatusTypeDef USBD_StdEPReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); 79 | 80 | 81 | void USBD_CtlError(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); 82 | 83 | void USBD_ParseSetupRequest(USBD_SetupReqTypedef *req, uint8_t *pdata); 84 | 85 | void USBD_GetString(uint8_t *desc, uint8_t *unicode, uint16_t *len); 86 | /** 87 | * @} 88 | */ 89 | 90 | #ifdef __cplusplus 91 | } 92 | #endif 93 | 94 | #endif /* __USB_REQUEST_H */ 95 | 96 | /** 97 | * @} 98 | */ 99 | 100 | /** 101 | * @} 102 | */ 103 | 104 | 105 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 106 | -------------------------------------------------------------------------------- /Firmware/For HW version 5/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file usbd_ioreq.h 4 | * @author MCD Application Team 5 | * @brief Header file for the usbd_ioreq.c file 6 | ****************************************************************************** 7 | * @attention 8 | * 9 | *

© Copyright (c) 2015 STMicroelectronics. 10 | * All rights reserved.

11 | * 12 | * This software component is licensed by ST under Ultimate Liberty license 13 | * SLA0044, the "License"; You may not use this file except in compliance with 14 | * the License. You may obtain a copy of the License at: 15 | * www.st.com/SLA0044 16 | * 17 | ****************************************************************************** 18 | */ 19 | 20 | /* Define to prevent recursive inclusion -------------------------------------*/ 21 | #ifndef __USBD_IOREQ_H 22 | #define __USBD_IOREQ_H 23 | 24 | #ifdef __cplusplus 25 | extern "C" { 26 | #endif 27 | 28 | /* Includes ------------------------------------------------------------------*/ 29 | #include "usbd_def.h" 30 | #include "usbd_core.h" 31 | 32 | /** @addtogroup STM32_USB_DEVICE_LIBRARY 33 | * @{ 34 | */ 35 | 36 | /** @defgroup USBD_IOREQ 37 | * @brief header file for the usbd_ioreq.c file 38 | * @{ 39 | */ 40 | 41 | /** @defgroup USBD_IOREQ_Exported_Defines 42 | * @{ 43 | */ 44 | /** 45 | * @} 46 | */ 47 | 48 | 49 | /** @defgroup USBD_IOREQ_Exported_Types 50 | * @{ 51 | */ 52 | 53 | 54 | /** 55 | * @} 56 | */ 57 | 58 | 59 | 60 | /** @defgroup USBD_IOREQ_Exported_Macros 61 | * @{ 62 | */ 63 | 64 | /** 65 | * @} 66 | */ 67 | 68 | /** @defgroup USBD_IOREQ_Exported_Variables 69 | * @{ 70 | */ 71 | 72 | /** 73 | * @} 74 | */ 75 | 76 | /** @defgroup USBD_IOREQ_Exported_FunctionsPrototype 77 | * @{ 78 | */ 79 | 80 | USBD_StatusTypeDef USBD_CtlSendData(USBD_HandleTypeDef *pdev, 81 | uint8_t *pbuf, 82 | uint16_t len); 83 | 84 | USBD_StatusTypeDef USBD_CtlContinueSendData(USBD_HandleTypeDef *pdev, 85 | uint8_t *pbuf, 86 | uint16_t len); 87 | 88 | USBD_StatusTypeDef USBD_CtlPrepareRx(USBD_HandleTypeDef *pdev, 89 | uint8_t *pbuf, 90 | uint16_t len); 91 | 92 | USBD_StatusTypeDef USBD_CtlContinueRx(USBD_HandleTypeDef *pdev, 93 | uint8_t *pbuf, 94 | uint16_t len); 95 | 96 | USBD_StatusTypeDef USBD_CtlSendStatus(USBD_HandleTypeDef *pdev); 97 | 98 | USBD_StatusTypeDef USBD_CtlReceiveStatus(USBD_HandleTypeDef *pdev); 99 | 100 | uint32_t USBD_GetRxCount(USBD_HandleTypeDef *pdev, uint8_t ep_addr); 101 | 102 | /** 103 | * @} 104 | */ 105 | 106 | #ifdef __cplusplus 107 | } 108 | #endif 109 | 110 | #endif /* __USBD_IOREQ_H */ 111 | 112 | /** 113 | * @} 114 | */ 115 | 116 | /** 117 | * @} 118 | */ 119 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 120 | -------------------------------------------------------------------------------- /Firmware/For HW version 5/README.md: -------------------------------------------------------------------------------- 1 | # μSMU Firmware for Hardware version 5 2 | 3 | To flash firmware 4 | 5 | 1. Open `.cproject` in STM32CubeIDE 1.5.0 6 | 2. Build and flash to μSMU using a ST-Link of J-Link 7 | 8 | 9 | 10 | SMU commands 11 | 12 | | Command | Function | VCP output | 13 | | --------------------- | ------------------------------------------------------------ | :-------------------------------- | 14 | | `CH1:ENA` | Enable SMU output | None | 15 | | `CH1:DIS` | Disable SMU output (high impedance) | None | 16 | | `CH1:CUR` *float* | Set the sink/source current limit in mA | None | 17 | | `CH1:VOL` *float* | Set the SMU to the requested voltage level in volts | None | 18 | | `CH1:MEA:VOL` *float* | Set the SMU to the requested voltage level in volts and return the measured voltage and current | "voltage (V),current (A)" | 19 | 20 | -------------------------------------------------------------------------------- /Firmware/For HW version 5/STM32F072C8UX_FLASH.ld: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file LinkerScript.ld 4 | * @author Auto-generated by STM32CubeIDE 5 | * @brief Linker script for STM32F072C8Ux Device from STM32F0 series 6 | * 64Kbytes FLASH 7 | * 16Kbytes RAM 8 | * 9 | * Set heap size, stack size and stack location according 10 | * to application requirements. 11 | * 12 | * Set memory bank area and size if external memory is used 13 | ****************************************************************************** 14 | * @attention 15 | * 16 | *

© Copyright (c) 2020 STMicroelectronics. 17 | * All rights reserved.

18 | * 19 | * This software component is licensed by ST under BSD 3-Clause license, 20 | * the "License"; You may not use this file except in compliance with the 21 | * License. You may obtain a copy of the License at: 22 | * opensource.org/licenses/BSD-3-Clause 23 | * 24 | ****************************************************************************** 25 | */ 26 | 27 | /* Entry Point */ 28 | ENTRY(Reset_Handler) 29 | 30 | /* Highest address of the user mode stack */ 31 | _estack = ORIGIN(RAM) + LENGTH(RAM); /* end of "RAM" Ram type memory */ 32 | 33 | _Min_Heap_Size = 0x200 ; /* required amount of heap */ 34 | _Min_Stack_Size = 0x400 ; /* required amount of stack */ 35 | 36 | /* Memories definition */ 37 | MEMORY 38 | { 39 | RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 16K 40 | FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 64K 41 | } 42 | 43 | /* Sections */ 44 | SECTIONS 45 | { 46 | /* The startup code into "FLASH" Rom type memory */ 47 | .isr_vector : 48 | { 49 | . = ALIGN(4); 50 | KEEP(*(.isr_vector)) /* Startup code */ 51 | . = ALIGN(4); 52 | } >FLASH 53 | 54 | /* The program code and other data into "FLASH" Rom type memory */ 55 | .text : 56 | { 57 | . = ALIGN(4); 58 | *(.text) /* .text sections (code) */ 59 | *(.text*) /* .text* sections (code) */ 60 | *(.glue_7) /* glue arm to thumb code */ 61 | *(.glue_7t) /* glue thumb to arm code */ 62 | *(.eh_frame) 63 | 64 | KEEP (*(.init)) 65 | KEEP (*(.fini)) 66 | 67 | . = ALIGN(4); 68 | _etext = .; /* define a global symbols at end of code */ 69 | } >FLASH 70 | 71 | /* Constant data into "FLASH" Rom type memory */ 72 | .rodata : 73 | { 74 | . = ALIGN(4); 75 | *(.rodata) /* .rodata sections (constants, strings, etc.) */ 76 | *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ 77 | . = ALIGN(4); 78 | } >FLASH 79 | 80 | .ARM.extab : { 81 | . = ALIGN(4); 82 | *(.ARM.extab* .gnu.linkonce.armextab.*) 83 | . = ALIGN(4); 84 | } >FLASH 85 | 86 | .ARM : { 87 | . = ALIGN(4); 88 | __exidx_start = .; 89 | *(.ARM.exidx*) 90 | __exidx_end = .; 91 | . = ALIGN(4); 92 | } >FLASH 93 | 94 | .preinit_array : 95 | { 96 | . = ALIGN(4); 97 | PROVIDE_HIDDEN (__preinit_array_start = .); 98 | KEEP (*(.preinit_array*)) 99 | PROVIDE_HIDDEN (__preinit_array_end = .); 100 | . = ALIGN(4); 101 | } >FLASH 102 | 103 | .init_array : 104 | { 105 | . = ALIGN(4); 106 | PROVIDE_HIDDEN (__init_array_start = .); 107 | KEEP (*(SORT(.init_array.*))) 108 | KEEP (*(.init_array*)) 109 | PROVIDE_HIDDEN (__init_array_end = .); 110 | . = ALIGN(4); 111 | } >FLASH 112 | 113 | .fini_array : 114 | { 115 | . = ALIGN(4); 116 | PROVIDE_HIDDEN (__fini_array_start = .); 117 | KEEP (*(SORT(.fini_array.*))) 118 | KEEP (*(.fini_array*)) 119 | PROVIDE_HIDDEN (__fini_array_end = .); 120 | . = ALIGN(4); 121 | } >FLASH 122 | 123 | /* Used by the startup to initialize data */ 124 | _sidata = LOADADDR(.data); 125 | 126 | /* Initialized data sections into "RAM" Ram type memory */ 127 | .data : 128 | { 129 | . = ALIGN(4); 130 | _sdata = .; /* create a global symbol at data start */ 131 | *(.data) /* .data sections */ 132 | *(.data*) /* .data* sections */ 133 | 134 | . = ALIGN(4); 135 | _edata = .; /* define a global symbol at data end */ 136 | 137 | } >RAM AT> FLASH 138 | 139 | /* Uninitialized data section into "RAM" Ram type memory */ 140 | . = ALIGN(4); 141 | .bss : 142 | { 143 | /* This is used by the startup in order to initialize the .bss section */ 144 | _sbss = .; /* define a global symbol at bss start */ 145 | __bss_start__ = _sbss; 146 | *(.bss) 147 | *(.bss*) 148 | *(COMMON) 149 | 150 | . = ALIGN(4); 151 | _ebss = .; /* define a global symbol at bss end */ 152 | __bss_end__ = _ebss; 153 | } >RAM 154 | 155 | /* User_heap_stack section, used to check that there is enough "RAM" Ram type memory left */ 156 | ._user_heap_stack : 157 | { 158 | . = ALIGN(8); 159 | PROVIDE ( end = . ); 160 | PROVIDE ( _end = . ); 161 | . = . + _Min_Heap_Size; 162 | . = . + _Min_Stack_Size; 163 | . = ALIGN(8); 164 | } >RAM 165 | 166 | /* Remove information from the compiler libraries */ 167 | /DISCARD/ : 168 | { 169 | libc.a ( * ) 170 | libm.a ( * ) 171 | libgcc.a ( * ) 172 | } 173 | 174 | .ARM.attributes 0 : { *(.ARM.attributes) } 175 | } 176 | -------------------------------------------------------------------------------- /Firmware/For HW version 5/USB_DEVICE/App/usb_device.c: -------------------------------------------------------------------------------- 1 | /* USER CODE BEGIN Header */ 2 | /** 3 | ****************************************************************************** 4 | * @file : usb_device.c 5 | * @version : v2.0_Cube 6 | * @brief : This file implements the USB Device 7 | ****************************************************************************** 8 | * @attention 9 | * 10 | *

© Copyright (c) 2020 STMicroelectronics. 11 | * All rights reserved.

12 | * 13 | * This software component is licensed by ST under Ultimate Liberty license 14 | * SLA0044, the "License"; You may not use this file except in compliance with 15 | * the License. You may obtain a copy of the License at: 16 | * www.st.com/SLA0044 17 | * 18 | ****************************************************************************** 19 | */ 20 | /* USER CODE END Header */ 21 | 22 | /* Includes ------------------------------------------------------------------*/ 23 | 24 | #include "usb_device.h" 25 | #include "usbd_core.h" 26 | #include "usbd_desc.h" 27 | #include "usbd_cdc.h" 28 | #include "usbd_cdc_if.h" 29 | 30 | /* USER CODE BEGIN Includes */ 31 | 32 | /* USER CODE END Includes */ 33 | 34 | /* USER CODE BEGIN PV */ 35 | /* Private variables ---------------------------------------------------------*/ 36 | 37 | /* USER CODE END PV */ 38 | 39 | /* USER CODE BEGIN PFP */ 40 | /* Private function prototypes -----------------------------------------------*/ 41 | 42 | /* USER CODE END PFP */ 43 | 44 | /* USB Device Core handle declaration. */ 45 | USBD_HandleTypeDef hUsbDeviceFS; 46 | 47 | /* 48 | * -- Insert your variables declaration here -- 49 | */ 50 | /* USER CODE BEGIN 0 */ 51 | 52 | /* USER CODE END 0 */ 53 | 54 | /* 55 | * -- Insert your external function declaration here -- 56 | */ 57 | /* USER CODE BEGIN 1 */ 58 | 59 | /* USER CODE END 1 */ 60 | 61 | /** 62 | * Init USB device Library, add supported class and start the library 63 | * @retval None 64 | */ 65 | void MX_USB_DEVICE_Init(void) 66 | { 67 | /* USER CODE BEGIN USB_DEVICE_Init_PreTreatment */ 68 | 69 | /* USER CODE END USB_DEVICE_Init_PreTreatment */ 70 | 71 | /* Init Device Library, add supported class and start the library. */ 72 | if (USBD_Init(&hUsbDeviceFS, &FS_Desc, DEVICE_FS) != USBD_OK) 73 | { 74 | Error_Handler(); 75 | } 76 | if (USBD_RegisterClass(&hUsbDeviceFS, &USBD_CDC) != USBD_OK) 77 | { 78 | Error_Handler(); 79 | } 80 | if (USBD_CDC_RegisterInterface(&hUsbDeviceFS, &USBD_Interface_fops_FS) != USBD_OK) 81 | { 82 | Error_Handler(); 83 | } 84 | if (USBD_Start(&hUsbDeviceFS) != USBD_OK) 85 | { 86 | Error_Handler(); 87 | } 88 | 89 | /* USER CODE BEGIN USB_DEVICE_Init_PostTreatment */ 90 | 91 | /* USER CODE END USB_DEVICE_Init_PostTreatment */ 92 | } 93 | 94 | /** 95 | * @} 96 | */ 97 | 98 | /** 99 | * @} 100 | */ 101 | 102 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 103 | -------------------------------------------------------------------------------- /Firmware/For HW version 5/USB_DEVICE/App/usb_device.h: -------------------------------------------------------------------------------- 1 | /* USER CODE BEGIN Header */ 2 | /** 3 | ****************************************************************************** 4 | * @file : usb_device.h 5 | * @version : v2.0_Cube 6 | * @brief : Header for usb_device.c file. 7 | ****************************************************************************** 8 | * @attention 9 | * 10 | *

© Copyright (c) 2020 STMicroelectronics. 11 | * All rights reserved.

12 | * 13 | * This software component is licensed by ST under Ultimate Liberty license 14 | * SLA0044, the "License"; You may not use this file except in compliance with 15 | * the License. You may obtain a copy of the License at: 16 | * www.st.com/SLA0044 17 | * 18 | ****************************************************************************** 19 | */ 20 | /* USER CODE END Header */ 21 | 22 | /* Define to prevent recursive inclusion -------------------------------------*/ 23 | #ifndef __USB_DEVICE__H__ 24 | #define __USB_DEVICE__H__ 25 | 26 | #ifdef __cplusplus 27 | extern "C" { 28 | #endif 29 | 30 | /* Includes ------------------------------------------------------------------*/ 31 | #include "stm32f0xx.h" 32 | #include "stm32f0xx_hal.h" 33 | #include "usbd_def.h" 34 | 35 | /* USER CODE BEGIN INCLUDE */ 36 | 37 | /* USER CODE END INCLUDE */ 38 | 39 | /** @addtogroup USBD_OTG_DRIVER 40 | * @{ 41 | */ 42 | 43 | /** @defgroup USBD_DEVICE USBD_DEVICE 44 | * @brief Device file for Usb otg low level driver. 45 | * @{ 46 | */ 47 | 48 | /** @defgroup USBD_DEVICE_Exported_Variables USBD_DEVICE_Exported_Variables 49 | * @brief Public variables. 50 | * @{ 51 | */ 52 | 53 | /* Private variables ---------------------------------------------------------*/ 54 | /* USER CODE BEGIN PV */ 55 | 56 | /* USER CODE END PV */ 57 | 58 | /* Private function prototypes -----------------------------------------------*/ 59 | /* USER CODE BEGIN PFP */ 60 | 61 | /* USER CODE END PFP */ 62 | 63 | /* 64 | * -- Insert your variables declaration here -- 65 | */ 66 | /* USER CODE BEGIN VARIABLES */ 67 | 68 | /* USER CODE END VARIABLES */ 69 | /** 70 | * @} 71 | */ 72 | 73 | /** @defgroup USBD_DEVICE_Exported_FunctionsPrototype USBD_DEVICE_Exported_FunctionsPrototype 74 | * @brief Declaration of public functions for Usb device. 75 | * @{ 76 | */ 77 | 78 | /** USB Device initialization function. */ 79 | void MX_USB_DEVICE_Init(void); 80 | 81 | /* 82 | * -- Insert functions declaration here -- 83 | */ 84 | /* USER CODE BEGIN FD */ 85 | 86 | /* USER CODE END FD */ 87 | /** 88 | * @} 89 | */ 90 | 91 | /** 92 | * @} 93 | */ 94 | 95 | /** 96 | * @} 97 | */ 98 | 99 | #ifdef __cplusplus 100 | } 101 | #endif 102 | 103 | #endif /* __USB_DEVICE__H__ */ 104 | 105 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 106 | -------------------------------------------------------------------------------- /Firmware/For HW version 5/USB_DEVICE/App/usbd_cdc_if.h: -------------------------------------------------------------------------------- 1 | /* USER CODE BEGIN Header */ 2 | /** 3 | ****************************************************************************** 4 | * @file : usbd_cdc_if.h 5 | * @version : v2.0_Cube 6 | * @brief : Header for usbd_cdc_if.c file. 7 | ****************************************************************************** 8 | * @attention 9 | * 10 | *

© Copyright (c) 2020 STMicroelectronics. 11 | * All rights reserved.

12 | * 13 | * This software component is licensed by ST under Ultimate Liberty license 14 | * SLA0044, the "License"; You may not use this file except in compliance with 15 | * the License. You may obtain a copy of the License at: 16 | * www.st.com/SLA0044 17 | * 18 | ****************************************************************************** 19 | */ 20 | /* USER CODE END Header */ 21 | 22 | /* Define to prevent recursive inclusion -------------------------------------*/ 23 | #ifndef __USBD_CDC_IF_H__ 24 | #define __USBD_CDC_IF_H__ 25 | 26 | #ifdef __cplusplus 27 | extern "C" { 28 | #endif 29 | 30 | /* Includes ------------------------------------------------------------------*/ 31 | #include "usbd_cdc.h" 32 | 33 | /* USER CODE BEGIN INCLUDE */ 34 | #define FIFO_SIZE 32 // must be 2^N 35 | 36 | #define FIFO_INCR(x) (((x)+1)&((FIFO_SIZE)-1)) 37 | 38 | /* Structure of FIFO*/ 39 | 40 | typedef struct FIFO 41 | 42 | { 43 | uint32_t head; 44 | uint32_t tail; 45 | uint8_t data[FIFO_SIZE]; 46 | } FIFO; 47 | 48 | FIFO RX_FIFO; 49 | 50 | /* USER CODE END INCLUDE */ 51 | 52 | /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY 53 | * @brief For Usb device. 54 | * @{ 55 | */ 56 | 57 | /** @defgroup USBD_CDC_IF USBD_CDC_IF 58 | * @brief Usb VCP device module 59 | * @{ 60 | */ 61 | 62 | /** @defgroup USBD_CDC_IF_Exported_Defines USBD_CDC_IF_Exported_Defines 63 | * @brief Defines. 64 | * @{ 65 | */ 66 | /* USER CODE BEGIN EXPORTED_DEFINES */ 67 | /* Define size for the receive and transmit buffer over CDC */ 68 | /* It's up to user to redefine and/or remove those define */ 69 | #define APP_RX_DATA_SIZE 1000 70 | #define APP_TX_DATA_SIZE 1000 71 | 72 | /* USER CODE END EXPORTED_DEFINES */ 73 | 74 | /** 75 | * @} 76 | */ 77 | 78 | /** @defgroup USBD_CDC_IF_Exported_Types USBD_CDC_IF_Exported_Types 79 | * @brief Types. 80 | * @{ 81 | */ 82 | 83 | /* USER CODE BEGIN EXPORTED_TYPES */ 84 | 85 | /* USER CODE END EXPORTED_TYPES */ 86 | 87 | /** 88 | * @} 89 | */ 90 | 91 | /** @defgroup USBD_CDC_IF_Exported_Macros USBD_CDC_IF_Exported_Macros 92 | * @brief Aliases. 93 | * @{ 94 | */ 95 | 96 | /* USER CODE BEGIN EXPORTED_MACRO */ 97 | 98 | /* USER CODE END EXPORTED_MACRO */ 99 | 100 | /** 101 | * @} 102 | */ 103 | 104 | /** @defgroup USBD_CDC_IF_Exported_Variables USBD_CDC_IF_Exported_Variables 105 | * @brief Public variables. 106 | * @{ 107 | */ 108 | 109 | /** CDC Interface callback. */ 110 | extern USBD_CDC_ItfTypeDef USBD_Interface_fops_FS; 111 | 112 | /* USER CODE BEGIN EXPORTED_VARIABLES */ 113 | 114 | /* USER CODE END EXPORTED_VARIABLES */ 115 | 116 | /** 117 | * @} 118 | */ 119 | 120 | /** @defgroup USBD_CDC_IF_Exported_FunctionsPrototype USBD_CDC_IF_Exported_FunctionsPrototype 121 | * @brief Public functions declaration. 122 | * @{ 123 | */ 124 | 125 | uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len); 126 | 127 | /* USER CODE BEGIN EXPORTED_FUNCTIONS */ 128 | 129 | /* USER CODE END EXPORTED_FUNCTIONS */ 130 | 131 | /** 132 | * @} 133 | */ 134 | 135 | /** 136 | * @} 137 | */ 138 | 139 | /** 140 | * @} 141 | */ 142 | 143 | #ifdef __cplusplus 144 | } 145 | #endif 146 | 147 | #endif /* __USBD_CDC_IF_H__ */ 148 | 149 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 150 | -------------------------------------------------------------------------------- /Firmware/For HW version 5/USB_DEVICE/App/usbd_desc.h: -------------------------------------------------------------------------------- 1 | /* USER CODE BEGIN Header */ 2 | /** 3 | ****************************************************************************** 4 | * @file : usbd_desc.c 5 | * @version : v2.0_Cube 6 | * @brief : Header for usbd_conf.c file. 7 | ****************************************************************************** 8 | * @attention 9 | * 10 | *

© Copyright (c) 2020 STMicroelectronics. 11 | * All rights reserved.

12 | * 13 | * This software component is licensed by ST under Ultimate Liberty license 14 | * SLA0044, the "License"; You may not use this file except in compliance with 15 | * the License. You may obtain a copy of the License at: 16 | * www.st.com/SLA0044 17 | * 18 | ****************************************************************************** 19 | */ 20 | /* USER CODE END Header */ 21 | /* Define to prevent recursive inclusion -------------------------------------*/ 22 | #ifndef __USBD_DESC__C__ 23 | #define __USBD_DESC__C__ 24 | 25 | #ifdef __cplusplus 26 | extern "C" { 27 | #endif 28 | 29 | /* Includes ------------------------------------------------------------------*/ 30 | #include "usbd_def.h" 31 | 32 | /* USER CODE BEGIN INCLUDE */ 33 | 34 | /* USER CODE END INCLUDE */ 35 | 36 | /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY 37 | * @{ 38 | */ 39 | 40 | /** @defgroup USBD_DESC USBD_DESC 41 | * @brief Usb device descriptors module. 42 | * @{ 43 | */ 44 | 45 | /** @defgroup USBD_DESC_Exported_Constants USBD_DESC_Exported_Constants 46 | * @brief Constants. 47 | * @{ 48 | */ 49 | #define DEVICE_ID1 (UID_BASE) 50 | #define DEVICE_ID2 (UID_BASE + 0x4) 51 | #define DEVICE_ID3 (UID_BASE + 0x8) 52 | 53 | #define USB_SIZ_STRING_SERIAL 0x1A 54 | 55 | /* USER CODE BEGIN EXPORTED_CONSTANTS */ 56 | 57 | /* USER CODE END EXPORTED_CONSTANTS */ 58 | 59 | /** 60 | * @} 61 | */ 62 | 63 | /** @defgroup USBD_DESC_Exported_Defines USBD_DESC_Exported_Defines 64 | * @brief Defines. 65 | * @{ 66 | */ 67 | 68 | /* USER CODE BEGIN EXPORTED_DEFINES */ 69 | 70 | /* USER CODE END EXPORTED_DEFINES */ 71 | 72 | /** 73 | * @} 74 | */ 75 | 76 | /** @defgroup USBD_DESC_Exported_TypesDefinitions USBD_DESC_Exported_TypesDefinitions 77 | * @brief Types. 78 | * @{ 79 | */ 80 | 81 | /* USER CODE BEGIN EXPORTED_TYPES */ 82 | 83 | /* USER CODE END EXPORTED_TYPES */ 84 | 85 | /** 86 | * @} 87 | */ 88 | 89 | /** @defgroup USBD_DESC_Exported_Macros USBD_DESC_Exported_Macros 90 | * @brief Aliases. 91 | * @{ 92 | */ 93 | 94 | /* USER CODE BEGIN EXPORTED_MACRO */ 95 | 96 | /* USER CODE END EXPORTED_MACRO */ 97 | 98 | /** 99 | * @} 100 | */ 101 | 102 | /** @defgroup USBD_DESC_Exported_Variables USBD_DESC_Exported_Variables 103 | * @brief Public variables. 104 | * @{ 105 | */ 106 | 107 | /** Descriptor for the Usb device. */ 108 | extern USBD_DescriptorsTypeDef FS_Desc; 109 | 110 | /* USER CODE BEGIN EXPORTED_VARIABLES */ 111 | 112 | /* USER CODE END EXPORTED_VARIABLES */ 113 | 114 | /** 115 | * @} 116 | */ 117 | 118 | /** @defgroup USBD_DESC_Exported_FunctionsPrototype USBD_DESC_Exported_FunctionsPrototype 119 | * @brief Public functions declaration. 120 | * @{ 121 | */ 122 | 123 | /* USER CODE BEGIN EXPORTED_FUNCTIONS */ 124 | 125 | /* USER CODE END EXPORTED_FUNCTIONS */ 126 | 127 | /** 128 | * @} 129 | */ 130 | 131 | /** 132 | * @} 133 | */ 134 | 135 | /** 136 | * @} 137 | */ 138 | 139 | #ifdef __cplusplus 140 | } 141 | #endif 142 | 143 | #endif /* __USBD_DESC__C__ */ 144 | 145 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 146 | -------------------------------------------------------------------------------- /Firmware/For HW version 5/USB_DEVICE/Target/usbd_conf.h: -------------------------------------------------------------------------------- 1 | /* USER CODE BEGIN Header */ 2 | /** 3 | ****************************************************************************** 4 | * @file : usbd_conf.h 5 | * @version : v2.0_Cube 6 | * @brief : Header for usbd_conf.c file. 7 | ****************************************************************************** 8 | * @attention 9 | * 10 | *

© Copyright (c) 2020 STMicroelectronics. 11 | * All rights reserved.

12 | * 13 | * This software component is licensed by ST under Ultimate Liberty license 14 | * SLA0044, the "License"; You may not use this file except in compliance with 15 | * the License. You may obtain a copy of the License at: 16 | * www.st.com/SLA0044 17 | * 18 | ****************************************************************************** 19 | */ 20 | /* USER CODE END Header */ 21 | 22 | /* Define to prevent recursive inclusion -------------------------------------*/ 23 | #ifndef __USBD_CONF__H__ 24 | #define __USBD_CONF__H__ 25 | 26 | #ifdef __cplusplus 27 | extern "C" { 28 | #endif 29 | 30 | /* Includes ------------------------------------------------------------------*/ 31 | #include 32 | #include 33 | #include 34 | #include "main.h" 35 | #include "stm32f0xx.h" 36 | #include "stm32f0xx_hal.h" 37 | 38 | /* USER CODE BEGIN INCLUDE */ 39 | 40 | /* USER CODE END INCLUDE */ 41 | 42 | /** @addtogroup USBD_OTG_DRIVER 43 | * @{ 44 | */ 45 | 46 | /** @defgroup USBD_CONF USBD_CONF 47 | * @brief Configuration file for Usb otg low level driver. 48 | * @{ 49 | */ 50 | 51 | /** @defgroup USBD_CONF_Exported_Variables USBD_CONF_Exported_Variables 52 | * @brief Public variables. 53 | * @{ 54 | */ 55 | 56 | /** 57 | * @} 58 | */ 59 | 60 | /** @defgroup USBD_CONF_Exported_Defines USBD_CONF_Exported_Defines 61 | * @brief Defines for configuration of the Usb device. 62 | * @{ 63 | */ 64 | 65 | /*---------- -----------*/ 66 | #define USBD_MAX_NUM_INTERFACES 1 67 | /*---------- -----------*/ 68 | #define USBD_MAX_NUM_CONFIGURATION 1 69 | /*---------- -----------*/ 70 | #define USBD_MAX_STR_DESC_SIZ 512 71 | /*---------- -----------*/ 72 | #define USBD_DEBUG_LEVEL 0 73 | /*---------- -----------*/ 74 | #define USBD_SELF_POWERED 0 75 | /*---------- -----------*/ 76 | #define MAX_STATIC_ALLOC_SIZE 512 77 | 78 | /****************************************/ 79 | /* #define for FS and HS identification */ 80 | #define DEVICE_FS 0 81 | 82 | /** 83 | * @} 84 | */ 85 | 86 | /** @defgroup USBD_CONF_Exported_Macros USBD_CONF_Exported_Macros 87 | * @brief Aliases. 88 | * @{ 89 | */ 90 | 91 | /* Memory management macros */ 92 | 93 | /** Alias for memory allocation. */ 94 | #define USBD_malloc (uint32_t *)USBD_static_malloc 95 | 96 | /** Alias for memory release. */ 97 | #define USBD_free USBD_static_free 98 | 99 | /** Alias for memory set. */ 100 | #define USBD_memset /* Not used */ 101 | 102 | /** Alias for memory copy. */ 103 | #define USBD_memcpy /* Not used */ 104 | 105 | /** Alias for delay. */ 106 | #define USBD_Delay HAL_Delay 107 | 108 | /* DEBUG macros */ 109 | 110 | #if (USBD_DEBUG_LEVEL > 0) 111 | #define USBD_UsrLog(...) printf(__VA_ARGS__);\ 112 | printf("\n"); 113 | #else 114 | #define USBD_UsrLog(...) 115 | #endif 116 | 117 | #if (USBD_DEBUG_LEVEL > 1) 118 | 119 | #define USBD_ErrLog(...) printf("ERROR: ") ;\ 120 | printf(__VA_ARGS__);\ 121 | printf("\n"); 122 | #else 123 | #define USBD_ErrLog(...) 124 | #endif 125 | 126 | #if (USBD_DEBUG_LEVEL > 2) 127 | #define USBD_DbgLog(...) printf("DEBUG : ") ;\ 128 | printf(__VA_ARGS__);\ 129 | printf("\n"); 130 | #else 131 | #define USBD_DbgLog(...) 132 | #endif 133 | 134 | /** 135 | * @} 136 | */ 137 | 138 | /** @defgroup USBD_CONF_Exported_Types USBD_CONF_Exported_Types 139 | * @brief Types. 140 | * @{ 141 | */ 142 | 143 | /** 144 | * @} 145 | */ 146 | 147 | /** @defgroup USBD_CONF_Exported_FunctionsPrototype USBD_CONF_Exported_FunctionsPrototype 148 | * @brief Declaration of public functions for Usb device. 149 | * @{ 150 | */ 151 | 152 | /* Exported functions -------------------------------------------------------*/ 153 | void *USBD_static_malloc(uint32_t size); 154 | void USBD_static_free(void *p); 155 | /** 156 | * @} 157 | */ 158 | 159 | /** 160 | * @} 161 | */ 162 | 163 | /** 164 | * @} 165 | */ 166 | 167 | #ifdef __cplusplus 168 | } 169 | #endif 170 | 171 | #endif /* __USBD_CONF__H__ */ 172 | 173 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 174 | -------------------------------------------------------------------------------- /Firmware/For HW version 5/uSMU Debug.cfg: -------------------------------------------------------------------------------- 1 | # This is an genericBoard board with a single STM32F072C8Ux chip 2 | # 3 | # Generated by STM32CubeIDE 4 | # Take care that such file, as generated, may be overridden without any early notice. Please have a look to debug launch configuration setup(s) 5 | 6 | source [find interface/stlink-dap.cfg] 7 | 8 | 9 | set WORKAREASIZE 0x4000 10 | 11 | transport select "dapdirect_swd" 12 | 13 | set CHIPNAME STM32F072C8Ux 14 | set BOARDNAME genericBoard 15 | 16 | # Enable debug when in low power modes 17 | set ENABLE_LOW_POWER 1 18 | 19 | # Stop Watchdog counters when halt 20 | set STOP_WATCHDOG 1 21 | 22 | # STlink Debug clock frequency 23 | set CLOCK_FREQ 8000 24 | 25 | # Reset configuration 26 | # use hardware reset, connect under reset 27 | # connect_assert_srst needed if low power mode application running (WFI...) 28 | reset_config srst_only srst_nogate connect_assert_srst 29 | set CONNECT_UNDER_RESET 1 30 | set CORE_RESET 0 31 | 32 | # ACCESS PORT NUMBER 33 | set AP_NUM 0 34 | # GDB PORT 35 | set GDB_PORT 3333 36 | 37 | 38 | 39 | # BCTM CPU variables 40 | 41 | source [find target/stm32f0x.cfg] 42 | -------------------------------------------------------------------------------- /Hardware/Version 10/Gerber files/uSMU_v10-B_Paste.gbr: -------------------------------------------------------------------------------- 1 | %TF.GenerationSoftware,KiCad,Pcbnew,(5.99.0-10483-ga6ad7a4a70)*% 2 | %TF.CreationDate,2021-05-23T17:26:51+03:00*% 3 | %TF.ProjectId,uSMU_v10,75534d55-5f76-4313-902e-6b696361645f,rev?*% 4 | %TF.SameCoordinates,Original*% 5 | %TF.FileFunction,Paste,Bot*% 6 | %TF.FilePolarity,Positive*% 7 | %FSLAX46Y46*% 8 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* 9 | G04 Created by KiCad (PCBNEW (5.99.0-10483-ga6ad7a4a70)) date 2021-05-23 17:26:51* 10 | %MOMM*% 11 | %LPD*% 12 | G01* 13 | G04 APERTURE LIST* 14 | G04 Aperture macros list* 15 | %AMRoundRect* 16 | 0 Rectangle with rounded corners* 17 | 0 $1 Rounding radius* 18 | 0 $2 $3 $4 $5 $6 $7 $8 $9 X,Y pos of 4 corners* 19 | 0 Add a 4 corners polygon primitive as box body* 20 | 4,1,4,$2,$3,$4,$5,$6,$7,$8,$9,$2,$3,0* 21 | 0 Add four circle primitives for the rounded corners* 22 | 1,1,$1+$1,$2,$3* 23 | 1,1,$1+$1,$4,$5* 24 | 1,1,$1+$1,$6,$7* 25 | 1,1,$1+$1,$8,$9* 26 | 0 Add four rect primitives between the rounded corners* 27 | 20,1,$1+$1,$2,$3,$4,$5,0* 28 | 20,1,$1+$1,$4,$5,$6,$7,0* 29 | 20,1,$1+$1,$6,$7,$8,$9,0* 30 | 20,1,$1+$1,$8,$9,$2,$3,0*% 31 | G04 Aperture macros list end* 32 | %ADD10RoundRect,0.250000X0.475000X-0.250000X0.475000X0.250000X-0.475000X0.250000X-0.475000X-0.250000X0*% 33 | G04 APERTURE END LIST* 34 | D10* 35 | %TO.C,C45*% 36 | X166600000Y-105750000D03* 37 | X166600000Y-103850000D03* 38 | %TD*% 39 | M02* 40 | -------------------------------------------------------------------------------- /Hardware/Version 10/Gerber files/uSMU_v10-Edge_Cuts.gbr: -------------------------------------------------------------------------------- 1 | %TF.GenerationSoftware,KiCad,Pcbnew,(5.99.0-10483-ga6ad7a4a70)*% 2 | %TF.CreationDate,2021-05-23T17:26:51+03:00*% 3 | %TF.ProjectId,uSMU_v10,75534d55-5f76-4313-902e-6b696361645f,rev?*% 4 | %TF.SameCoordinates,Original*% 5 | %TF.FileFunction,Profile,NP*% 6 | %FSLAX46Y46*% 7 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* 8 | G04 Created by KiCad (PCBNEW (5.99.0-10483-ga6ad7a4a70)) date 2021-05-23 17:26:51* 9 | %MOMM*% 10 | %LPD*% 11 | G01* 12 | G04 APERTURE LIST* 13 | %TA.AperFunction,Profile*% 14 | %ADD10C,0.100000*% 15 | %TD*% 16 | G04 APERTURE END LIST* 17 | D10* 18 | X111000000Y-127000000D02* 19 | G75* 20 | G02* 21 | X107000000Y-123000000I0J4000000D01* 22 | G01* 23 | X173000000Y-127000000D02* 24 | X111000000Y-127000000D01* 25 | X107000000Y-123000000D02* 26 | X107000000Y-88000000D01* 27 | X173000000Y-84000000D02* 28 | G75* 29 | G02* 30 | X177000000Y-88000000I0J-4000000D01* 31 | G01* 32 | X177000000Y-88000000D02* 33 | X177000000Y-123000000D01* 34 | X111000000Y-84000000D02* 35 | X173000000Y-84000000D01* 36 | X107000000Y-88000000D02* 37 | G75* 38 | G02* 39 | X111000000Y-84000000I4000000J0D01* 40 | G01* 41 | X177000000Y-123000000D02* 42 | G75* 43 | G02* 44 | X173000000Y-127000000I-4000000J0D01* 45 | G01* 46 | M02* 47 | -------------------------------------------------------------------------------- /Hardware/Version 10/Gerber files/uSMU_v10-NPTH.drl: -------------------------------------------------------------------------------- 1 | M48 2 | ; DRILL file {KiCad (5.99.0-10483-ga6ad7a4a70)} date Sun May 23 17:26:48 2021 3 | ; FORMAT={-:-/ absolute / inch / decimal} 4 | ; #@! TF.CreationDate,2021-05-23T17:26:48+03:00 5 | ; #@! TF.GenerationSoftware,Kicad,Pcbnew,(5.99.0-10483-ga6ad7a4a70) 6 | ; #@! TF.FileFunction,NonPlated,1,4,NPTH 7 | FMAT,2 8 | INCH 9 | ; #@! TA.AperFunction,NonPlated,NPTH,ComponentDrill 10 | T1C0.0256 11 | % 12 | G90 13 | G05 14 | T1 15 | X4.4549Y-4.0407 16 | X4.4549Y-4.2683 17 | T0 18 | M30 19 | -------------------------------------------------------------------------------- /Hardware/Version 10/Gerber files/uSMU_v10-job.gbrjob: -------------------------------------------------------------------------------- 1 | { 2 | "Header": { 3 | "GenerationSoftware": { 4 | "Vendor": "KiCad", 5 | "Application": "Pcbnew", 6 | "Version": "(5.99.0-10483-ga6ad7a4a70)" 7 | }, 8 | "CreationDate": "2021-05-23T17:26:52+03:00" 9 | }, 10 | "GeneralSpecs": { 11 | "ProjectId": { 12 | "Name": "uSMU_v10", 13 | "GUID": "75534d55-5f76-4313-902e-6b696361645f", 14 | "Revision": "rev?" 15 | }, 16 | "Size": { 17 | "X": 70.3, 18 | "Y": 43.3 19 | }, 20 | "LayerNumber": 4, 21 | "BoardThickness": 1.6, 22 | "Finish": "None" 23 | }, 24 | "DesignRules": [ 25 | { 26 | "Layers": "Outer", 27 | "PadToPad": 0.127, 28 | "PadToTrack": 0.127, 29 | "TrackToTrack": 0.2, 30 | "MinLineWidth": 0.2, 31 | "TrackToRegion": 0.254, 32 | "RegionToRegion": 0.254 33 | }, 34 | { 35 | "Layers": "Inner", 36 | "PadToPad": 0.0, 37 | "PadToTrack": 0.0, 38 | "TrackToTrack": 0.2, 39 | "TrackToRegion": 0.254, 40 | "RegionToRegion": 0.254 41 | } 42 | ], 43 | "FilesAttributes": [ 44 | { 45 | "Path": "uSMU_v10-F_Cu.gbr", 46 | "FileFunction": "Copper,L1,Top", 47 | "FilePolarity": "Positive" 48 | }, 49 | { 50 | "Path": "uSMU_v10-Ground.gbr", 51 | "FileFunction": "Copper,L2,Inr", 52 | "FilePolarity": "Positive" 53 | }, 54 | { 55 | "Path": "uSMU_v10-Power.gbr", 56 | "FileFunction": "Copper,L3,Inr", 57 | "FilePolarity": "Positive" 58 | }, 59 | { 60 | "Path": "uSMU_v10-B_Cu.gbr", 61 | "FileFunction": "Copper,L4,Bot", 62 | "FilePolarity": "Positive" 63 | }, 64 | { 65 | "Path": "uSMU_v10-F_Paste.gbr", 66 | "FileFunction": "SolderPaste,Top", 67 | "FilePolarity": "Positive" 68 | }, 69 | { 70 | "Path": "uSMU_v10-B_Paste.gbr", 71 | "FileFunction": "SolderPaste,Bot", 72 | "FilePolarity": "Positive" 73 | }, 74 | { 75 | "Path": "uSMU_v10-F_Silkscreen.gbr", 76 | "FileFunction": "Legend,Top", 77 | "FilePolarity": "Positive" 78 | }, 79 | { 80 | "Path": "uSMU_v10-B_Silkscreen.gbr", 81 | "FileFunction": "Legend,Bot", 82 | "FilePolarity": "Positive" 83 | }, 84 | { 85 | "Path": "uSMU_v10-F_Mask.gbr", 86 | "FileFunction": "SolderMask,Top", 87 | "FilePolarity": "Negative" 88 | }, 89 | { 90 | "Path": "uSMU_v10-B_Mask.gbr", 91 | "FileFunction": "SolderMask,Bot", 92 | "FilePolarity": "Negative" 93 | }, 94 | { 95 | "Path": "uSMU_v10-Edge_Cuts.gbr", 96 | "FileFunction": "Profile", 97 | "FilePolarity": "Positive" 98 | } 99 | ], 100 | "MaterialStackup": [ 101 | { 102 | "Type": "Legend", 103 | "Name": "Top Silk Screen" 104 | }, 105 | { 106 | "Type": "SolderPaste", 107 | "Name": "Top Solder Paste" 108 | }, 109 | { 110 | "Type": "SolderMask", 111 | "Color": "Green", 112 | "Thickness": 0.01, 113 | "Name": "Top Solder Mask" 114 | }, 115 | { 116 | "Type": "Copper", 117 | "Thickness": 0.035, 118 | "Name": "F.Cu" 119 | }, 120 | { 121 | "Type": "Dielectric", 122 | "Thickness": 0.48, 123 | "Material": "FR4", 124 | "Name": "F.Cu/Ground", 125 | "Notes": "Type: dielectric layer 1 (from F.Cu to Ground)" 126 | }, 127 | { 128 | "Type": "Copper", 129 | "Thickness": 0.035, 130 | "Name": "Ground" 131 | }, 132 | { 133 | "Type": "Dielectric", 134 | "Thickness": 0.48, 135 | "Material": "FR4", 136 | "Name": "Ground/Power", 137 | "Notes": "Type: dielectric layer 2 (from Ground to Power)" 138 | }, 139 | { 140 | "Type": "Copper", 141 | "Thickness": 0.035, 142 | "Name": "Power" 143 | }, 144 | { 145 | "Type": "Dielectric", 146 | "Thickness": 0.48, 147 | "Material": "FR4", 148 | "Name": "Power/B.Cu", 149 | "Notes": "Type: dielectric layer 3 (from Power to B.Cu)" 150 | }, 151 | { 152 | "Type": "Copper", 153 | "Thickness": 0.035, 154 | "Name": "B.Cu" 155 | }, 156 | { 157 | "Type": "SolderMask", 158 | "Color": "Green", 159 | "Thickness": 0.01, 160 | "Name": "Bottom Solder Mask" 161 | }, 162 | { 163 | "Type": "SolderPaste", 164 | "Name": "Bottom Solder Paste" 165 | }, 166 | { 167 | "Type": "Legend", 168 | "Name": "Bottom Silk Screen" 169 | } 170 | ] 171 | } 172 | -------------------------------------------------------------------------------- /Hardware/Version 10/fp-info-cache: -------------------------------------------------------------------------------- 1 | 0 2 | -------------------------------------------------------------------------------- /Hardware/Version 10/fp-lib-table: -------------------------------------------------------------------------------- 1 | (fp_lib_table 2 | (lib (name "uSMU_v10")(type "KiCad")(uri "${KIPRJMOD}/uSMU_v10.pretty")(options "")(descr "")) 3 | ) 4 | -------------------------------------------------------------------------------- /Hardware/Version 10/sym-lib-table: -------------------------------------------------------------------------------- 1 | (sym_lib_table 2 | (lib (name "uSMU_v10")(type "KiCad")(uri "${KIPRJMOD}/uSMU_v10.kicad_sym")(options "")(descr "")) 3 | ) 4 | -------------------------------------------------------------------------------- /Hardware/Version 10/uSMU_v10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joeltroughton/uSMU/51ece4f96c4998d568ea8d883581df1624eadf7e/Hardware/Version 10/uSMU_v10.png -------------------------------------------------------------------------------- /Hardware/Version 10/uSMU_v10.pretty/E6C0606RGBC3UDA.kicad_mod: -------------------------------------------------------------------------------- 1 | (module "E6C0606RGBC3UDA" (layer F.Cu) (tedit 5FB0D1FB) 2 | (fp_text reference "REF**" (at 0 -9.5 unlocked) (layer F.SilkS) 3 | (effects (font (size 1 1) (thickness 0.15))) 4 | (tstamp ad8b0931-8e91-4f14-ae4e-041bf4ccff28) 5 | ) 6 | (fp_text value "E6C0606RGBC3UDA" (at 0 -8 unlocked) (layer F.Fab) 7 | (effects (font (size 1 1) (thickness 0.15))) 8 | (tstamp 32fe31a5-3427-4934-a0a8-bf5d97c80eb6) 9 | ) 10 | (fp_text user "${REF}" (at 0 -6.5 unlocked) (layer F.Fab) 11 | (effects (font (size 1 1) (thickness 0.15))) 12 | (tstamp 7387e9d7-79d9-4b52-a12d-5ec3d4d372d7) 13 | ) 14 | (fp_line (start 1.340974 -0.1) (end 1.140974 -0.2) (layer F.SilkS) (width 0.12) (tstamp 1e6d0167-fe23-45e0-b2dd-1ea11cc001c2)) 15 | (fp_line (start 1.140974 -0.2) (end 1.140974 0.2) (layer F.SilkS) (width 0.12) (tstamp 49ea66ae-6aa9-4800-a35d-5db1cf3648f3)) 16 | (fp_line (start 1.140974 0.2) (end 1.340974 0.1) (layer F.SilkS) (width 0.12) (tstamp 759b16fd-8898-46d4-9f2e-0f465fe71b6d)) 17 | (fp_line (start 1.340974 0.1) (end 1.340974 -0.1) (layer F.SilkS) (width 0.12) (tstamp f981c09a-bb58-46af-b553-f06efc43962c)) 18 | (fp_rect (start -1.2 -1) (end 1.2 1) (layer F.CrtYd) (width 0.05) (tstamp 086faad4-3383-49ed-90ce-2d511a5ab31e)) 19 | (pad "1" smd rect (at -0.7 -0.5) (size 0.6 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp ca31671c-f4ce-4b88-9be4-d04e87ac1901)) 20 | (pad "2" smd rect (at 0.7 -0.5) (size 0.6 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 64ff7f0d-d980-43d4-8ca0-ad8cce368e52)) 21 | (pad "3" smd rect (at -0.7 0.5) (size 0.6 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp db8351e3-1846-40cd-aa2a-2f56cd9153f7)) 22 | (pad "4" smd rect (at 0.7 0.5) (size 0.6 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 9b04a22c-86bd-49ae-a60f-ed66c7d149a0)) 23 | ) 24 | -------------------------------------------------------------------------------- /Hardware/Version 10/uSMU_v10.pretty/TYPE-C-31-M-12.kicad_mod: -------------------------------------------------------------------------------- 1 | (footprint "TYPE-C-31-M-12" (version 20210424) (generator pcbnew) (layer "F.Cu") 2 | (tedit 608EAF79) 3 | (fp_text reference "REF**" (at 0 -0.5 unlocked) (layer "F.SilkS") 4 | (effects (font (size 1 1) (thickness 0.15))) 5 | (tstamp 21f56d78-c2c1-4024-b11a-5b5f83dbe252) 6 | ) 7 | (fp_text value "TYPE-C-31-M-12" (at 0 1 unlocked) (layer "F.Fab") 8 | (effects (font (size 1 1) (thickness 0.15))) 9 | (tstamp 4fcd42d5-4012-4306-bb6c-a33bc6e0b355) 10 | ) 11 | (fp_text user "${REFERENCE}" (at 0 2.5 unlocked) (layer "F.Fab") 12 | (effects (font (size 1 1) (thickness 0.15))) 13 | (tstamp 952b681b-6afb-414e-8edc-6097579200ea) 14 | ) 15 | (fp_line (start 4.83 -3.445) (end -4.92 -3.445) (layer "F.CrtYd") (width 0.12) (tstamp 553f0e02-19c8-4410-986d-ae124259846c)) 16 | (fp_line (start 4.83 5.055) (end -4.92 5.055) (layer "F.CrtYd") (width 0.12) (tstamp 589edc39-b1c4-43bf-a9d5-d3f7c65affed)) 17 | (fp_line (start -4.92 -3.445) (end -4.92 5.055) (layer "F.CrtYd") (width 0.12) (tstamp 8a66dfdb-4235-4c63-bd5e-aa4d15ace0bd)) 18 | (fp_line (start 4.83 5.055) (end 4.83 -3.445) (layer "F.CrtYd") (width 0.12) (tstamp fc391615-8af5-4745-9ce7-c9778dac9d7b)) 19 | (pad "" thru_hole oval (at 4.3 2.5) (size 1 1.6) (drill oval 0.6 1.2) (layers *.Cu *.Mask) (tstamp 197d0396-cb7f-4f28-8e3d-f45dcdc47c9c)) 20 | (pad "" np_thru_hole custom (at 2.87 -1.15) (size 0.6 0.6) (drill 0.65) (layers F&B.Cu *.Mask) 21 | (options (clearance outline) (anchor circle)) 22 | (primitives 23 | ) (tstamp 380955fd-3706-472c-a709-ab08d8b20d17)) 24 | (pad "" thru_hole oval (at 4.3 -1.68) (size 1 2.1) (drill oval 0.6 1.7) (layers *.Cu *.Mask) (tstamp 51740fff-f587-467f-bec2-4902d4d9295b)) 25 | (pad "" thru_hole oval (at -4.34 2.5) (size 1 1.6) (drill oval 0.6 1.2) (layers *.Cu *.Mask) (tstamp 875c374d-e3ed-4054-bcdb-28e36ae8517f)) 26 | (pad "" thru_hole oval (at -4.34 -1.68) (size 1 2.1) (drill oval 0.6 1.7) (layers *.Cu *.Mask) (tstamp 87c7c76c-a0d4-4651-ae27-5a575c34224c)) 27 | (pad "" np_thru_hole custom (at -2.91 -1.15) (size 0.6 0.6) (drill 0.65) (layers F&B.Cu *.Mask) 28 | (options (clearance outline) (anchor circle)) 29 | (primitives 30 | ) (tstamp 92399634-588a-4a34-a6b7-6bf22d6036fe)) 31 | (pad "A1" smd rect (at -3.27 -2.595) (size 0.6 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 4ea3f578-cc32-42bd-9f92-d6f1be6342fe)) 32 | (pad "A4" smd rect (at -2.47 -2.595) (size 0.6 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp eea23257-f99b-4c1e-aa72-2a2acd507d19)) 33 | (pad "A5" smd rect (at -1.27 -2.595) (size 0.3 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp b1c36337-3c79-44df-be62-633a214d200e)) 34 | (pad "A6" smd rect (at -0.27 -2.595) (size 0.3 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 0f7d456d-601d-43ec-97de-e08b107d4d1f)) 35 | (pad "A7" smd rect (at 0.23 -2.595) (size 0.3 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp eee38f62-427b-41f3-b162-428b49d3f3f5)) 36 | (pad "A8" smd rect (at 1.23 -2.595) (size 0.3 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp c5472ea7-1494-40a1-8a68-b760cc6f05c5)) 37 | (pad "A9" smd rect (at 2.43 -2.595) (size 0.6 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 6b289042-aa2c-4840-818d-909497a6fe42)) 38 | (pad "A12" smd rect (at 3.23 -2.595) (size 0.6 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp af7f7113-06ce-4fc9-9291-1bc193e8f9ff)) 39 | (pad "B5" smd rect (at 1.73 -2.595) (size 0.3 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp c847b6ba-e594-4c25-8b02-f857c63d33f1)) 40 | (pad "B6" smd rect (at 0.73 -2.595) (size 0.3 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 572903c4-90a2-459b-8ab7-e302d1af2099)) 41 | (pad "B7" smd rect (at -0.77 -2.595) (size 0.3 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 95733fc8-c849-4d87-b196-8ed331c1f9b9)) 42 | (pad "B8" smd rect (at -1.77 -2.595) (size 0.3 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 2467190e-2e90-4510-bf82-fe2aa4410574)) 43 | ) 44 | -------------------------------------------------------------------------------- /Hardware/Version 10/uSMU_v10_BOM.csv: -------------------------------------------------------------------------------- 1 | Item,Qty,Reference(s),Value,Manufacturer,Mfr. Part number 2 | 1,19,"C1, C5, C8, C9, C10, C11, C13, C15, C17, C18, C19, C20, C22, C23, C24, C33, C35, C37, C38",1uF,Samsung Electro-Mechanics,CL10B105KA8NNNC 3 | 2,5,"C2, C7, C16, C28, C29, C36",0.1uF,Samsung Electro-Mechanics,CL10B104KB8NNNC 4 | 3,6,"C3, C14, C25, C40, C41, C43",10nF,Samsung Electro-Mechanics,CL10B103KB8NNNC 5 | 4,5,"C4, C6, C12, C27, C30",10uF,Samsung Electro-Mechanics,CL21A106KAYNNNE 6 | 5,1,C21,200pF,Samsung Electro-Mechanics,CL10C201JB8NNNC 7 | 6,2,"C26, C32",22uF,Samsung Electro-Mechanics,CL21A226MAQNNNE 8 | 7,2,"C31, C34",2pF,Samsung Electro-Mechanics,CL10C020BB8NNNC 9 | 8,2,"C42, C44",1nF,Samsung Electro-Mechanics,CL10B102KB8NNNC 10 | 9,1,"D1, D2, D3, D4",Status LED,EKINGLUX,E6C0606RGBC3UDA 11 | 10,2,"D5, D6",B5819W,Microdiode Electronics,B5819W 12 | 11,1,J1,SWD,Amphenol ICC,20021121-00010C4LF 13 | 12,1,J2,USB_C_Receptacle_USB2.0,Korean Hroparts Electronics,TYPE-C-31-M-12 14 | 13,1,J3,DUT,TE Connectivity,1-1634624-0 15 | 14,2,"L1, L2",4.7uH,Taiyo Yuden,CBC3225T4R7MR 16 | 15,1,Q1,AO3401A,BORN,AO3401A 17 | 16,15,"R1, R2, R9, R11, R12, R17, R18, R20, R21, R22, R24, R26, R29, R32, R39",10k,Panasonic,ERJPB3D1002V 18 | 17,7,"R3, R4, R5, R7, R23, R25, R28",1k,Panasonic,ERJ3RBD1001V 19 | 18,2,"R6, R16",5.1k,Panasonic,ERJ3EKF5101V 20 | 19,8,"R8, R10, R13, R15, R19, R27, R30, R31",100k,Panasonic,ERJPB3D1003V 21 | 20,2,"R14, R36",330k,Panasonic,ERJ3EKF3303V 22 | 21,3,"R33, R34, R35",47k,Panasonic,ERJPA3F4702V 23 | 22,5,"R37, R38, R42, R43, R44",100,Panasonic,ERJ3EKF1000V 24 | 23,1,R40,50,Panasonic,ERA3AEB49R9V 25 | 24,1,R41,10,Panasonic,ERJUP3D10R0V 26 | 25,1,U1,ADS1115IDGS,Texas Instruments,ADS1115IDGSR 27 | 26,3,"U2, U7, U9",GS8331,Gainsil,GS8331-TR 28 | 27,1,U3,STM32F072C8Ux,ST Microelectronics,STM32F072CBU6 29 | 28,1,U4,TS321,ST Microelectronics,TS321AILT 30 | 29,1,U5,USBLC6-2SC6,ST Microelectronics,USBLC6-2SC6 31 | 30,1,U6,ME6212C33M5G,Microne,ME6212C33M5G 32 | 31,1,U8,MCP1501T-40E_CHY,Microchip,MCP1501T-40E/CHY 33 | 32,1,U10,LT1970,Analog Devices,LT1970CFE#PBF 34 | 33,1,U11,DAC8571IDGKR,Texas Instruments,DAC8571IDGKR 35 | 34,1,U12,TPS65131RGET,Texas Instruments,TPS65131RGET 36 | 35,1,U13,H7650-45PR,Shanghai Siproin Microelectronics,H7650-45PR 37 | 36,1,U14,PGA281,Texas Instruments,PGA281AIPWR 38 | -------------------------------------------------------------------------------- /Hardware/Version 10/uSMU_v10_schematic.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joeltroughton/uSMU/51ece4f96c4998d568ea8d883581df1624eadf7e/Hardware/Version 10/uSMU_v10_schematic.pdf -------------------------------------------------------------------------------- /Hardware/Version 10r1/Gerber files/Gerber files.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joeltroughton/uSMU/51ece4f96c4998d568ea8d883581df1624eadf7e/Hardware/Version 10r1/Gerber files/Gerber files.zip -------------------------------------------------------------------------------- /Hardware/Version 10r1/Gerber files/uSMU_v10-B_Mask.gbr: -------------------------------------------------------------------------------- 1 | %TF.GenerationSoftware,KiCad,Pcbnew,(6.0.0)*% 2 | %TF.CreationDate,2022-03-21T15:30:00+00:00*% 3 | %TF.ProjectId,uSMU_v10,75534d55-5f76-4313-902e-6b696361645f,rev?*% 4 | %TF.SameCoordinates,Original*% 5 | %TF.FileFunction,Soldermask,Bot*% 6 | %TF.FilePolarity,Negative*% 7 | %FSLAX46Y46*% 8 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* 9 | G04 Created by KiCad (PCBNEW (6.0.0)) date 2022-03-21 15:30:00* 10 | %MOMM*% 11 | %LPD*% 12 | G01* 13 | G04 APERTURE LIST* 14 | G04 Aperture macros list* 15 | %AMRoundRect* 16 | 0 Rectangle with rounded corners* 17 | 0 $1 Rounding radius* 18 | 0 $2 $3 $4 $5 $6 $7 $8 $9 X,Y pos of 4 corners* 19 | 0 Add a 4 corners polygon primitive as box body* 20 | 4,1,4,$2,$3,$4,$5,$6,$7,$8,$9,$2,$3,0* 21 | 0 Add four circle primitives for the rounded corners* 22 | 1,1,$1+$1,$2,$3* 23 | 1,1,$1+$1,$4,$5* 24 | 1,1,$1+$1,$6,$7* 25 | 1,1,$1+$1,$8,$9* 26 | 0 Add four rect primitives between the rounded corners* 27 | 20,1,$1+$1,$2,$3,$4,$5,0* 28 | 20,1,$1+$1,$4,$5,$6,$7,0* 29 | 20,1,$1+$1,$6,$7,$8,$9,0* 30 | 20,1,$1+$1,$8,$9,$2,$3,0*% 31 | %AMFreePoly0* 32 | 4,1,19,0.150000,0.259808,0.229813,0.192836,0.281908,0.102606,0.300000,0.000000,0.281908,-0.102606,0.229813,-0.192836,0.150000,-0.259808,0.052094,-0.295442,-0.052094,-0.295442,-0.150000,-0.259808,-0.229813,-0.192836,-0.281908,-0.102606,-0.300000,0.000000,-0.281908,0.102606,-0.229813,0.192836,-0.150000,0.259808,-0.052094,0.295442,0.052094,0.295442,0.150000,0.259808,0.150000,0.259808, 33 | $1*% 34 | %AMFreePoly1* 35 | 4,1,22,0.500000,-0.750000,0.000000,-0.750000,0.000000,-0.745033,-0.079941,-0.743568,-0.215256,-0.701293,-0.333266,-0.622738,-0.424486,-0.514219,-0.481581,-0.384460,-0.499164,-0.250000,-0.500000,-0.250000,-0.500000,0.250000,-0.499164,0.250000,-0.499963,0.256109,-0.478152,0.396186,-0.417904,0.524511,-0.324060,0.630769,-0.204165,0.706417,-0.067858,0.745374,0.000000,0.744959,0.000000,0.750000, 36 | 0.500000,0.750000,0.500000,-0.750000,0.500000,-0.750000,$1*% 37 | %AMFreePoly2* 38 | 4,1,20,0.000000,0.744959,0.073905,0.744508,0.209726,0.703889,0.328688,0.626782,0.421226,0.519385,0.479903,0.390333,0.500000,0.250000,0.500000,-0.250000,0.499851,-0.262216,0.476331,-0.402017,0.414519,-0.529596,0.319384,-0.634700,0.198574,-0.708877,0.061801,-0.746166,0.000000,-0.745033,0.000000,-0.750000,-0.500000,-0.750000,-0.500000,0.750000,0.000000,0.750000,0.000000,0.744959, 39 | 0.000000,0.744959,$1*% 40 | G04 Aperture macros list end* 41 | %ADD10C,0.600000*% 42 | %ADD11O,2.500000X1.600000*% 43 | %ADD12O,7.000000X3.500000*% 44 | %ADD13C,0.800000*% 45 | %ADD14C,6.400000*% 46 | %ADD15O,1.600000X1.000000*% 47 | %ADD16FreePoly0,270.000000*% 48 | %ADD17O,2.100000X1.000000*% 49 | %ADD18FreePoly1,0.000000*% 50 | %ADD19FreePoly2,0.000000*% 51 | %ADD20FreePoly1,90.000000*% 52 | %ADD21FreePoly2,90.000000*% 53 | %ADD22RoundRect,0.250000X0.475000X-0.250000X0.475000X0.250000X-0.475000X0.250000X-0.475000X-0.250000X0*% 54 | %ADD23FreePoly1,270.000000*% 55 | %ADD24FreePoly2,270.000000*% 56 | G04 APERTURE END LIST* 57 | D10* 58 | %TO.C,U10*% 59 | X145225000Y-104000000D03* 60 | X144025000Y-104800000D03* 61 | X146425000Y-104800000D03* 62 | X147625000Y-104000000D03* 63 | X146425000Y-103200000D03* 64 | X144025000Y-103200000D03* 65 | X142825000Y-104000000D03* 66 | %TD*% 67 | D11* 68 | %TO.C,J3*% 69 | X164000000Y-105875000D03* 70 | X164000000Y-103335000D03* 71 | D12* 72 | X169080000Y-100795000D03* 73 | X169080000Y-110955000D03* 74 | %TD*% 75 | D13* 76 | %TO.C,H4*% 77 | X171302944Y-121302944D03* 78 | X173000000Y-125400000D03* 79 | X171302944Y-124697056D03* 80 | X170600000Y-123000000D03* 81 | X175400000Y-123000000D03* 82 | X174697056Y-121302944D03* 83 | X174697056Y-124697056D03* 84 | D14* 85 | X173000000Y-123000000D03* 86 | D13* 87 | X173000000Y-120600000D03* 88 | %TD*% 89 | %TO.C,H1*% 90 | X109302944Y-86302944D03* 91 | X113400000Y-88000000D03* 92 | X111000000Y-90400000D03* 93 | X111000000Y-85600000D03* 94 | X112697056Y-86302944D03* 95 | X108600000Y-88000000D03* 96 | D14* 97 | X111000000Y-88000000D03* 98 | D13* 99 | X109302944Y-89697056D03* 100 | X112697056Y-89697056D03* 101 | %TD*% 102 | D15* 103 | %TO.C,J2*% 104 | X109505000Y-109845000D03* 105 | D16* 106 | X113155000Y-108415000D03* 107 | X113155000Y-102635000D03* 108 | D15* 109 | X109505000Y-101205000D03* 110 | D17* 111 | X113685000Y-109845000D03* 112 | X113685000Y-101205000D03* 113 | %TD*% 114 | D13* 115 | %TO.C,H2*% 116 | X174697056Y-86302944D03* 117 | X173000000Y-90400000D03* 118 | D14* 119 | X173000000Y-88000000D03* 120 | D13* 121 | X174697056Y-89697056D03* 122 | X170600000Y-88000000D03* 123 | X171302944Y-86302944D03* 124 | X171302944Y-89697056D03* 125 | X175400000Y-88000000D03* 126 | X173000000Y-85600000D03* 127 | %TD*% 128 | %TO.C,H3*% 129 | X112697056Y-121302944D03* 130 | X111000000Y-125400000D03* 131 | X109302944Y-121302944D03* 132 | X113400000Y-123000000D03* 133 | X111000000Y-120600000D03* 134 | D14* 135 | X111000000Y-123000000D03* 136 | D13* 137 | X109302944Y-124697056D03* 138 | X112697056Y-124697056D03* 139 | X108600000Y-123000000D03* 140 | %TD*% 141 | D18* 142 | %TO.C,JP4*% 143 | X160750000Y-117000000D03* 144 | D19* 145 | X162050000Y-117000000D03* 146 | %TD*% 147 | D20* 148 | %TO.C,JP2*% 149 | X161600000Y-111400000D03* 150 | D21* 151 | X161600000Y-110100000D03* 152 | %TD*% 153 | D22* 154 | %TO.C,C45*% 155 | X166600000Y-105750000D03* 156 | X166600000Y-103850000D03* 157 | %TD*% 158 | D23* 159 | %TO.C,JP3*% 160 | X164200000Y-110100000D03* 161 | D24* 162 | X164200000Y-111400000D03* 163 | %TD*% 164 | M02* 165 | -------------------------------------------------------------------------------- /Hardware/Version 10r1/Gerber files/uSMU_v10-B_Paste.gbr: -------------------------------------------------------------------------------- 1 | %TF.GenerationSoftware,KiCad,Pcbnew,(6.0.0)*% 2 | %TF.CreationDate,2022-03-21T15:30:00+00:00*% 3 | %TF.ProjectId,uSMU_v10,75534d55-5f76-4313-902e-6b696361645f,rev?*% 4 | %TF.SameCoordinates,Original*% 5 | %TF.FileFunction,Paste,Bot*% 6 | %TF.FilePolarity,Positive*% 7 | %FSLAX46Y46*% 8 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* 9 | G04 Created by KiCad (PCBNEW (6.0.0)) date 2022-03-21 15:30:00* 10 | %MOMM*% 11 | %LPD*% 12 | G01* 13 | G04 APERTURE LIST* 14 | G04 Aperture macros list* 15 | %AMRoundRect* 16 | 0 Rectangle with rounded corners* 17 | 0 $1 Rounding radius* 18 | 0 $2 $3 $4 $5 $6 $7 $8 $9 X,Y pos of 4 corners* 19 | 0 Add a 4 corners polygon primitive as box body* 20 | 4,1,4,$2,$3,$4,$5,$6,$7,$8,$9,$2,$3,0* 21 | 0 Add four circle primitives for the rounded corners* 22 | 1,1,$1+$1,$2,$3* 23 | 1,1,$1+$1,$4,$5* 24 | 1,1,$1+$1,$6,$7* 25 | 1,1,$1+$1,$8,$9* 26 | 0 Add four rect primitives between the rounded corners* 27 | 20,1,$1+$1,$2,$3,$4,$5,0* 28 | 20,1,$1+$1,$4,$5,$6,$7,0* 29 | 20,1,$1+$1,$6,$7,$8,$9,0* 30 | 20,1,$1+$1,$8,$9,$2,$3,0*% 31 | G04 Aperture macros list end* 32 | %ADD10RoundRect,0.250000X0.475000X-0.250000X0.475000X0.250000X-0.475000X0.250000X-0.475000X-0.250000X0*% 33 | G04 APERTURE END LIST* 34 | D10* 35 | %TO.C,C45*% 36 | X166600000Y-105750000D03* 37 | X166600000Y-103850000D03* 38 | %TD*% 39 | M02* 40 | -------------------------------------------------------------------------------- /Hardware/Version 10r1/Gerber files/uSMU_v10-Edge_Cuts.gbr: -------------------------------------------------------------------------------- 1 | %TF.GenerationSoftware,KiCad,Pcbnew,(6.0.0)*% 2 | %TF.CreationDate,2022-03-21T15:30:00+00:00*% 3 | %TF.ProjectId,uSMU_v10,75534d55-5f76-4313-902e-6b696361645f,rev?*% 4 | %TF.SameCoordinates,Original*% 5 | %TF.FileFunction,Profile,NP*% 6 | %FSLAX46Y46*% 7 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* 8 | G04 Created by KiCad (PCBNEW (6.0.0)) date 2022-03-21 15:30:00* 9 | %MOMM*% 10 | %LPD*% 11 | G01* 12 | G04 APERTURE LIST* 13 | %TA.AperFunction,Profile*% 14 | %ADD10C,0.100000*% 15 | %TD*% 16 | G04 APERTURE END LIST* 17 | D10* 18 | X107000000Y-123000000D02* 19 | G75* 20 | G03* 21 | X111000000Y-127000000I4000000J0D01* 22 | G01* 23 | X173000000Y-127000000D02* 24 | X111000000Y-127000000D01* 25 | X107000000Y-123000000D02* 26 | X107000000Y-88000000D01* 27 | X177000000Y-88000000D02* 28 | G75* 29 | G03* 30 | X173000000Y-84000000I-4000000J0D01* 31 | G01* 32 | X177000000Y-88000000D02* 33 | X177000000Y-123000000D01* 34 | X111000000Y-84000000D02* 35 | X173000000Y-84000000D01* 36 | X111000000Y-84000000D02* 37 | G75* 38 | G03* 39 | X107000000Y-88000000I0J-4000000D01* 40 | G01* 41 | X173000000Y-127000000D02* 42 | G75* 43 | G03* 44 | X177000000Y-123000000I0J4000000D01* 45 | G01* 46 | M02* 47 | -------------------------------------------------------------------------------- /Hardware/Version 10r1/Gerber files/uSMU_v10-NPTH.drl: -------------------------------------------------------------------------------- 1 | M48 2 | ; DRILL file {KiCad (6.0.0)} date Mon Mar 21 15:29:56 2022 3 | ; FORMAT={-:-/ absolute / inch / decimal} 4 | ; #@! TF.CreationDate,2022-03-21T15:29:56+00:00 5 | ; #@! TF.GenerationSoftware,Kicad,Pcbnew,(6.0.0) 6 | ; #@! TF.FileFunction,NonPlated,1,4,NPTH 7 | FMAT,2 8 | INCH 9 | ; #@! TA.AperFunction,NonPlated,NPTH,ComponentDrill 10 | T1C0.0256 11 | % 12 | G90 13 | G05 14 | T1 15 | X4.4549Y-4.0407 16 | X4.4549Y-4.2683 17 | T0 18 | M30 19 | -------------------------------------------------------------------------------- /Hardware/Version 10r1/Gerber files/uSMU_v10-job.gbrjob: -------------------------------------------------------------------------------- 1 | { 2 | "Header": { 3 | "GenerationSoftware": { 4 | "Vendor": "KiCad", 5 | "Application": "Pcbnew", 6 | "Version": "(6.0.0)" 7 | }, 8 | "CreationDate": "2022-03-21T15:30:00+00:00" 9 | }, 10 | "GeneralSpecs": { 11 | "ProjectId": { 12 | "Name": "uSMU_v10", 13 | "GUID": "75534d55-5f76-4313-902e-6b696361645f", 14 | "Revision": "rev?" 15 | }, 16 | "Size": { 17 | "X": 70.1, 18 | "Y": 43.1 19 | }, 20 | "LayerNumber": 4, 21 | "BoardThickness": 1.6, 22 | "Finish": "None" 23 | }, 24 | "DesignRules": [ 25 | { 26 | "Layers": "Outer", 27 | "PadToPad": 0.127, 28 | "PadToTrack": 0.127, 29 | "TrackToTrack": 0.2, 30 | "MinLineWidth": 0.2, 31 | "TrackToRegion": 0.254, 32 | "RegionToRegion": 0.254 33 | }, 34 | { 35 | "Layers": "Inner", 36 | "PadToPad": 0.0, 37 | "PadToTrack": 0.0, 38 | "TrackToTrack": 0.2, 39 | "TrackToRegion": 0.254, 40 | "RegionToRegion": 0.254 41 | } 42 | ], 43 | "FilesAttributes": [ 44 | { 45 | "Path": "uSMU_v10-F_Cu.gbr", 46 | "FileFunction": "Copper,L1,Top", 47 | "FilePolarity": "Positive" 48 | }, 49 | { 50 | "Path": "uSMU_v10-Ground.gbr", 51 | "FileFunction": "Copper,L2,Inr", 52 | "FilePolarity": "Positive" 53 | }, 54 | { 55 | "Path": "uSMU_v10-Power.gbr", 56 | "FileFunction": "Copper,L3,Inr", 57 | "FilePolarity": "Positive" 58 | }, 59 | { 60 | "Path": "uSMU_v10-B_Cu.gbr", 61 | "FileFunction": "Copper,L4,Bot", 62 | "FilePolarity": "Positive" 63 | }, 64 | { 65 | "Path": "uSMU_v10-F_Paste.gbr", 66 | "FileFunction": "SolderPaste,Top", 67 | "FilePolarity": "Positive" 68 | }, 69 | { 70 | "Path": "uSMU_v10-B_Paste.gbr", 71 | "FileFunction": "SolderPaste,Bot", 72 | "FilePolarity": "Positive" 73 | }, 74 | { 75 | "Path": "uSMU_v10-F_Silkscreen.gbr", 76 | "FileFunction": "Legend,Top", 77 | "FilePolarity": "Positive" 78 | }, 79 | { 80 | "Path": "uSMU_v10-B_Silkscreen.gbr", 81 | "FileFunction": "Legend,Bot", 82 | "FilePolarity": "Positive" 83 | }, 84 | { 85 | "Path": "uSMU_v10-F_Mask.gbr", 86 | "FileFunction": "SolderMask,Top", 87 | "FilePolarity": "Negative" 88 | }, 89 | { 90 | "Path": "uSMU_v10-B_Mask.gbr", 91 | "FileFunction": "SolderMask,Bot", 92 | "FilePolarity": "Negative" 93 | }, 94 | { 95 | "Path": "uSMU_v10-Edge_Cuts.gbr", 96 | "FileFunction": "Profile", 97 | "FilePolarity": "Positive" 98 | } 99 | ], 100 | "MaterialStackup": [ 101 | { 102 | "Type": "Legend", 103 | "Name": "Top Silk Screen" 104 | }, 105 | { 106 | "Type": "SolderPaste", 107 | "Name": "Top Solder Paste" 108 | }, 109 | { 110 | "Type": "SolderMask", 111 | "Color": "Green", 112 | "Thickness": 0.01, 113 | "Name": "Top Solder Mask" 114 | }, 115 | { 116 | "Type": "Copper", 117 | "Thickness": 0.035, 118 | "Name": "F.Cu" 119 | }, 120 | { 121 | "Type": "Dielectric", 122 | "Thickness": 0.48, 123 | "Material": "FR4", 124 | "Name": "F.Cu/Ground", 125 | "Notes": "Type: dielectric layer 1 (from F.Cu to Ground)" 126 | }, 127 | { 128 | "Type": "Copper", 129 | "Thickness": 0.035, 130 | "Name": "Ground" 131 | }, 132 | { 133 | "Type": "Dielectric", 134 | "Thickness": 0.48, 135 | "Material": "FR4", 136 | "Name": "Ground/Power", 137 | "Notes": "Type: dielectric layer 2 (from Ground to Power)" 138 | }, 139 | { 140 | "Type": "Copper", 141 | "Thickness": 0.035, 142 | "Name": "Power" 143 | }, 144 | { 145 | "Type": "Dielectric", 146 | "Thickness": 0.48, 147 | "Material": "FR4", 148 | "Name": "Power/B.Cu", 149 | "Notes": "Type: dielectric layer 3 (from Power to B.Cu)" 150 | }, 151 | { 152 | "Type": "Copper", 153 | "Thickness": 0.035, 154 | "Name": "B.Cu" 155 | }, 156 | { 157 | "Type": "SolderMask", 158 | "Color": "Green", 159 | "Thickness": 0.01, 160 | "Name": "Bottom Solder Mask" 161 | }, 162 | { 163 | "Type": "SolderPaste", 164 | "Name": "Bottom Solder Paste" 165 | }, 166 | { 167 | "Type": "Legend", 168 | "Name": "Bottom Silk Screen" 169 | } 170 | ] 171 | } 172 | -------------------------------------------------------------------------------- /Hardware/Version 10r1/uSMU_v10-backups/uSMU_v10-2022-03-21_154303.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joeltroughton/uSMU/51ece4f96c4998d568ea8d883581df1624eadf7e/Hardware/Version 10r1/uSMU_v10-backups/uSMU_v10-2022-03-21_154303.zip -------------------------------------------------------------------------------- /Hardware/Version 10r1/uSMU_v10-backups/uSMU_v10-2022-03-21_154837.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joeltroughton/uSMU/51ece4f96c4998d568ea8d883581df1624eadf7e/Hardware/Version 10r1/uSMU_v10-backups/uSMU_v10-2022-03-21_154837.zip -------------------------------------------------------------------------------- /Hardware/Version 10r1/uSMU_v10.kicad_prl: -------------------------------------------------------------------------------- 1 | { 2 | "board": { 3 | "active_layer": 0, 4 | "active_layer_preset": "", 5 | "auto_track_width": true, 6 | "hidden_nets": [], 7 | "high_contrast_mode": 0, 8 | "net_color_mode": 1, 9 | "opacity": { 10 | "pads": 1.0, 11 | "tracks": 1.0, 12 | "vias": 1.0, 13 | "zones": 0.6 14 | }, 15 | "ratsnest_display_mode": 0, 16 | "selection_filter": { 17 | "dimensions": true, 18 | "footprints": true, 19 | "graphics": true, 20 | "keepouts": true, 21 | "lockedItems": true, 22 | "otherItems": true, 23 | "pads": true, 24 | "text": true, 25 | "tracks": true, 26 | "vias": true, 27 | "zones": true 28 | }, 29 | "visible_items": [ 30 | 0, 31 | 1, 32 | 2, 33 | 3, 34 | 4, 35 | 5, 36 | 8, 37 | 9, 38 | 10, 39 | 11, 40 | 12, 41 | 13, 42 | 14, 43 | 15, 44 | 16, 45 | 17, 46 | 18, 47 | 19, 48 | 20, 49 | 21, 50 | 22, 51 | 23, 52 | 24, 53 | 25, 54 | 26, 55 | 27, 56 | 28, 57 | 29, 58 | 30, 59 | 32, 60 | 33, 61 | 34, 62 | 35, 63 | 36 64 | ], 65 | "visible_layers": "ffcffef_ffffffff", 66 | "zone_display_mode": 1 67 | }, 68 | "meta": { 69 | "filename": "uSMU_v10.kicad_prl", 70 | "version": 3 71 | }, 72 | "project": { 73 | "files": [] 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /Hardware/Version 10r1/uSMU_v10.pretty/E6C0606RGBC3UDA.kicad_mod: -------------------------------------------------------------------------------- 1 | (module "E6C0606RGBC3UDA" (layer F.Cu) (tedit 5FB0D1FB) 2 | (fp_text reference "REF**" (at 0 -9.5 unlocked) (layer F.SilkS) 3 | (effects (font (size 1 1) (thickness 0.15))) 4 | (tstamp ad8b0931-8e91-4f14-ae4e-041bf4ccff28) 5 | ) 6 | (fp_text value "E6C0606RGBC3UDA" (at 0 -8 unlocked) (layer F.Fab) 7 | (effects (font (size 1 1) (thickness 0.15))) 8 | (tstamp 32fe31a5-3427-4934-a0a8-bf5d97c80eb6) 9 | ) 10 | (fp_text user "${REF}" (at 0 -6.5 unlocked) (layer F.Fab) 11 | (effects (font (size 1 1) (thickness 0.15))) 12 | (tstamp 7387e9d7-79d9-4b52-a12d-5ec3d4d372d7) 13 | ) 14 | (fp_line (start 1.340974 -0.1) (end 1.140974 -0.2) (layer F.SilkS) (width 0.12) (tstamp 1e6d0167-fe23-45e0-b2dd-1ea11cc001c2)) 15 | (fp_line (start 1.140974 -0.2) (end 1.140974 0.2) (layer F.SilkS) (width 0.12) (tstamp 49ea66ae-6aa9-4800-a35d-5db1cf3648f3)) 16 | (fp_line (start 1.140974 0.2) (end 1.340974 0.1) (layer F.SilkS) (width 0.12) (tstamp 759b16fd-8898-46d4-9f2e-0f465fe71b6d)) 17 | (fp_line (start 1.340974 0.1) (end 1.340974 -0.1) (layer F.SilkS) (width 0.12) (tstamp f981c09a-bb58-46af-b553-f06efc43962c)) 18 | (fp_rect (start -1.2 -1) (end 1.2 1) (layer F.CrtYd) (width 0.05) (tstamp 086faad4-3383-49ed-90ce-2d511a5ab31e)) 19 | (pad "1" smd rect (at -0.7 -0.5) (size 0.6 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp ca31671c-f4ce-4b88-9be4-d04e87ac1901)) 20 | (pad "2" smd rect (at 0.7 -0.5) (size 0.6 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 64ff7f0d-d980-43d4-8ca0-ad8cce368e52)) 21 | (pad "3" smd rect (at -0.7 0.5) (size 0.6 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp db8351e3-1846-40cd-aa2a-2f56cd9153f7)) 22 | (pad "4" smd rect (at 0.7 0.5) (size 0.6 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 9b04a22c-86bd-49ae-a60f-ed66c7d149a0)) 23 | ) 24 | -------------------------------------------------------------------------------- /Hardware/Version 10r1/uSMU_v10.pretty/TYPE-C-31-M-12.kicad_mod: -------------------------------------------------------------------------------- 1 | (footprint "TYPE-C-31-M-12" (version 20210424) (generator pcbnew) (layer "F.Cu") 2 | (tedit 608EAF79) 3 | (fp_text reference "REF**" (at 0 -0.5 unlocked) (layer "F.SilkS") 4 | (effects (font (size 1 1) (thickness 0.15))) 5 | (tstamp 21f56d78-c2c1-4024-b11a-5b5f83dbe252) 6 | ) 7 | (fp_text value "TYPE-C-31-M-12" (at 0 1 unlocked) (layer "F.Fab") 8 | (effects (font (size 1 1) (thickness 0.15))) 9 | (tstamp 4fcd42d5-4012-4306-bb6c-a33bc6e0b355) 10 | ) 11 | (fp_text user "${REFERENCE}" (at 0 2.5 unlocked) (layer "F.Fab") 12 | (effects (font (size 1 1) (thickness 0.15))) 13 | (tstamp 952b681b-6afb-414e-8edc-6097579200ea) 14 | ) 15 | (fp_line (start 4.83 -3.445) (end -4.92 -3.445) (layer "F.CrtYd") (width 0.12) (tstamp 553f0e02-19c8-4410-986d-ae124259846c)) 16 | (fp_line (start 4.83 5.055) (end -4.92 5.055) (layer "F.CrtYd") (width 0.12) (tstamp 589edc39-b1c4-43bf-a9d5-d3f7c65affed)) 17 | (fp_line (start -4.92 -3.445) (end -4.92 5.055) (layer "F.CrtYd") (width 0.12) (tstamp 8a66dfdb-4235-4c63-bd5e-aa4d15ace0bd)) 18 | (fp_line (start 4.83 5.055) (end 4.83 -3.445) (layer "F.CrtYd") (width 0.12) (tstamp fc391615-8af5-4745-9ce7-c9778dac9d7b)) 19 | (pad "" thru_hole oval (at 4.3 2.5) (size 1 1.6) (drill oval 0.6 1.2) (layers *.Cu *.Mask) (tstamp 197d0396-cb7f-4f28-8e3d-f45dcdc47c9c)) 20 | (pad "" np_thru_hole custom (at 2.87 -1.15) (size 0.6 0.6) (drill 0.65) (layers F&B.Cu *.Mask) 21 | (options (clearance outline) (anchor circle)) 22 | (primitives 23 | ) (tstamp 380955fd-3706-472c-a709-ab08d8b20d17)) 24 | (pad "" thru_hole oval (at 4.3 -1.68) (size 1 2.1) (drill oval 0.6 1.7) (layers *.Cu *.Mask) (tstamp 51740fff-f587-467f-bec2-4902d4d9295b)) 25 | (pad "" thru_hole oval (at -4.34 2.5) (size 1 1.6) (drill oval 0.6 1.2) (layers *.Cu *.Mask) (tstamp 875c374d-e3ed-4054-bcdb-28e36ae8517f)) 26 | (pad "" thru_hole oval (at -4.34 -1.68) (size 1 2.1) (drill oval 0.6 1.7) (layers *.Cu *.Mask) (tstamp 87c7c76c-a0d4-4651-ae27-5a575c34224c)) 27 | (pad "" np_thru_hole custom (at -2.91 -1.15) (size 0.6 0.6) (drill 0.65) (layers F&B.Cu *.Mask) 28 | (options (clearance outline) (anchor circle)) 29 | (primitives 30 | ) (tstamp 92399634-588a-4a34-a6b7-6bf22d6036fe)) 31 | (pad "A1" smd rect (at -3.27 -2.595) (size 0.6 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 4ea3f578-cc32-42bd-9f92-d6f1be6342fe)) 32 | (pad "A4" smd rect (at -2.47 -2.595) (size 0.6 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp eea23257-f99b-4c1e-aa72-2a2acd507d19)) 33 | (pad "A5" smd rect (at -1.27 -2.595) (size 0.3 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp b1c36337-3c79-44df-be62-633a214d200e)) 34 | (pad "A6" smd rect (at -0.27 -2.595) (size 0.3 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 0f7d456d-601d-43ec-97de-e08b107d4d1f)) 35 | (pad "A7" smd rect (at 0.23 -2.595) (size 0.3 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp eee38f62-427b-41f3-b162-428b49d3f3f5)) 36 | (pad "A8" smd rect (at 1.23 -2.595) (size 0.3 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp c5472ea7-1494-40a1-8a68-b760cc6f05c5)) 37 | (pad "A9" smd rect (at 2.43 -2.595) (size 0.6 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 6b289042-aa2c-4840-818d-909497a6fe42)) 38 | (pad "A12" smd rect (at 3.23 -2.595) (size 0.6 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp af7f7113-06ce-4fc9-9291-1bc193e8f9ff)) 39 | (pad "B5" smd rect (at 1.73 -2.595) (size 0.3 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp c847b6ba-e594-4c25-8b02-f857c63d33f1)) 40 | (pad "B6" smd rect (at 0.73 -2.595) (size 0.3 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 572903c4-90a2-459b-8ab7-e302d1af2099)) 41 | (pad "B7" smd rect (at -0.77 -2.595) (size 0.3 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 95733fc8-c849-4d87-b196-8ed331c1f9b9)) 42 | (pad "B8" smd rect (at -1.77 -2.595) (size 0.3 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 2467190e-2e90-4510-bf82-fe2aa4410574)) 43 | ) 44 | -------------------------------------------------------------------------------- /Hardware/Version 10r1/uSMU_v10_BOM.csv: -------------------------------------------------------------------------------- 1 | Item,Qty,Reference(s),Value,Manufacturer,Mfr. Part number 2 | 1,19,"C1, C5, C8, C9, C10, C11, C13, C15, C17, C18, C19, C20, C22, C23, C24, C33, C35, C37, C38",1uF,Samsung Electro-Mechanics,CL10B105KA8NNNC 3 | 2,5,"C2, C7, C16, C28, C29, C36",0.1uF,Samsung Electro-Mechanics,CL10B104KB8NNNC 4 | 3,6,"C3, C14, C25, C40, C41, C43",10nF,Samsung Electro-Mechanics,CL10B103KB8NNNC 5 | 4,5,"C4, C6, C12, C27, C30",10uF,Samsung Electro-Mechanics,CL21A106KAYNNNE 6 | 5,1,C21,200pF,Samsung Electro-Mechanics,CL10C201JB8NNNC 7 | 6,2,"C26, C32",22uF,Samsung Electro-Mechanics,CL21A226MAQNNNE 8 | 7,2,"C31, C34",2pF,Samsung Electro-Mechanics,CL10C020BB8NNNC 9 | 8,2,"C42, C44",1nF,Samsung Electro-Mechanics,CL10B102KB8NNNC 10 | 9,1,"D1, D2, D3, D4",Status LED,EKINGLUX,E6C0606RGBC3UDA 11 | 10,2,"D5, D6",B5819W,Microdiode Electronics,B5819W 12 | 11,1,J1,SWD,Amphenol ICC,20021121-00010C4LF 13 | 12,1,J2,USB_C_Receptacle_USB2.0,Korean Hroparts Electronics,TYPE-C-31-M-12 14 | 13,1,J3,DUT,TE Connectivity,1-1634624-0 15 | 14,2,"L1, L2",4.7uH,Taiyo Yuden,CBC3225T4R7MR 16 | 15,1,Q1,AO3401A,BORN,AO3401A 17 | 16,15,"R1, R2, R9, R11, R12, R17, R18, R20, R21, R22, R24, R26, R29, R32, R39",10k,Panasonic,ERJPB3D1002V 18 | 17,7,"R3, R4, R5, R7, R23, R25, R28",1k,Panasonic,ERJ3RBD1001V 19 | 18,2,"R6, R16",5.1k,Panasonic,ERJ3EKF5101V 20 | 19,8,"R8, R10, R13, R15, R19, R27, R30, R31",100k,Panasonic,ERJPB3D1003V 21 | 20,2,"R14, R36",330k,Panasonic,ERJ3EKF3303V 22 | 21,3,"R33, R34, R35",47k,Panasonic,ERJPA3F4702V 23 | 22,5,"R37, R38, R42, R43, R44",100,Panasonic,ERJ3EKF1000V 24 | 23,1,R40,50,Panasonic,ERA3AEB49R9V 25 | 24,1,R41,10,Panasonic,ERJUP3D10R0V 26 | 25,1,U1,ADS1115IDGS,Texas Instruments,ADS1115IDGSR 27 | 26,3,"U2, U7, U9",GS8331,Gainsil,GS8331-TR 28 | 27,1,U3,STM32F072C8Ux,ST Microelectronics,STM32F072CBU6 29 | 28,1,U4,TS321,ST Microelectronics,TS321AILT 30 | 29,1,U5,USBLC6-2SC6,ST Microelectronics,USBLC6-2SC6 31 | 30,1,U6,ME6212C33M5G,Microne,ME6212C33M5G 32 | 31,1,U8,MCP1501T-40E_CHY,Microchip,MCP1501T-40E/CHY 33 | 32,1,U10,LT1970,Analog Devices,LT1970CFE#PBF 34 | 33,1,U11,DAC8571IDGKR,Texas Instruments,DAC8571IDGKR 35 | 34,1,U12,TPS65131RGET,Texas Instruments,TPS65131RGET 36 | 35,1,U13,H7650-45PR,Shanghai Siproin Microelectronics,H7650-45PR 37 | 36,1,U14,PGA281,Texas Instruments,PGA281AIPWR 38 | -------------------------------------------------------------------------------- /Hardware/Version 10r1/uSMU_v10_schematic.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joeltroughton/uSMU/51ece4f96c4998d568ea8d883581df1624eadf7e/Hardware/Version 10r1/uSMU_v10_schematic.pdf -------------------------------------------------------------------------------- /Hardware/Version 5/Gerber files/uSMU_v05-B_Mask.gbr: -------------------------------------------------------------------------------- 1 | %TF.GenerationSoftware,KiCad,Pcbnew,(5.99.0-7424-ge38b34a4eb)*% 2 | %TF.CreationDate,2020-12-20T18:04:03+03:00*% 3 | %TF.ProjectId,uSMU_v05,75534d55-5f76-4303-952e-6b696361645f,rev?*% 4 | %TF.SameCoordinates,Original*% 5 | %TF.FileFunction,Soldermask,Bot*% 6 | %TF.FilePolarity,Negative*% 7 | %FSLAX46Y46*% 8 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* 9 | G04 Created by KiCad (PCBNEW (5.99.0-7424-ge38b34a4eb)) date 2020-12-20 18:04:03* 10 | %MOMM*% 11 | %LPD*% 12 | G01* 13 | G04 APERTURE LIST* 14 | %ADD10C,0.100000*% 15 | %ADD11C,1.524000*% 16 | %ADD12O,2.500000X1.600000*% 17 | %ADD13O,7.000000X3.500000*% 18 | %ADD14C,0.800000*% 19 | %ADD15C,6.400000*% 20 | %ADD16O,2.100000X1.100000*% 21 | %ADD17O,2.600000X1.100000*% 22 | G04 APERTURE END LIST* 23 | D10* 24 | X145000000Y-123500000D02* 25 | X133000000Y-123500000D01* 26 | X133000000Y-123500000D02* 27 | X133000000Y-120000000D01* 28 | X133000000Y-120000000D02* 29 | X145000000Y-120000000D01* 30 | X145000000Y-120000000D02* 31 | X145000000Y-123500000D01* 32 | G36* 33 | X145000000Y-123500000D02* 34 | G01* 35 | X133000000Y-123500000D01* 36 | X133000000Y-120000000D01* 37 | X145000000Y-120000000D01* 38 | X145000000Y-123500000D01* 39 | G37* 40 | X145000000Y-123500000D02* 41 | X133000000Y-123500000D01* 42 | X133000000Y-120000000D01* 43 | X145000000Y-120000000D01* 44 | X145000000Y-123500000D01* 45 | D11* 46 | %TO.C,U3*% 47 | X115400000Y-141000000D03* 48 | X130640000Y-141000000D03* 49 | X130640000Y-133380000D03* 50 | X128100000Y-133380000D03* 51 | X123020000Y-133380000D03* 52 | X115400000Y-133380000D03* 53 | %TD*% 54 | D12* 55 | %TO.C,J1*% 56 | X157000000Y-121500000D03* 57 | D13* 58 | X162080000Y-116420000D03* 59 | D12* 60 | X157000000Y-118960000D03* 61 | D13* 62 | X162080000Y-126580000D03* 63 | %TD*% 64 | D14* 65 | %TO.C,H1*% 66 | X166000000Y-136600000D03* 67 | X167697056Y-140697056D03* 68 | X168400000Y-139000000D03* 69 | X164302944Y-140697056D03* 70 | D15* 71 | X166000000Y-139000000D03* 72 | D14* 73 | X164302944Y-137302944D03* 74 | X163600000Y-139000000D03* 75 | X166000000Y-141400000D03* 76 | X167697056Y-137302944D03* 77 | %TD*% 78 | %TO.C,H4*% 79 | X104000000Y-106400000D03* 80 | X101600000Y-104000000D03* 81 | X105697056Y-105697056D03* 82 | X106400000Y-104000000D03* 83 | X102302944Y-105697056D03* 84 | X104000000Y-101600000D03* 85 | X105697056Y-102302944D03* 86 | D15* 87 | X104000000Y-104000000D03* 88 | D14* 89 | X102302944Y-102302944D03* 90 | %TD*% 91 | D16* 92 | %TO.C,J2*% 93 | X107390000Y-125820000D03* 94 | D17* 95 | X102030000Y-125820000D03* 96 | X102030000Y-117180000D03* 97 | D16* 98 | X107390000Y-117180000D03* 99 | %TD*% 100 | D14* 101 | %TO.C,H3*% 102 | X164302944Y-105697056D03* 103 | X164302944Y-102302944D03* 104 | X168400000Y-104000000D03* 105 | X167697056Y-102302944D03* 106 | X166000000Y-106400000D03* 107 | D15* 108 | X166000000Y-104000000D03* 109 | D14* 110 | X166000000Y-101600000D03* 111 | X163600000Y-104000000D03* 112 | X167697056Y-105697056D03* 113 | %TD*% 114 | %TO.C,H2*% 115 | X106400000Y-139000000D03* 116 | X104000000Y-141400000D03* 117 | X105697056Y-140697056D03* 118 | X102302944Y-140697056D03* 119 | X104000000Y-136600000D03* 120 | X105697056Y-137302944D03* 121 | X101600000Y-139000000D03* 122 | X102302944Y-137302944D03* 123 | D15* 124 | X104000000Y-139000000D03* 125 | %TD*% 126 | M02* 127 | -------------------------------------------------------------------------------- /Hardware/Version 5/Gerber files/uSMU_v05-B_Paste.gbr: -------------------------------------------------------------------------------- 1 | %TF.GenerationSoftware,KiCad,Pcbnew,(5.99.0-7424-ge38b34a4eb)*% 2 | %TF.CreationDate,2020-12-20T18:04:03+03:00*% 3 | %TF.ProjectId,uSMU_v05,75534d55-5f76-4303-952e-6b696361645f,rev?*% 4 | %TF.SameCoordinates,Original*% 5 | %TF.FileFunction,Paste,Bot*% 6 | %TF.FilePolarity,Positive*% 7 | %FSLAX46Y46*% 8 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* 9 | G04 Created by KiCad (PCBNEW (5.99.0-7424-ge38b34a4eb)) date 2020-12-20 18:04:03* 10 | %MOMM*% 11 | %LPD*% 12 | G01* 13 | G04 APERTURE LIST* 14 | G04 APERTURE END LIST* 15 | M02* 16 | -------------------------------------------------------------------------------- /Hardware/Version 5/Gerber files/uSMU_v05-Edge_Cuts.gbr: -------------------------------------------------------------------------------- 1 | %TF.GenerationSoftware,KiCad,Pcbnew,(5.99.0-7424-ge38b34a4eb)*% 2 | %TF.CreationDate,2020-12-20T18:04:03+03:00*% 3 | %TF.ProjectId,uSMU_v05,75534d55-5f76-4303-952e-6b696361645f,rev?*% 4 | %TF.SameCoordinates,Original*% 5 | %TF.FileFunction,Profile,NP*% 6 | %FSLAX46Y46*% 7 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* 8 | G04 Created by KiCad (PCBNEW (5.99.0-7424-ge38b34a4eb)) date 2020-12-20 18:04:03* 9 | %MOMM*% 10 | %LPD*% 11 | G01* 12 | G04 APERTURE LIST* 13 | %TA.AperFunction,Profile*% 14 | %ADD10C,0.100000*% 15 | %TD*% 16 | G04 APERTURE END LIST* 17 | D10* 18 | X104000000Y-143000000D02* 19 | G75* 20 | G02* 21 | X100000000Y-139000000I0J4000000D01* 22 | G01* 23 | X166000000Y-143000000D02* 24 | X104000000Y-143000000D01* 25 | X100000000Y-139000000D02* 26 | X100000000Y-104000000D01* 27 | X166000000Y-100000000D02* 28 | G75* 29 | G02* 30 | X170000000Y-104000000I0J-4000000D01* 31 | G01* 32 | X170000000Y-104000000D02* 33 | X170000000Y-139000000D01* 34 | X104000000Y-100000000D02* 35 | X166000000Y-100000000D01* 36 | X100000000Y-104000000D02* 37 | G75* 38 | G02* 39 | X104000000Y-100000000I4000000J0D01* 40 | G01* 41 | X170000000Y-139000000D02* 42 | G75* 43 | G02* 44 | X166000000Y-143000000I-4000000J0D01* 45 | G01* 46 | M02* 47 | -------------------------------------------------------------------------------- /Hardware/Version 5/Gerber files/uSMU_v05-NPTH.drl: -------------------------------------------------------------------------------- 1 | M48 2 | ; DRILL file {KiCad (5.99.0-7424-ge38b34a4eb)} date 12/20/20 18:04:00 3 | ; FORMAT={-:-/ absolute / inch / decimal} 4 | ; #@! TF.CreationDate,2020-12-20T18:04:00+03:00 5 | ; #@! TF.GenerationSoftware,Kicad,Pcbnew,(5.99.0-7424-ge38b34a4eb) 6 | ; #@! TF.FileFunction,NonPlated,1,4,NPTH 7 | FMAT,2 8 | INCH 9 | % 10 | G90 11 | G05 12 | T0 13 | M30 14 | -------------------------------------------------------------------------------- /Hardware/Version 5/Gerber files/uSMU_v05-PTH.drl: -------------------------------------------------------------------------------- 1 | M48 2 | ; DRILL file {KiCad (5.99.0-7424-ge38b34a4eb)} date 12/20/20 18:04:00 3 | ; FORMAT={-:-/ absolute / inch / decimal} 4 | ; #@! TF.CreationDate,2020-12-20T18:04:00+03:00 5 | ; #@! TF.GenerationSoftware,Kicad,Pcbnew,(5.99.0-7424-ge38b34a4eb) 6 | ; #@! TF.FileFunction,Plated,1,4,PTH 7 | FMAT,2 8 | INCH 9 | T1C0.0118 10 | T2C0.0157 11 | T3C0.0197 12 | T4C0.0236 13 | T5C0.0300 14 | T6C0.0350 15 | T7C0.0791 16 | T8C0.1260 17 | % 18 | G90 19 | G05 20 | T1 21 | X4.0315Y-4.5669 22 | X4.0709Y-5.0945 23 | X4.0945Y-4.4724 24 | X4.1181Y-5.0709 25 | X4.1417Y-4.7874 26 | X4.1496Y-5.0315 27 | X4.252Y-4.5354 28 | X4.2756Y-4.7795 29 | X4.2756Y-4.8189 30 | X4.2913Y-4.5669 31 | X4.2913Y-4.622 32 | X4.3081Y-5.0 33 | X4.3091Y-4.7008 34 | X4.3159Y-4.4419 35 | X4.3327Y-4.9764 36 | X4.3386Y-4.4803 37 | X4.3573Y-4.9528 38 | X4.3583Y-4.6831 39 | X4.3701Y-4.6457 40 | X4.378Y-4.4882 41 | X4.4016Y-4.6063 42 | X4.4016Y-4.7116 43 | X4.4016Y-5.0 44 | X4.5039Y-5.0472 45 | X4.5354Y-5.0709 46 | X4.6594Y-5.0571 47 | X4.6929Y-4.6929 48 | X4.7185Y-4.8583 49 | X5.315Y-4.5591 50 | X5.409Y-4.2753 51 | X5.5669Y-4.4173 52 | T2 53 | X4.0079Y-5.0787 54 | X4.1024Y-4.6693 55 | X4.1024Y-4.7165 56 | X4.1024Y-4.8425 57 | X4.1024Y-4.8898 58 | X4.1496Y-4.6693 59 | X4.1496Y-4.7165 60 | X4.1496Y-4.8425 61 | X4.1496Y-4.8898 62 | X4.1575Y-4.9449 63 | X4.1575Y-5.2598 64 | X4.1969Y-4.5276 65 | X4.2205Y-5.1575 66 | X4.2751Y-5.3652 67 | X4.2751Y-5.4439 68 | X4.2751Y-5.5069 69 | X4.2751Y-5.5699 70 | X4.2874Y-4.6614 71 | X4.2913Y-5.2598 72 | X4.3228Y-4.0472 73 | X4.3622Y-4.7362 74 | X4.3701Y-4.2992 75 | X4.4213Y-4.2953 76 | X4.4331Y-4.0 77 | X4.4331Y-5.1339 78 | X4.4803Y-4.8031 79 | X4.4803Y-4.9134 80 | X4.4882Y-4.122 81 | X4.4882Y-4.2992 82 | X4.5591Y-4.2992 83 | X4.5669Y-5.1024 84 | X4.5984Y-4.8031 85 | X4.5984Y-4.9134 86 | X4.6299Y-5.1575 87 | X4.6496Y-4.1339 88 | X4.6535Y-4.685 89 | X4.685Y-5.0079 90 | X4.6969Y-4.5709 91 | X4.7087Y-5.189 92 | X4.7165Y-4.3543 93 | X4.7244Y-4.1299 94 | X4.7352Y-4.9606 95 | X4.7638Y-5.4488 96 | X4.7717Y-4.9055 97 | X4.7717Y-4.7362 98 | X4.7874Y-4.315 99 | X4.7953Y-4.685 100 | X4.8189Y-4.2756 101 | X4.8317Y-4.6142 102 | X4.8425Y-5.189 103 | X4.8661Y-4.0079 104 | X4.8898Y-4.3622 105 | X4.8937Y-4.7638 106 | X4.9331Y-4.9567 107 | X4.9528Y-5.0394 108 | X4.9921Y-5.4252 109 | X5.0Y-4.4724 110 | X5.0Y-4.622 111 | X5.0Y-5.189 112 | X5.0236Y-4.748 113 | X5.0463Y-4.9498 114 | X5.0551Y-4.4882 115 | X5.0984Y-5.189 116 | X5.1285Y-5.0354 117 | X5.1339Y-5.126 118 | X5.1811Y-4.2087 119 | X5.1811Y-4.4961 120 | X5.1969Y-4.9449 121 | X5.2244Y-4.878 122 | X5.2283Y-5.3858 123 | X5.2441Y-5.1339 124 | X5.2677Y-4.4646 125 | X5.2992Y-4.9567 126 | X5.3022Y-4.7953 127 | X5.315Y-5.5827 128 | X5.3307Y-4.3071 129 | X5.3386Y-4.0079 130 | X5.378Y-4.9449 131 | X5.3858Y-4.4882 132 | X5.3858Y-4.5591 133 | X5.4331Y-4.9606 134 | X5.4488Y-4.4409 135 | X5.4488Y-4.4882 136 | X5.4537Y-4.6063 137 | X5.4646Y-5.3071 138 | X5.4646Y-5.4488 139 | X5.4709Y-4.5246 140 | X5.4882Y-5.0787 141 | X5.5039Y-4.1811 142 | X5.5039Y-5.2283 143 | X5.5039Y-5.3622 144 | X5.5039Y-5.5118 145 | X5.5354Y-4.5433 146 | X5.5354Y-4.9606 147 | X5.5512Y-5.1102 148 | X5.5591Y-4.6348 149 | X5.5669Y-4.1181 150 | X5.5669Y-5.1811 151 | X5.6102Y-4.7244 152 | X5.6102Y-4.8031 153 | X5.6102Y-4.8819 154 | X5.6102Y-4.9606 155 | X5.6142Y-4.1732 156 | X5.6142Y-5.0945 157 | X5.622Y-4.4016 158 | X5.628Y-5.2185 159 | X5.6318Y-5.0593 160 | X5.6693Y-4.6457 161 | X5.6693Y-4.7244 162 | X5.6693Y-4.8031 163 | X5.6693Y-4.8819 164 | X5.6772Y-5.1102 165 | X5.6772Y-5.5827 166 | X5.7126Y-4.5315 167 | X5.7244Y-5.4488 168 | X5.7244Y-5.5118 169 | X5.7323Y-5.1811 170 | X5.7402Y-4.4882 171 | X5.7402Y-4.6063 172 | X5.748Y-4.8583 173 | X5.8189Y-4.3228 174 | X5.8268Y-4.2598 175 | X5.8346Y-4.2205 176 | X5.8425Y-5.1496 177 | X5.874Y-4.1732 178 | X5.8819Y-4.1181 179 | X5.9685Y-5.3307 180 | X5.9764Y-4.7795 181 | X5.9764Y-5.2913 182 | X5.9843Y-4.685 183 | X5.9843Y-4.9134 184 | X6.0315Y-4.1102 185 | X6.0394Y-5.0866 186 | X6.0472Y-5.3858 187 | X6.063Y-4.2913 188 | X6.0709Y-4.0079 189 | X6.0738Y-5.0551 190 | X6.0787Y-4.4016 191 | X6.1102Y-5.4331 192 | X6.1201Y-4.4488 193 | X6.126Y-5.5276 194 | X6.1732Y-5.2756 195 | X6.1811Y-4.9921 196 | X6.252Y-4.3937 197 | X6.3701Y-5.1496 198 | X6.5827Y-5.2303 199 | X6.5906Y-4.3012 200 | T3 201 | X4.0Y-4.0945 202 | X4.0Y-5.4724 203 | X4.0277Y-4.0277 204 | X4.0277Y-4.1613 205 | X4.0277Y-5.4056 206 | X4.0277Y-5.5393 207 | X4.0945Y-4.0 208 | X4.0945Y-4.189 209 | X4.0945Y-5.378 210 | X4.0945Y-5.5669 211 | X4.1613Y-4.0277 212 | X4.1613Y-4.1613 213 | X4.1613Y-5.4056 214 | X4.1613Y-5.5393 215 | X4.189Y-4.0945 216 | X4.189Y-5.4724 217 | X6.4409Y-4.0945 218 | X6.4409Y-5.4724 219 | X6.4686Y-4.0277 220 | X6.4686Y-4.1613 221 | X6.4686Y-5.4056 222 | X6.4686Y-5.5393 223 | X6.5354Y-4.0 224 | X6.5354Y-4.189 225 | X6.5354Y-5.378 226 | X6.5354Y-5.5669 227 | X6.6022Y-4.0277 228 | X6.6022Y-4.1613 229 | X6.6022Y-5.4056 230 | X6.6022Y-5.5393 231 | X6.6299Y-4.0945 232 | X6.6299Y-5.4724 233 | T5 234 | X4.5433Y-5.2512 235 | X4.5433Y-5.5512 236 | X4.8433Y-5.2512 237 | X5.0433Y-5.2512 238 | X5.1433Y-5.2512 239 | X5.1433Y-5.5512 240 | T6 241 | X6.1811Y-4.6835 242 | X6.1811Y-4.7835 243 | T7 244 | X6.3811Y-4.5835 245 | X6.3811Y-4.9835 246 | T8 247 | X4.0945Y-4.0945 248 | X4.0945Y-5.4724 249 | X6.5354Y-4.0945 250 | X6.5354Y-5.4724 251 | T4 252 | G00X4.0465Y-4.6134 253 | M15 254 | G01X3.9874Y-4.6134 255 | M16 256 | G05 257 | G00X4.0465Y-4.9535 258 | M15 259 | G01X3.9874Y-4.9535 260 | M16 261 | G05 262 | G00X4.2476Y-4.6134 263 | M15 264 | G01X4.2083Y-4.6134 265 | M16 266 | G05 267 | G00X4.2476Y-4.9535 268 | M15 269 | G01X4.2083Y-4.9535 270 | M16 271 | G05 272 | T0 273 | M30 274 | -------------------------------------------------------------------------------- /Hardware/Version 5/Gerber files/uSMU_v05-job.gbrjob: -------------------------------------------------------------------------------- 1 | { 2 | "Header": { 3 | "GenerationSoftware": { 4 | "Vendor": "KiCad", 5 | "Application": "Pcbnew", 6 | "Version": "(5.99.0-7424-ge38b34a4eb)" 7 | }, 8 | "CreationDate": "2020-12-20T18:04:03+03:00" 9 | }, 10 | "GeneralSpecs": { 11 | "ProjectId": { 12 | "Name": "uSMU_v05", 13 | "GUID": "75534d55-5f76-4303-952e-6b696361645f", 14 | "Revision": "rev?" 15 | }, 16 | "Size": { 17 | "X": 70.1, 18 | "Y": 43.1 19 | }, 20 | "LayerNumber": 4, 21 | "BoardThickness": 1.6, 22 | "Finish": "None" 23 | }, 24 | "DesignRules": [ 25 | { 26 | "Layers": "Outer", 27 | "PadToPad": 0.0, 28 | "PadToTrack": 0.0, 29 | "TrackToTrack": 0.2, 30 | "MinLineWidth": 0.25, 31 | "TrackToRegion": 0.5, 32 | "RegionToRegion": 0.5 33 | }, 34 | { 35 | "Layers": "Inner", 36 | "PadToPad": 0.0, 37 | "PadToTrack": 0.0, 38 | "TrackToTrack": 0.2, 39 | "MinLineWidth": 0.5, 40 | "TrackToRegion": 0.5, 41 | "RegionToRegion": 0.5 42 | } 43 | ], 44 | "FilesAttributes": [ 45 | { 46 | "Path": "uSMU_v05-F_Cu.gbr", 47 | "FileFunction": "Copper,L1,Top", 48 | "FilePolarity": "Positive" 49 | }, 50 | { 51 | "Path": "uSMU_v05-Ground.gbr", 52 | "FileFunction": "Copper,L2,Inr", 53 | "FilePolarity": "Positive" 54 | }, 55 | { 56 | "Path": "uSMU_v05-Power.gbr", 57 | "FileFunction": "Copper,L3,Inr", 58 | "FilePolarity": "Positive" 59 | }, 60 | { 61 | "Path": "uSMU_v05-B_Cu.gbr", 62 | "FileFunction": "Copper,L4,Bot", 63 | "FilePolarity": "Positive" 64 | }, 65 | { 66 | "Path": "uSMU_v05-F_Paste.gbr", 67 | "FileFunction": "SolderPaste,Top", 68 | "FilePolarity": "Positive" 69 | }, 70 | { 71 | "Path": "uSMU_v05-B_Paste.gbr", 72 | "FileFunction": "SolderPaste,Bot", 73 | "FilePolarity": "Positive" 74 | }, 75 | { 76 | "Path": "uSMU_v05-F_Silkscreen.gbr", 77 | "FileFunction": "Legend,Top", 78 | "FilePolarity": "Positive" 79 | }, 80 | { 81 | "Path": "uSMU_v05-B_Silkscreen.gbr", 82 | "FileFunction": "Legend,Bot", 83 | "FilePolarity": "Positive" 84 | }, 85 | { 86 | "Path": "uSMU_v05-F_Mask.gbr", 87 | "FileFunction": "SolderMask,Top", 88 | "FilePolarity": "Negative" 89 | }, 90 | { 91 | "Path": "uSMU_v05-B_Mask.gbr", 92 | "FileFunction": "SolderMask,Bot", 93 | "FilePolarity": "Negative" 94 | }, 95 | { 96 | "Path": "uSMU_v05-Edge_Cuts.gbr", 97 | "FileFunction": "Profile", 98 | "FilePolarity": "Positive" 99 | } 100 | ], 101 | "MaterialStackup": [ 102 | { 103 | "Type": "Legend", 104 | "Name": "Top Silk Screen" 105 | }, 106 | { 107 | "Type": "SolderPaste", 108 | "Name": "Top Solder Paste" 109 | }, 110 | { 111 | "Type": "SolderMask", 112 | "Color": "Green", 113 | "Thickness": 0.01, 114 | "Name": "Top Solder Mask" 115 | }, 116 | { 117 | "Type": "Copper", 118 | "Thickness": 0.035, 119 | "Name": "F.Cu" 120 | }, 121 | { 122 | "Type": "Dielectric", 123 | "Thickness": 0.48, 124 | "Material": "FR4", 125 | "Name": "F.Cu/Ground", 126 | "Notes": "Type: dielectric layer 1 (from F.Cu to Ground)" 127 | }, 128 | { 129 | "Type": "Copper", 130 | "Thickness": 0.035, 131 | "Name": "Ground" 132 | }, 133 | { 134 | "Type": "Dielectric", 135 | "Thickness": 0.48, 136 | "Material": "FR4", 137 | "Name": "Ground/Power", 138 | "Notes": "Type: dielectric layer 2 (from Ground to Power)" 139 | }, 140 | { 141 | "Type": "Copper", 142 | "Thickness": 0.035, 143 | "Name": "Power" 144 | }, 145 | { 146 | "Type": "Dielectric", 147 | "Thickness": 0.48, 148 | "Material": "FR4", 149 | "Name": "Power/B.Cu", 150 | "Notes": "Type: dielectric layer 3 (from Power to B.Cu)" 151 | }, 152 | { 153 | "Type": "Copper", 154 | "Thickness": 0.035, 155 | "Name": "B.Cu" 156 | }, 157 | { 158 | "Type": "SolderMask", 159 | "Color": "Green", 160 | "Thickness": 0.01, 161 | "Name": "Bottom Solder Mask" 162 | }, 163 | { 164 | "Type": "SolderPaste", 165 | "Name": "Bottom Solder Paste" 166 | }, 167 | { 168 | "Type": "Legend", 169 | "Name": "Bottom Silk Screen" 170 | } 171 | ] 172 | } 173 | -------------------------------------------------------------------------------- /Hardware/Version 5/fp-lib-table: -------------------------------------------------------------------------------- 1 | (fp_lib_table 2 | (lib (name "uSMU_v05")(type "KiCad")(uri "${KIPRJMOD}/uSMU_v05.pretty")(options "")(descr "")) 3 | ) 4 | -------------------------------------------------------------------------------- /Hardware/Version 5/sym-lib-table: -------------------------------------------------------------------------------- 1 | (sym_lib_table 2 | (lib (name "uSMU_v05")(type "KiCad")(uri "${KIPRJMOD}/uSMU_v05.kicad_sym")(options "")(descr "")) 3 | ) 4 | -------------------------------------------------------------------------------- /Hardware/Version 5/uSMU_v05.kicad_prl: -------------------------------------------------------------------------------- 1 | { 2 | "board": { 3 | "active_layer": 0, 4 | "active_layer_preset": "All Layers", 5 | "hidden_nets": [], 6 | "high_contrast_mode": 0, 7 | "net_color_mode": 1, 8 | "opacity": { 9 | "pads": 1.0, 10 | "tracks": 1.0, 11 | "vias": 1.0, 12 | "zones": 0.6 13 | }, 14 | "ratsnest_display_mode": 0, 15 | "selection_filter": { 16 | "dimensions": true, 17 | "footprints": true, 18 | "graphics": true, 19 | "keepouts": true, 20 | "lockedItems": true, 21 | "otherItems": true, 22 | "pads": true, 23 | "text": true, 24 | "tracks": true, 25 | "vias": true, 26 | "zones": true 27 | }, 28 | "visible_items": [ 29 | 0, 30 | 1, 31 | 2, 32 | 3, 33 | 4, 34 | 5, 35 | 6, 36 | 8, 37 | 9, 38 | 10, 39 | 11, 40 | 12, 41 | 13, 42 | 14, 43 | 15, 44 | 16, 45 | 17, 46 | 18, 47 | 19, 48 | 20, 49 | 21, 50 | 22, 51 | 23, 52 | 24, 53 | 27, 54 | 28, 55 | 29, 56 | 30, 57 | 31, 58 | 32, 59 | 33, 60 | 37, 61 | 38 62 | ], 63 | "visible_layers": "fffffff_ffffffff" 64 | }, 65 | "meta": { 66 | "filename": "uSMU_v05.kicad_prl", 67 | "version": 2 68 | }, 69 | "project": { 70 | "files": [] 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /Hardware/Version 5/uSMU_v05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joeltroughton/uSMU/51ece4f96c4998d568ea8d883581df1624eadf7e/Hardware/Version 5/uSMU_v05.png -------------------------------------------------------------------------------- /Hardware/Version 5/uSMU_v05.pretty/CUI_PDM2-S5-D7-D.kicad_mod: -------------------------------------------------------------------------------- 1 | (module "CUI_PDM2-S5-D7-D" (layer F.Cu) (tedit 5F6A2D06) 2 | (fp_text reference "REF**" (at 0 -17.78 unlocked) (layer F.SilkS) 3 | (effects (font (size 1 1) (thickness 0.15))) 4 | (tstamp e119a10d-659f-46c7-ab73-49a12aded04a) 5 | ) 6 | (fp_text value "CUI_PDM2-S5-D7-D" (at 0 -16.28 unlocked) (layer F.Fab) 7 | (effects (font (size 1 1) (thickness 0.15))) 8 | (tstamp e334ce1b-d9a9-485c-b62b-38d8f3090776) 9 | ) 10 | (fp_text user "${REF}" (at 0 -14.78 unlocked) (layer F.Fab) 11 | (effects (font (size 1 1) (thickness 0.15))) 12 | (tstamp caa97a82-45fb-4e5a-9cff-2a910addc950) 13 | ) 14 | (fp_rect (start -2.54 -8.89) (end 17.78 1.27) (layer F.SilkS) (width 0.12) (tstamp a822036f-b2d5-4f6d-b690-c0c58ea31d5e)) 15 | (fp_rect (start -2.54 -8.89) (end 17.78 1.27) (layer F.Fab) (width 0.1) (tstamp fdf78f31-aef7-4fe3-8890-bbf1f38cd121)) 16 | (pad "1" thru_hole circle (at 0 0) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask) (tstamp 628bbb15-aa83-4585-b8d7-081895399006)) 17 | (pad "7" thru_hole circle (at 15.24 0) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask) (tstamp e9d1676a-f0c4-4795-bc6f-6c90fa9ce090)) 18 | (pad "8" thru_hole circle (at 15.24 -7.62) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask) (tstamp ab9d23e4-edfb-4686-a66f-6c33b39a4187)) 19 | (pad "9" thru_hole circle (at 12.7 -7.62) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask) (tstamp c1398771-86e9-41eb-9a53-7da4bfb8f924)) 20 | (pad "11" thru_hole circle (at 7.62 -7.62) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask) (tstamp aebe06a2-1f1d-484d-8bff-0dfe1bd84c19)) 21 | (pad "14" thru_hole circle (at 0 -7.62) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask) (tstamp 5e8366c1-8304-4055-a734-aa9aa81d05e3)) 22 | ) 23 | -------------------------------------------------------------------------------- /Hardware/Version 5/uSMU_v05.pretty/E6C0606RGBC3UDA.kicad_mod: -------------------------------------------------------------------------------- 1 | (module "E6C0606RGBC3UDA" (layer F.Cu) (tedit 5FB0D1FB) 2 | (fp_text reference "REF**" (at 0 -9.5 unlocked) (layer F.SilkS) 3 | (effects (font (size 1 1) (thickness 0.15))) 4 | (tstamp ad8b0931-8e91-4f14-ae4e-041bf4ccff28) 5 | ) 6 | (fp_text value "E6C0606RGBC3UDA" (at 0 -8 unlocked) (layer F.Fab) 7 | (effects (font (size 1 1) (thickness 0.15))) 8 | (tstamp 32fe31a5-3427-4934-a0a8-bf5d97c80eb6) 9 | ) 10 | (fp_text user "${REF}" (at 0 -6.5 unlocked) (layer F.Fab) 11 | (effects (font (size 1 1) (thickness 0.15))) 12 | (tstamp 7387e9d7-79d9-4b52-a12d-5ec3d4d372d7) 13 | ) 14 | (fp_line (start 1.340974 -0.1) (end 1.140974 -0.2) (layer F.SilkS) (width 0.12) (tstamp 1e6d0167-fe23-45e0-b2dd-1ea11cc001c2)) 15 | (fp_line (start 1.140974 -0.2) (end 1.140974 0.2) (layer F.SilkS) (width 0.12) (tstamp 49ea66ae-6aa9-4800-a35d-5db1cf3648f3)) 16 | (fp_line (start 1.140974 0.2) (end 1.340974 0.1) (layer F.SilkS) (width 0.12) (tstamp 759b16fd-8898-46d4-9f2e-0f465fe71b6d)) 17 | (fp_line (start 1.340974 0.1) (end 1.340974 -0.1) (layer F.SilkS) (width 0.12) (tstamp f981c09a-bb58-46af-b553-f06efc43962c)) 18 | (fp_rect (start -1.2 -1) (end 1.2 1) (layer F.CrtYd) (width 0.05) (tstamp 086faad4-3383-49ed-90ce-2d511a5ab31e)) 19 | (pad "1" smd rect (at -0.7 -0.5) (size 0.6 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp ca31671c-f4ce-4b88-9be4-d04e87ac1901)) 20 | (pad "2" smd rect (at 0.7 -0.5) (size 0.6 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 64ff7f0d-d980-43d4-8ca0-ad8cce368e52)) 21 | (pad "3" smd rect (at -0.7 0.5) (size 0.6 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp db8351e3-1846-40cd-aa2a-2f56cd9153f7)) 22 | (pad "4" smd rect (at 0.7 0.5) (size 0.6 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 9b04a22c-86bd-49ae-a60f-ed66c7d149a0)) 23 | ) 24 | -------------------------------------------------------------------------------- /Hardware/Version 5/uSMU_v05.pretty/Linear_FE_TSSOP20.kicad_mod: -------------------------------------------------------------------------------- 1 | (module "Linear_FE_TSSOP20" (layer F.Cu) (tedit 5F4D1EFE) 2 | (attr smd) 3 | (fp_text reference "REF**" (at -4.65 0 90) (layer F.SilkS) 4 | (effects (font (size 1 1) (thickness 0.15))) 5 | (tstamp 6d0e3b2c-a84b-439d-b0e2-cfe45ee17300) 6 | ) 7 | (fp_text value "Linear_FE_TSSOP20" (at 0 0) (layer F.Fab) 8 | (effects (font (size 1 1) (thickness 0.15))) 9 | (tstamp 542c2acf-59a5-4dad-ae43-d7e43583f69b) 10 | ) 11 | (fp_line (start -2.85 3.775) (end -3.65 2.975) (layer F.SilkS) (width 0.12) (tstamp 5cbc7fa0-149a-4245-a449-41aabaa46ef3)) 12 | (fp_line (start -3.65 -3.775) (end 3.65 -3.775) (layer F.SilkS) (width 0.12) (tstamp 9e06bc57-d0fe-42fc-92e4-e22d91eeca11)) 13 | (fp_line (start 3.65 3.775) (end -2.85 3.775) (layer F.SilkS) (width 0.12) (tstamp 9ee34376-84e2-421d-a1aa-1b3d19d65e39)) 14 | (fp_line (start -3.65 2.975) (end -3.65 -3.775) (layer F.SilkS) (width 0.12) (tstamp a8ae386e-bb59-48da-aa5b-eb27db77de72)) 15 | (fp_line (start 3.65 -3.775) (end 3.65 3.775) (layer F.SilkS) (width 0.12) (tstamp b4e8ae93-7ac9-45de-9dca-9cd71728abf3)) 16 | (fp_line (start 3.4 -3.53) (end 3.4 3.53) (layer F.CrtYd) (width 0.05) (tstamp 313e7104-72dc-41ae-bf58-4625181577da)) 17 | (fp_line (start -3.4 -3.53) (end 3.4 -3.53) (layer F.CrtYd) (width 0.05) (tstamp 4e4c1cae-80df-4c56-83a9-1fc313cc4a04)) 18 | (fp_line (start 3.4 3.53) (end -3.4 3.53) (layer F.CrtYd) (width 0.05) (tstamp b0cc9dfa-27e8-4784-8af9-bb60b711fa3e)) 19 | (fp_line (start -3.4 3.53) (end -3.4 -3.53) (layer F.CrtYd) (width 0.05) (tstamp f68db39c-920f-435b-a3ab-a25d132e08e4)) 20 | (pad "1" smd rect (at -2.925 2.75) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp d6b81ead-e51b-43ed-9a97-36b1d0aa3de5)) 21 | (pad "2" smd rect (at -2.275 2.75) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 8b2642b0-3de1-40c1-aeee-75a28613e3e9)) 22 | (pad "3" smd rect (at -1.625 2.75) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 1a22523d-abc5-43e8-a12b-e41af5fe7ab0)) 23 | (pad "4" smd rect (at -0.975 2.75) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp b2fcff3e-e1af-4b61-85ee-227b69da9a1d)) 24 | (pad "5" smd rect (at -0.325 2.75) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp a770cf3b-abef-48f7-89c1-c7e6adcd42d1)) 25 | (pad "6" smd rect (at 0.325 2.75) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 3000a9b5-8609-4118-b505-34c09d5f59c2)) 26 | (pad "7" smd rect (at 0.975 2.75) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 6fc4c97e-2142-4ed3-a728-0074922c3162)) 27 | (pad "8" smd rect (at 1.625 2.75) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 39b2b0fd-59b6-4d78-a130-a3fa88ea2659)) 28 | (pad "9" smd rect (at 2.275 2.75) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp c71544e5-e23c-4aeb-9dc9-e2625d356796)) 29 | (pad "10" smd rect (at 2.925 2.75) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 2408f5dc-43c6-4887-9eaf-89c55c72f717)) 30 | (pad "11" smd rect (at 2.925 -2.75) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 3d5b17e8-134f-430e-bb4f-207219178c7c)) 31 | (pad "12" smd rect (at 2.275 -2.75) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp db449199-168f-4c47-86d2-11178110f747)) 32 | (pad "13" smd rect (at 1.625 -2.75) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 2a8fb4b6-af4c-42ae-acd4-214ad8b004da)) 33 | (pad "14" smd rect (at 0.975 -2.75) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 6e44249c-9d49-45e1-881d-2998d40c7c09)) 34 | (pad "15" smd rect (at 0.325 -2.75) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp b52762d9-eee1-451b-81c3-4f54a49452c4)) 35 | (pad "16" smd rect (at -0.325 -2.75) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 77de9cc7-ec8a-4479-91d6-a2724d817769)) 36 | (pad "17" smd rect (at -0.975 -2.75) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 14885bd5-ae07-469d-965f-447ae344b24f)) 37 | (pad "18" smd rect (at -1.625 -2.75) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 93331423-81a3-4bf2-8c32-82f1991895a0)) 38 | (pad "19" smd rect (at -2.275 -2.75) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 06b5d544-6658-4a59-b366-83f07242a874)) 39 | (pad "20" smd rect (at -2.925 -2.75) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 14b89712-04cd-454e-a986-02c8a0cccaa3)) 40 | (pad "21" smd rect (at 0 0) (size 6 2.7) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 657b4809-e118-458a-a765-0e75994f47e8)) 41 | ) 42 | -------------------------------------------------------------------------------- /Hardware/Version 5/uSMU_v05.pretty/Molex_105450-0101.kicad_mod: -------------------------------------------------------------------------------- 1 | (module "Molex_105450-0101" (layer F.Cu) (tedit 5F9E4A05) 2 | (fp_text reference "REF**" (at 2.525 -6.35 unlocked) (layer F.SilkS) 3 | (effects (font (size 1 1) (thickness 0.15))) 4 | (tstamp f9833159-8541-4e3f-ad67-ddad5b8e5caf) 5 | ) 6 | (fp_text value "Molex_105450-0101" (at 2.525 -4.85 unlocked) (layer F.Fab) 7 | (effects (font (size 1 1) (thickness 0.15))) 8 | (tstamp 56287274-1c6d-4cb2-86c3-694499a316ac) 9 | ) 10 | (fp_text user "${REF}" (at 2.525 -3.35 unlocked) (layer F.Fab) 11 | (effects (font (size 1 1) (thickness 0.15))) 12 | (tstamp 746813e2-321e-4d6e-bf6c-83c89629c0d4) 13 | ) 14 | (fp_line (start 7.575 2.85) (end 7.57358 0.425) (layer F.SilkS) (width 0.05) (tstamp 8ce1c4f4-aab0-4d4e-9310-825bb99bb6c1)) 15 | (fp_line (start -1.37642 6.425333) (end 7.57358 6.425333) (layer Eco1.User) (width 0.05) (tstamp 3d9cd9b2-25b3-4a82-8077-7cb9ec554a74)) 16 | (fp_rect (start -1.975 -2.15) (end 8.175 6.425) (layer F.CrtYd) (width 0.05) (tstamp cb5a4c2a-dda1-4c27-88bf-f128a8a10184)) 17 | (pad "A1" smd rect (at 0.1 -1.24) (size 0.3 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp cfa6eadc-48f7-4e66-92c5-40f1190df0e4)) 18 | (pad "A2" smd rect (at 0.6 -1.24) (size 0.3 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp ce30559a-3770-4248-acb6-c3582d17b3e6)) 19 | (pad "A3" smd rect (at 1.1 -1.24) (size 0.3 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp e35f0ccc-e0a5-46d8-953e-7d3a05389cfc)) 20 | (pad "A4" smd rect (at 1.6 -1.24) (size 0.3 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 27546b27-d82e-4f57-8c19-02c13a719134)) 21 | (pad "A5" smd rect (at 2.1 -1.24) (size 0.3 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp f52c18c4-02df-42fa-a9cf-eb6c12808fbf)) 22 | (pad "A6" smd rect (at 2.6 -1.24) (size 0.3 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 1018d488-e374-4487-bdee-a5b72a20af5e)) 23 | (pad "A7" smd rect (at 3.6 -1.24) (size 0.3 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp a565458e-ec43-4e43-904a-e1c79cbc385e)) 24 | (pad "A8" smd rect (at 4.1 -1.24) (size 0.3 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 86120c77-466d-4f9c-b57f-93693db57b15)) 25 | (pad "A9" smd rect (at 4.6 -1.24) (size 0.3 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 64834d6f-b65b-443a-b3b7-475c14479dc2)) 26 | (pad "A10" smd rect (at 5.1 -1.24) (size 0.3 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 0499c59c-f8d9-4542-8d48-6a3ad7c1102e)) 27 | (pad "A11" smd rect (at 5.6 -1.24) (size 0.3 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp f1e24d22-098a-460a-9ad5-a0f30d58cbb6)) 28 | (pad "A12" smd rect (at 6.1 -1.24) (size 0.3 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 39ecef09-0297-4804-8200-d9dc00f3ab05)) 29 | (pad "B1" smd rect (at 6.2 0) (size 1 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp c8a54ba3-17c0-4433-bae9-13cae1c81f78)) 30 | (pad "B2" smd rect (at 5.35 0) (size 0.3 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 2d8002a4-66c5-427b-a06f-73b26ce78af8)) 31 | (pad "B3" smd rect (at 4.85 0) (size 0.3 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp c710060e-0b65-448d-860a-ecb4b7709886)) 32 | (pad "B4" smd rect (at 4.35 0) (size 0.3 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 77a37315-cf79-4cf0-a9ca-2a0e1c4aaf2a)) 33 | (pad "B5" smd rect (at 3.85 0) (size 0.3 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 16133732-86af-41a3-9a1a-95e8572d4051)) 34 | (pad "B6" smd rect (at 3.35 0) (size 0.3 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 60c977bc-00b1-4bdb-8bad-b75a63c806f8)) 35 | (pad "B7" smd rect (at 2.85 0) (size 0.3 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 0244ea4b-80e2-4d34-84fc-76d813f0f97d)) 36 | (pad "B8" smd rect (at 2.35 0) (size 0.3 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 1fc20832-9916-4ebc-b286-d790d25afafa)) 37 | (pad "B9" smd rect (at 1.85 0) (size 0.3 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp ed0b0464-0611-45e0-bfa9-b72dc816ff4c)) 38 | (pad "B10" smd rect (at 1.35 0) (size 0.3 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp bf61c51c-5901-4049-9804-dc0ba78d53f1)) 39 | (pad "B11" smd rect (at 0.85 0) (size 0.3 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 28ae0d11-2db8-4da0-ac8b-fbb0afd55a93)) 40 | (pad "B12" smd rect (at 0 0) (size 1 0.7) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 9a878a0b-f801-4372-b811-eec7df705934)) 41 | (pad "S1" thru_hole oval (at -1.22 -0.89) (size 1.1 2.1) (drill oval 0.6 1.6) (layers *.Cu *.Mask) (tstamp 0748fb46-113b-43ed-b931-e64903cc4ac4)) 42 | (pad "S1" thru_hole oval (at 7.42 4.47) (size 1.1 2.6) (drill oval 0.6 2.1) (layers *.Cu *.Mask) (tstamp 5aa18240-f72f-4892-a33b-a4b625d3e83e)) 43 | (pad "S1" thru_hole oval (at -1.22 4.47) (size 1.1 2.6) (drill oval 0.6 2.1) (layers *.Cu *.Mask) (tstamp 6be05a5a-87d8-466c-a337-949435653f3c)) 44 | (pad "S1" thru_hole oval (at 7.42 -0.89) (size 1.1 2.1) (drill oval 0.6 1.6) (layers *.Cu *.Mask) (tstamp 8031474d-64a1-4413-83ac-a6a1e859acd6)) 45 | (zone (net 0) (net_name "") (layers "F.Cu" "In1.Cu" "In2.Cu" "In3.Cu" "In4.Cu" "In5.Cu" "In6.Cu" "In7.Cu" "In8.Cu" "In9.Cu" "In10.Cu" "In11.Cu" "In12.Cu" "In13.Cu" "In14.Cu" "In15.Cu" "In16.Cu" "In17.Cu" "In18.Cu" "In19.Cu" "In20.Cu" "In21.Cu" "In22.Cu" "In23.Cu" "In24.Cu" "In25.Cu" "In26.Cu" "In27.Cu" "In28.Cu" "In29.Cu" "In30.Cu") (tstamp df512996-1b44-45d6-974e-3c4001c82787) (hatch edge 0.508) 46 | (connect_pads (clearance 0.508)) 47 | (min_thickness 0.254) 48 | (keepout (tracks not_allowed) (vias not_allowed) (pads not_allowed ) (copperpour not_allowed) (footprints allowed)) 49 | (fill (thermal_gap 0.508) (thermal_bridge_width 0.508)) 50 | (polygon 51 | (pts 52 | (xy 6.574046 6.252645) 53 | (xy -0.425954 6.252645) 54 | (xy -0.425954 0.602645) 55 | (xy 6.574046 0.602645) 56 | ) 57 | ) 58 | ) 59 | ) 60 | -------------------------------------------------------------------------------- /Hardware/Version 5/uSMU_v05.pretty/SOIC-20.kicad_mod: -------------------------------------------------------------------------------- 1 | (module "SOIC-20" (layer F.Cu) (tedit 0) 2 | (attr smd) 3 | (fp_text reference "REF**" (at -4.65 0 90) (layer F.SilkS) 4 | (effects (font (size 1 1) (thickness 0.15))) 5 | (tstamp 90860e07-1d24-406c-9d2f-1ce2b6dd574b) 6 | ) 7 | (fp_text value "SOIC-20" (at 0 0) (layer F.Fab) 8 | (effects (font (size 1 1) (thickness 0.15))) 9 | (tstamp 14c3a3a1-6000-4c9c-aed2-fbfb5e07f47c) 10 | ) 11 | (fp_line (start -3.65 -3.275) (end 3.65 -3.275) (layer F.SilkS) (width 0.12) (tstamp 011761dc-daa5-4a84-a071-6104f2e56a35)) 12 | (fp_line (start 3.65 3.275) (end -2.85 3.275) (layer F.SilkS) (width 0.12) (tstamp 088dad5b-d142-43c6-a40c-d77c2e665d80)) 13 | (fp_line (start -3.65 2.475) (end -3.65 -3.275) (layer F.SilkS) (width 0.12) (tstamp 95ae8970-57eb-4b8f-82b4-f0c4674ad546)) 14 | (fp_line (start -2.85 3.275) (end -3.65 2.475) (layer F.SilkS) (width 0.12) (tstamp c5a0e14e-db1f-47e9-b03a-70338a97b551)) 15 | (fp_line (start 3.65 -3.275) (end 3.65 3.275) (layer F.SilkS) (width 0.12) (tstamp edd028d7-72b9-42cc-bb0c-3e4c69a0dcb2)) 16 | (fp_line (start 3.4 3.03) (end -3.4 3.03) (layer F.CrtYd) (width 0.05) (tstamp 1824f8b8-0d55-48a1-a990-1424d5e92377)) 17 | (fp_line (start 3.4 -3.03) (end 3.4 3.03) (layer F.CrtYd) (width 0.05) (tstamp 3c6fd851-daff-4921-8305-2524deddcf01)) 18 | (fp_line (start -3.4 -3.03) (end 3.4 -3.03) (layer F.CrtYd) (width 0.05) (tstamp c31801fe-dcf7-4c93-823d-d16458e6f87c)) 19 | (fp_line (start -3.4 3.03) (end -3.4 -3.03) (layer F.CrtYd) (width 0.05) (tstamp fdfab4ff-8cc3-4b4f-9418-69ef926e2eb6)) 20 | (pad "1" smd rect (at -2.925 2.25) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 28324564-faaf-40d1-889e-44a8dd81a642)) 21 | (pad "2" smd rect (at -2.275 2.25) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 5ee82372-aaa7-49da-ac68-43c3d395ad6b)) 22 | (pad "3" smd rect (at -1.625 2.25) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 42a07f2a-7c46-4316-a100-7cd6f1d6fa54)) 23 | (pad "4" smd rect (at -0.975 2.25) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 66d1b564-df53-40fb-8f02-0c083a4b80f1)) 24 | (pad "5" smd rect (at -0.325 2.25) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 9277cc25-87bf-4b59-930b-d768a6b22406)) 25 | (pad "6" smd rect (at 0.325 2.25) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 006f3489-9d6f-495f-8934-b130a647aa14)) 26 | (pad "7" smd rect (at 0.975 2.25) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp c49104be-5cf9-4a47-bb8e-df7b85a7651b)) 27 | (pad "8" smd rect (at 1.625 2.25) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 9f5c6c7e-0426-4f96-a385-76dca7f09def)) 28 | (pad "9" smd rect (at 2.275 2.25) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 7a4931b8-8f43-431d-a353-be3581828de7)) 29 | (pad "10" smd rect (at 2.925 2.25) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp e353caa5-68a7-48bb-a575-96529445cf15)) 30 | (pad "11" smd rect (at 2.925 -2.25) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 7ef4d2ea-d3fd-4d3f-b8b1-d7f6a1d1003f)) 31 | (pad "12" smd rect (at 2.275 -2.25) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 69dd4a3d-af90-41e6-88ea-9c16afc6430d)) 32 | (pad "13" smd rect (at 1.625 -2.25) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 82425b17-9325-4fff-b01b-a5ad0bc70a91)) 33 | (pad "14" smd rect (at 0.975 -2.25) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp f5e63ffe-7749-4732-9e84-2a623e5571ff)) 34 | (pad "15" smd rect (at 0.325 -2.25) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 261fa679-6b83-4daa-adb2-a890c39a15fe)) 35 | (pad "16" smd rect (at -0.325 -2.25) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 888bb588-4289-4cdd-b547-1abf13a2eac1)) 36 | (pad "17" smd rect (at -0.975 -2.25) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp ca61c1ce-cbd2-4427-b40a-3c60d5d182f2)) 37 | (pad "18" smd rect (at -1.625 -2.25) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp 2c8a812d-493b-4a1c-9de0-9ba2a9c376d9)) 38 | (pad "19" smd rect (at -2.275 -2.25) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp b6bd96c1-6b4b-4b5c-a838-b4339c64333b)) 39 | (pad "20" smd rect (at -2.925 -2.25) (size 0.45 1.05) (layers "F.Cu" "F.Paste" "F.Mask") (tstamp be4f1d22-16ca-4cf2-8eb3-d4fee3bb6fab)) 40 | ) 41 | -------------------------------------------------------------------------------- /Hardware/Version 5/uSMU_v05_schematic.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joeltroughton/uSMU/51ece4f96c4998d568ea8d883581df1624eadf7e/Hardware/Version 5/uSMU_v05_schematic.pdf -------------------------------------------------------------------------------- /usmu_tracer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joeltroughton/uSMU/51ece4f96c4998d568ea8d883581df1624eadf7e/usmu_tracer.png --------------------------------------------------------------------------------