├── .doc ├── BOM_NS3_rev3_2.htm ├── NS3_sch_rv3_2.pdf ├── NeilScope_v3_protocol_L.pdf └── pcb_3_2.pdf ├── .gitmodules ├── Makefile ├── README.md ├── arm-gcc-link-debug.ld ├── arm-gcc-link.ld ├── cmsis ├── core_cm3.h ├── core_cmFunc.h └── core_cmInstr.h ├── cmsis_boot ├── startup │ └── startup_stm32f10x_md.c ├── stm32f10x.h ├── stm32f10x_conf.h ├── system_stm32f10x.c └── system_stm32f10x.h ├── defines.h ├── drivers ├── ad9288 │ ├── AD9288.c │ └── AD9288.h ├── analog │ ├── Analog.c │ ├── Analog.h │ ├── AutoCorrectCH.c │ └── AutoCorrectCH.h ├── eeprom │ ├── eeprom_WR_RD.c │ └── eeprom_WR_RD.h ├── epm570 │ ├── EPM570.c │ ├── EPM570.h │ ├── EPM570_GPIO.c │ ├── EPM570_GPIO.h │ ├── EPM570_RegVar.h │ ├── EPM570_Registers.c │ └── EPM570_Registers.h ├── esp_07 │ ├── ns_esp_07.c │ └── ns_esp_07.h ├── i2c │ ├── i2c.c │ ├── i2c.h │ └── i2c_gpio │ │ ├── i2c_gpio.c │ │ ├── i2c_gpio.h │ │ ├── max7320.c │ │ ├── max7320.h │ │ ├── pca9675.c │ │ └── pca9675.h ├── lcd │ ├── HX8352_Library.h │ ├── colors-5-6-5.c │ ├── colors-5-6-5.h │ ├── fonts │ │ ├── Arial16.c │ │ ├── SansSerif_9Bold.c │ │ ├── TimesNewRoman12.c │ │ └── lucidaConsole10.c │ └── libGL_HX8352_flash.a ├── rtc │ ├── RTC.c │ └── RTC.h └── systick │ ├── stm32f10x_systick.c │ ├── stm32f10x_systick.h │ ├── systick.c │ └── systick.h ├── fft ├── fft.c └── fft.h ├── host ├── Host.c ├── Host.h ├── HostCommands.c ├── HostCommands.h ├── IQueue.c ├── IQueue.h ├── ReceiveStateMachine.c └── ReceiveStateMachine.h ├── init.c ├── init.h ├── interface ├── Advanced_Menu.c ├── Advanced_Menu.h ├── ChannelsMenu.c ├── ChannelsMenu.h ├── Digit_Trig_Menu.c ├── Digit_Trig_Menu.h ├── Meas_Menu.c ├── Meas_Menu.h ├── Quick_Menu.c ├── Quick_Menu.h ├── TimeScale_Menu.c ├── TimeScale_Menu.h ├── Trig_Menu.c ├── Trig_Menu.h ├── User_Interface.c ├── User_Interface.h ├── buttons │ ├── Advanced_Menu_buttons.h │ ├── ChannelsMenuButtons.h │ ├── Digit_Trig_Menu_buttons.h │ ├── MeasButtons.h │ ├── Quick_Menu_buttons.h │ ├── Trig_Menu_buttons.h │ └── gOscModeButtons.h ├── gInterface_MENU.c └── gInterface_MENU.h ├── main.c ├── main.h ├── neil-scope.sublime-project ├── neil-scope.sublime-workspace ├── ns3_build.py ├── processing_output ├── Processing_and_output.c └── Processing_and_output.h ├── settings ├── Settings.c ├── Settings.h └── SettingsParams.h ├── stm32f10x_it.c ├── stm32f10x_it.h ├── stm_lib ├── inc │ ├── misc.h │ ├── stm32f10x_adc.h │ ├── stm32f10x_bkp.h │ ├── stm32f10x_dbgmcu.h │ ├── stm32f10x_dma.h │ ├── stm32f10x_exti.h │ ├── stm32f10x_flash.h │ ├── stm32f10x_gpio.h │ ├── stm32f10x_i2c.h │ ├── stm32f10x_pwr.h │ ├── stm32f10x_rcc.h │ ├── stm32f10x_rtc.h │ ├── stm32f10x_tim.h │ └── stm32f10x_usart.h └── src │ ├── misc.c │ ├── stm32f10x_adc.c │ ├── stm32f10x_bkp.c │ ├── stm32f10x_dbgmcu.c │ ├── stm32f10x_dma.c │ ├── stm32f10x_exti.c │ ├── stm32f10x_flash.c │ ├── stm32f10x_gpio.c │ ├── stm32f10x_i2c.c │ ├── stm32f10x_pwr.c │ ├── stm32f10x_rcc.c │ ├── stm32f10x_rtc.c │ ├── stm32f10x_tim.c │ └── stm32f10x_usart.c ├── support ├── Measurments.c ├── Measurments.h ├── Sweep.c ├── Sweep.h ├── Synchronization.c └── Synchronization.h └── syscalls └── syscalls.c /.doc/NS3_sch_rv3_2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LeftRadio/neil-scope3/cf86cfada2b9b32ed0eeb5054fca2bd611318e7f/.doc/NS3_sch_rv3_2.pdf -------------------------------------------------------------------------------- /.doc/NeilScope_v3_protocol_L.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LeftRadio/neil-scope3/cf86cfada2b9b32ed0eeb5054fca2bd611318e7f/.doc/NeilScope_v3_protocol_L.pdf -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "libs/ngl"] 2 | path = libs/ngl 3 | url = https://github.com/LeftRadio/ngl 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # What is NeilScope3 ? 2 | NeilScope3 is project of portable digital storage oscilloscope, the basic characteristics: 3 | 4 | * Bandwidth analog - 20 MHz 5 | * ADC - AD9288-100 (2ch, 8 bit, 100Msps) 6 | * Maximum sample rate - 200Msps(1 channel), 100Msps(2 channel) 7 | * Minimum sensitivity - 50 V/div 8 | * Maximum sensitivity - 10 mV/div 9 | * Inputs limiting voltage - 100V (depend used components) 10 | * Memory per channel - 256kB 11 | * Logic Analyzer mode - Yes 12 | * Logic Analyzer inputs - 8 bits 13 | * LA data compression - None / RLE (in EPM570) 14 | * LCD - HX8352A based, 8/16 bit interface 15 | * Interfaceses - USB 2.0 FullSpeed, WiFi(ESP8266) 16 | 17 | 18 | ![Dev](http://hobby-research.at.ua/NS3/photo/razr_res.png) 19 | 20 | 21 | If you need more information, please follow these links: 22 | * [Home page](http://hobby-research.at.ua/publ/razrabotki/izmerenija/neil_scope_3/4-1-0-42). 23 | * [Forum](http://hobby-research.at.ua/forum/2-1-1). 24 | 25 | 26 | ## Build 27 | 1. Install [gcc toolchain](https://launchpad.net/gcc-arm-embedded/+download). 28 | 2. Clone this repository 29 | ```bash 30 | $ git clone https://github.com/LeftRadio/neil-scope3 31 | ``` 32 | 3. init submodules - bootloader, libngl, etc. 33 | ```bash 34 | $ git submodule update --init --recursive 35 | ``` 36 | 37 | ### Makefile 38 | 1. If needed edit DEBUG/LCD/etc. defines in Makefile 39 | 2. Run build (for Windows use mingw32-make ) 40 | ```bash 41 | $ cd neil-scope3 42 | $ make 43 | ``` 44 | 45 | ### Python3 46 | 1. Install [Python3](https://www.python.org/downloads/) 47 | 2. See help 48 | ```bash 49 | $ cd neil-scope3 50 | $ python ns3_build.py - h 51 | ``` 52 | 3. Run build for you LCD hardware, for example 53 | ```bash 54 | $ python ns3_build.py --lcd-bits __LCD_16_BIT__ --lcd-bus __LCD_DIRECT__ 55 | ``` 56 | 57 | ## Download NeilScope3 Flash 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /arm-gcc-link-debug.ld: -------------------------------------------------------------------------------- 1 | OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") 2 | /* Internal Memory Map*/ 3 | MEMORY 4 | { 5 | rom (rx) : ORIGIN = 0x08000000, LENGTH = 0x00020000 6 | ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00005000 7 | } 8 | 9 | _eram = 0x20000000 + 0x00005000; 10 | SECTIONS 11 | { 12 | .text : 13 | { 14 | KEEP(*(.isr_vector)) 15 | *(.text*) 16 | 17 | KEEP(*(.init)) 18 | KEEP(*(.fini)) 19 | 20 | /* .ctors */ 21 | *crtbegin.o(.ctors) 22 | *crtbegin?.o(.ctors) 23 | *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) 24 | *(SORT(.ctors.*)) 25 | *(.ctors) 26 | 27 | /* .dtors */ 28 | *crtbegin.o(.dtors) 29 | *crtbegin?.o(.dtors) 30 | *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) 31 | *(SORT(.dtors.*)) 32 | *(.dtors) 33 | 34 | *(.rodata*) 35 | 36 | KEEP(*(.eh_fram e*)) 37 | } > rom 38 | 39 | .ARM.extab : 40 | { 41 | *(.ARM.extab* .gnu.linkonce.armextab.*) 42 | } > rom 43 | 44 | __exidx_start = .; 45 | .ARM.exidx : 46 | { 47 | *(.ARM.exidx* .gnu.linkonce.armexidx.*) 48 | } > rom 49 | __exidx_end = .; 50 | __etext = .; 51 | 52 | /* _sidata is used in coide startup code */ 53 | _sidata = __etext; 54 | 55 | .data : AT (__etext) 56 | { 57 | __data_start__ = .; 58 | 59 | /* _sdata is used in coide startup code */ 60 | _sdata = __data_start__; 61 | 62 | *(vtable) 63 | *(.data*) 64 | 65 | . = ALIGN(4); 66 | /* preinit data */ 67 | PROVIDE_HIDDEN (__preinit_array_start = .); 68 | KEEP(*(.preinit_array)) 69 | PROVIDE_HIDDEN (__preinit_array_end = .); 70 | 71 | . = ALIGN(4); 72 | /* init data */ 73 | PROVIDE_HIDDEN (__init_array_start = .); 74 | KEEP(*(SORT(.init_array.*))) 75 | KEEP(*(.init_array)) 76 | PROVIDE_HIDDEN (__init_array_end = .); 77 | 78 | . = ALIGN(4); 79 | /* finit data */ 80 | PROVIDE_HIDDEN (__fini_array_start = .); 81 | KEEP(*(SORT(.fini_array.*))) 82 | KEEP(*(.fini_array)) 83 | PROVIDE_HIDDEN (__fini_array_end = .); 84 | 85 | KEEP(*(.jcr*)) 86 | . = ALIGN(4); 87 | /* All data end */ 88 | __data_end__ = .; 89 | 90 | /* _edata is used in coide startup code */ 91 | _edata = __data_end__; 92 | } > ram 93 | 94 | .bss : 95 | { 96 | . = ALIGN(4); 97 | __bss_start__ = .; 98 | _sbss = __bss_start__; 99 | *(.bss*) 100 | *(COMMON) 101 | . = ALIGN(4); 102 | __bss_end__ = .; 103 | _ebss = __bss_end__; 104 | } > ram 105 | 106 | .heap (COPY): 107 | { 108 | __end__ = .; 109 | _end = __end__; 110 | end = __end__; 111 | *(.heap*) 112 | __HeapLimit = .; 113 | } > ram 114 | 115 | /* .stack_dummy section doesn't contains any symbols. It is only 116 | * used for linker to calculate size of stack sections, and assign 117 | * values to stack symbols later */ 118 | .co_stack (NOLOAD): 119 | { 120 | . = ALIGN(8); 121 | *(.co_stack .co_stack.*) 122 | } > ram 123 | 124 | /* Set stack top to end of ram , and stack limit move down by 125 | * size of stack_dummy section */ 126 | __StackTop = ORIGIN(ram ) + LENGTH(ram ); 127 | __StackLimit = __StackTop - SIZEOF(.co_stack); 128 | PROVIDE(__stack = __StackTop); 129 | 130 | /* Check if data + heap + stack exceeds ram limit */ 131 | ASSERT(__StackLimit >= __HeapLimit, "region ram overflowed with stack") 132 | } 133 | -------------------------------------------------------------------------------- /arm-gcc-link.ld: -------------------------------------------------------------------------------- 1 | OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") 2 | /* Internal Memory Map*/ 3 | MEMORY 4 | { 5 | rom (rx) : ORIGIN = 0x08002000, LENGTH = 0x00020000 6 | ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00005000 7 | } 8 | 9 | _eram = 0x20000000 + 0x00005000; 10 | SECTIONS 11 | { 12 | .text : 13 | { 14 | KEEP(*(.isr_vector)) 15 | *(.text*) 16 | 17 | KEEP(*(.init)) 18 | KEEP(*(.fini)) 19 | 20 | /* .ctors */ 21 | *crtbegin.o(.ctors) 22 | *crtbegin?.o(.ctors) 23 | *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) 24 | *(SORT(.ctors.*)) 25 | *(.ctors) 26 | 27 | /* .dtors */ 28 | *crtbegin.o(.dtors) 29 | *crtbegin?.o(.dtors) 30 | *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) 31 | *(SORT(.dtors.*)) 32 | *(.dtors) 33 | 34 | *(.rodata*) 35 | 36 | KEEP(*(.eh_fram e*)) 37 | } > rom 38 | 39 | .ARM.extab : 40 | { 41 | *(.ARM.extab* .gnu.linkonce.armextab.*) 42 | } > rom 43 | 44 | __exidx_start = .; 45 | .ARM.exidx : 46 | { 47 | *(.ARM.exidx* .gnu.linkonce.armexidx.*) 48 | } > rom 49 | __exidx_end = .; 50 | __etext = .; 51 | 52 | /* _sidata is used in coide startup code */ 53 | _sidata = __etext; 54 | 55 | .data : AT (__etext) 56 | { 57 | __data_start__ = .; 58 | 59 | /* _sdata is used in coide startup code */ 60 | _sdata = __data_start__; 61 | 62 | *(vtable) 63 | *(.data*) 64 | 65 | . = ALIGN(4); 66 | /* preinit data */ 67 | PROVIDE_HIDDEN (__preinit_array_start = .); 68 | KEEP(*(.preinit_array)) 69 | PROVIDE_HIDDEN (__preinit_array_end = .); 70 | 71 | . = ALIGN(4); 72 | /* init data */ 73 | PROVIDE_HIDDEN (__init_array_start = .); 74 | KEEP(*(SORT(.init_array.*))) 75 | KEEP(*(.init_array)) 76 | PROVIDE_HIDDEN (__init_array_end = .); 77 | 78 | . = ALIGN(4); 79 | /* finit data */ 80 | PROVIDE_HIDDEN (__fini_array_start = .); 81 | KEEP(*(SORT(.fini_array.*))) 82 | KEEP(*(.fini_array)) 83 | PROVIDE_HIDDEN (__fini_array_end = .); 84 | 85 | KEEP(*(.jcr*)) 86 | . = ALIGN(4); 87 | /* All data end */ 88 | __data_end__ = .; 89 | 90 | /* _edata is used in coide startup code */ 91 | _edata = __data_end__; 92 | } > ram 93 | 94 | .bss : 95 | { 96 | . = ALIGN(4); 97 | __bss_start__ = .; 98 | _sbss = __bss_start__; 99 | *(.bss*) 100 | *(COMMON) 101 | . = ALIGN(4); 102 | __bss_end__ = .; 103 | _ebss = __bss_end__; 104 | } > ram 105 | 106 | .heap (COPY): 107 | { 108 | __end__ = .; 109 | _end = __end__; 110 | end = __end__; 111 | *(.heap*) 112 | __HeapLimit = .; 113 | } > ram 114 | 115 | /* .stack_dummy section doesn't contains any symbols. It is only 116 | * used for linker to calculate size of stack sections, and assign 117 | * values to stack symbols later */ 118 | .co_stack (NOLOAD): 119 | { 120 | . = ALIGN(8); 121 | *(.co_stack .co_stack.*) 122 | } > ram 123 | 124 | /* Set stack top to end of ram , and stack limit move down by 125 | * size of stack_dummy section */ 126 | __StackTop = ORIGIN(ram ) + LENGTH(ram ); 127 | __StackLimit = __StackTop - SIZEOF(.co_stack); 128 | PROVIDE(__stack = __StackTop); 129 | 130 | /* Check if data + heap + stack exceeds ram limit */ 131 | ASSERT(__StackLimit >= __HeapLimit, "region ram overflowed with stack") 132 | } 133 | -------------------------------------------------------------------------------- /cmsis_boot/stm32f10x.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LeftRadio/neil-scope3/cf86cfada2b9b32ed0eeb5054fca2bd611318e7f/cmsis_boot/stm32f10x.h -------------------------------------------------------------------------------- /cmsis_boot/stm32f10x_conf.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file RTC/Calendar/stm32f10x_conf.h 4 | * @author MCD Application Team 5 | * @version V3.4.0 6 | * @date 10/15/2010 7 | * @brief Library configuration file. 8 | ****************************************************************************** 9 | * @copy 10 | * 11 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 12 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE 13 | * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY 14 | * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING 15 | * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE 16 | * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 17 | * 18 | *

© COPYRIGHT 2010 STMicroelectronics

19 | */ 20 | 21 | /* Define to prevent recursive inclusion -------------------------------------*/ 22 | #ifndef __STM32F10x_CONF_H 23 | #define __STM32F10x_CONF_H 24 | 25 | /* Includes ------------------------------------------------------------------*/ 26 | /* Uncomment the line below to enable peripheral header file inclusion */ 27 | #include "stm32f10x_adc.h" 28 | #include "stm32f10x_bkp.h" 29 | /* #include "stm32f10x_can.h" */ 30 | /* #include "stm32f10x_cec.h" */ 31 | /* #include "stm32f10x_crc.h" */ 32 | /* #include "stm32f10x_dac.h" */ 33 | #include "stm32f10x_dbgmcu.h" 34 | #include "stm32f10x_dma.h" 35 | #include "stm32f10x_exti.h" 36 | #include "stm32f10x_flash.h" 37 | /* #include "stm32f10x_fsmc.h" */ 38 | #include "stm32f10x_gpio.h" 39 | #include "stm32f10x_i2c.h" 40 | /* #include "stm32f10x_iwdg.h" */ 41 | #include "stm32f10x_pwr.h" 42 | #include "stm32f10x_rcc.h" 43 | #include "stm32f10x_rtc.h" 44 | /* #include "stm32f10x_sdio.h" */ 45 | /* #include "stm32f10x_spi.h" */ 46 | #include "stm32f10x_tim.h" 47 | #include "stm32f10x_usart.h" 48 | /* #include "stm32f10x_wwdg.h" */ 49 | #include "misc.h" /* High level functions for NVIC and SysTick (add-on to CMSIS functions) */ 50 | 51 | 52 | /* Exported types ------------------------------------------------------------*/ 53 | /* Exported constants --------------------------------------------------------*/ 54 | /* Uncomment the line below to expanse the "assert_param" macro in the 55 | Standard Peripheral Library drivers code */ 56 | /* #define USE_FULL_ASSERT 1 */ 57 | 58 | /* Exported macro ------------------------------------------------------------*/ 59 | #ifdef USE_FULL_ASSERT 60 | 61 | /** 62 | * @brief The assert_param macro is used for function's parameters check. 63 | * @param expr: If expr is false, it calls assert_failed function 64 | * which reports the name of the source file and the source 65 | * line number of the call that failed. 66 | * If expr is true, it returns no value. 67 | * @retval None 68 | */ 69 | #define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__)) 70 | /* Exported functions ------------------------------------------------------- */ 71 | void assert_failed(uint8_t* file, uint32_t line); 72 | #else 73 | #define assert_param(expr) ((void)0) 74 | #endif /* USE_FULL_ASSERT */ 75 | 76 | #endif /* __STM32F10x_CONF_H */ 77 | 78 | /******************* (C) COPYRIGHT 2010 STMicroelectronics *****END OF FILE****/ 79 | -------------------------------------------------------------------------------- /cmsis_boot/system_stm32f10x.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file system_stm32f10x.h 4 | * @author MCD Application Team 5 | * @version V3.5.0 6 | * @date 11-March-2011 7 | * @brief CMSIS Cortex-M3 Device Peripheral Access Layer System Header File. 8 | ****************************************************************************** 9 | * @attention 10 | * 11 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 12 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE 13 | * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY 14 | * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING 15 | * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE 16 | * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 17 | * 18 | *

© COPYRIGHT 2011 STMicroelectronics

19 | ****************************************************************************** 20 | */ 21 | 22 | /** @addtogroup CMSIS 23 | * @{ 24 | */ 25 | 26 | /** @addtogroup stm32f10x_system 27 | * @{ 28 | */ 29 | 30 | /** 31 | * @brief Define to prevent recursive inclusion 32 | */ 33 | #ifndef __SYSTEM_STM32F10X_H 34 | #define __SYSTEM_STM32F10X_H 35 | 36 | #ifdef __cplusplus 37 | extern "C" { 38 | #endif 39 | 40 | /** @addtogroup STM32F10x_System_Includes 41 | * @{ 42 | */ 43 | 44 | /** 45 | * @} 46 | */ 47 | 48 | 49 | /** @addtogroup STM32F10x_System_Exported_types 50 | * @{ 51 | */ 52 | 53 | extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */ 54 | 55 | /** 56 | * @} 57 | */ 58 | 59 | /** @addtogroup STM32F10x_System_Exported_Constants 60 | * @{ 61 | */ 62 | 63 | /** 64 | * @} 65 | */ 66 | 67 | /** @addtogroup STM32F10x_System_Exported_Macros 68 | * @{ 69 | */ 70 | 71 | /** 72 | * @} 73 | */ 74 | 75 | /** @addtogroup STM32F10x_System_Exported_Functions 76 | * @{ 77 | */ 78 | 79 | extern void SystemInit(void); 80 | extern void SystemCoreClockUpdate(void); 81 | /** 82 | * @} 83 | */ 84 | 85 | #ifdef __cplusplus 86 | } 87 | #endif 88 | 89 | #endif /*__SYSTEM_STM32F10X_H */ 90 | 91 | /** 92 | * @} 93 | */ 94 | 95 | /** 96 | * @} 97 | */ 98 | /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ 99 | -------------------------------------------------------------------------------- /defines.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file defines.h 4 | * @author Left Radio 5 | * @version 6 | * @date 7 | * @brief header 8 | ****************************************************************************** 9 | **/ 10 | 11 | /* Define to prevent recursive inclusion -------------------------------------*/ 12 | #ifndef _DEFINES__H 13 | #define _DEFINES__H 14 | 15 | /* Includes ------------------------------------------------------------------*/ 16 | /* Exported define -----------------------------------------------------------*/ 17 | #define __FIRMWARE_VERSION__ ((uint8_t)(59)) //$59 18 | #define __FIRMWARE_REVISION__ "A" //$A 19 | 20 | /* Debug defines */ 21 | #ifdef __SWD_DEBUG__ 22 | #ifndef __POWER_BUTTON_OFF__ 23 | #define __POWER_BUTTON_OFF__ 24 | #endif 25 | #endif 26 | 27 | /* Exported macro ------------------------------------------------------------*/ 28 | /* Exported typedef ----------------------------------------------------------*/ 29 | /* Exported variables --------------------------------------------------------*/ 30 | /* Exported function ---------------------------------------------------------*/ 31 | 32 | 33 | 34 | 35 | #endif /* _DEFINES__H */ 36 | /********************************************************************************************************* 37 | END FILE 38 | *********************************************************************************************************/ 39 | -------------------------------------------------------------------------------- /drivers/ad9288/AD9288.c: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file AD9288.c 4 | * @author Neil Lab :: Left Radio 5 | * @version v1.0.0 6 | * @date 7 | * @brief 8 | ****************************************************************************** 9 | **/ 10 | 11 | /* Includes ------------------------------------------------------------------*/ 12 | #include "stm32f10x.h" 13 | #include "EPM570_Registers.h" 14 | #include "AD9288.h" 15 | 16 | /* Private typedef -----------------------------------------------------------*/ 17 | /* Private define ------------------------------------------------------------*/ 18 | /* Private macro -------------------------------------------------------------*/ 19 | /* Private variables ---------------------------------------------------------*/ 20 | /* Extern function -----------------------------------------------------------*/ 21 | /* Private function prototypes -----------------------------------------------*/ 22 | /* Private functions ---------------------------------------------------------*/ 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | /********************************************************************************************************* 36 | END FILE 37 | *********************************************************************************************************/ 38 | -------------------------------------------------------------------------------- /drivers/ad9288/AD9288.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file AD9288.h 4 | * @author Neil Lab :: Left Radio 5 | * @version v1.0.0 6 | * @date 7 | * @brief header 8 | ****************************************************************************** 9 | **/ 10 | 11 | /* Define to prevent recursive inclusion -------------------------------------*/ 12 | #ifndef __AD9288_H 13 | #define __AD9288_H 14 | 15 | /* Includes ------------------------------------------------------------------*/ 16 | /* Exported define -----------------------------------------------------------*/ 17 | /* Exported macro ------------------------------------------------------------*/ 18 | /* Exported typedef ----------------------------------------------------------*/ 19 | 20 | 21 | /* Exported variables --------------------------------------------------------*/ 22 | /* Exported function ---------------------------------------------------------*/ 23 | 24 | 25 | 26 | 27 | 28 | 29 | #endif /* __AD9288_H */ 30 | /********************************************************************************************************* 31 | END FILE 32 | *********************************************************************************************************/ 33 | -------------------------------------------------------------------------------- /drivers/analog/Analog.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file Analog.h 4 | * @author LeftRadio 5 | * @version V1.0.0 6 | * @date 7 | * @brief NeilScope3 Analog control header 8 | ****************************************************************************** 9 | **/ 10 | 11 | #ifndef __ANALOG_H 12 | #define __ANALOG_H 13 | 14 | /* Includes ------------------------------------------------------------------*/ 15 | /* Exported typedef ----------------------------------------------------------*/ 16 | /* Exported define -----------------------------------------------------------*/ 17 | #define Divider_Position_MAX 11 18 | #define Divider_Position_MIN 0 19 | 20 | /* Exported variables --------------------------------------------------------*/ 21 | /* Exported function ---------------------------------------------------------*/ 22 | void Control_AD8129(uint8_t STATE); 23 | char *Change_AnalogDivider(uint8_t channel, uint8_t divider_index); 24 | uint8_t Get_AnalogDivider_Index(Channel_ID_TypeDef channel); 25 | float Get_AnalogDivider_Gain_Coeff(uint8_t divider_index); 26 | 27 | FunctionalState Get_AutoDivider_State(Channel_ID_TypeDef CH); 28 | void Set_AutoDivider_State(Channel_ID_TypeDef CH, FunctionalState NewState); 29 | FunctionalState Analog_AutodividerMain(void); 30 | 31 | void Analog_SetInput_ACDC(uint8_t Channel, Channel_AC_DC_TypeDef AC_DC_NewState); 32 | void Analog_InteliveMode(Boolean NewState); 33 | 34 | 35 | #endif /* __ANALOG_H */ 36 | /********************************************************************************************************* 37 | END FILE 38 | *********************************************************************************************************/ 39 | 40 | -------------------------------------------------------------------------------- /drivers/analog/AutoCorrectCH.h: -------------------------------------------------------------------------------- 1 | /************************************************************************************* 2 | * 3 | Description : NeilScope3 Auto Correction header 4 | Version : 1.0.0 5 | Date : 7.12.2011 6 | Author : Left Radio 7 | Comments : 8 | * 9 | **************************************************************************************/ 10 | 11 | #ifndef __AUTO_CORRECT_H 12 | #define __AUTO_CORRECT_H 13 | 14 | /* Includes ------------------------------------------------------------------*/ 15 | /* Exported typedef -----------------------------------------------------------*/ 16 | /* Exported define -----------------------------------------------------------*/ 17 | /* Exported variables --------------------------------------------------------*/ 18 | /* Private function prototypes -----------------------------------------------*/ 19 | /* Exported function --------------------------------------------------------*/ 20 | void Auto_CorrectZ_CH_A(void); 21 | void Auto_CorrectZ_CH_B(void); 22 | int8_t Auto_CorrectZ_CH(uint8_t Channel); 23 | 24 | #endif /* __AUTO_CORRECT_H */ 25 | /********************************************************************************************************* 26 | END FILE 27 | *********************************************************************************************************/ 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /drivers/eeprom/eeprom_WR_RD.c: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file eeprom_WR_RD.c 4 | * @author Left Radio 5 | * @version 1.5.6 6 | * @date 7 | * @brief NeilScope3 EEPROM Write/Read sourse 8 | ****************************************************************************** 9 | **/ 10 | 11 | /* Includes ------------------------------------------------------------------*/ 12 | #include "stm32f10x.h" 13 | #include "eeprom_WR_RD.h" 14 | #include "i2c.h" 15 | #include "Settings.h" 16 | #include "User_Interface.h" 17 | #include "systick.h" 18 | 19 | /* Private typedef -----------------------------------------------------------*/ 20 | /* Private define ------------------------------------------------------------*/ 21 | #define EEPROM_I2C_ADDRESS 0xA0 22 | 23 | /* Private macro -------------------------------------------------------------*/ 24 | /* Private variables ---------------------------------------------------------*/ 25 | /* Private function prototypes -----------------------------------------------*/ 26 | /* Private functions ---------------------------------------------------------*/ 27 | 28 | /** 29 | * @brief EEPROM read 30 | * @param None 31 | * @retval None 32 | */ 33 | void EEPROM_Read(uint8_t *prefMassive, uint16_t start_address, uint8_t numValues) 34 | { 35 | uint8_t EE_cnt; 36 | uint8_t i2c_data[2]; 37 | 38 | __disable_irq (); // запрещаем все прерывания 39 | 40 | /* Читаем данные из EEPROM */ 41 | for(EE_cnt = 0; EE_cnt < numValues; EE_cnt++) 42 | { 43 | i2c_data[0] = (uint8_t)(((start_address + EE_cnt) & 0xFF00) >> 8); 44 | i2c_data[1] = (uint8_t)((start_address + EE_cnt) & 0x00FF); 45 | 46 | I2C_Write_Bytes(i2c_data, 2, EEPROM_I2C_ADDRESS); 47 | I2C_Read_Bytes((prefMassive + EE_cnt), 1, EEPROM_I2C_ADDRESS); 48 | 49 | delay_ms(10); 50 | } 51 | 52 | __enable_irq (); 53 | } 54 | 55 | /** 56 | * @brief EEPROM write 57 | * @param None 58 | * @retval None 59 | */ 60 | void EEPROM_Write(uint8_t *prefMassive, uint16_t start_address, uint8_t numValues) 61 | { 62 | uint8_t EE_cnt; 63 | uint8_t i2c_data[3]; 64 | 65 | __disable_irq (); // запрещаем все прерывания 66 | ButtonPush = B_RESET; // костыль :( 67 | 68 | /* Пишем данные в EEPROM */ 69 | for(EE_cnt = 0; EE_cnt < numValues; EE_cnt++) 70 | { 71 | i2c_data[0] = (uint8_t)(((start_address + EE_cnt) & 0xFF00) >> 8); 72 | i2c_data[1] = (uint8_t)((start_address + EE_cnt) & 0x00FF); 73 | 74 | i2c_data[2] = *(prefMassive + EE_cnt); 75 | 76 | I2C_Write_Bytes(i2c_data, 3, EEPROM_I2C_ADDRESS); 77 | delay_ms(10); 78 | } 79 | 80 | __enable_irq (); 81 | } 82 | 83 | 84 | 85 | 86 | /********************************************************************************************************* 87 | END FILE 88 | *********************************************************************************************************/ 89 | -------------------------------------------------------------------------------- /drivers/eeprom/eeprom_WR_RD.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file eeprom_WR_RD.h 4 | * @author Left Radio 5 | * @version 1.5.6 6 | * @date 7 | * @brief NeilScope3 EEPROM Write/Read header 8 | ****************************************************************************** 9 | **/ 10 | 11 | #ifndef _EEPROM_WR_RD__H 12 | #define _EEPROM_WR_RD__H 13 | 14 | /* Includes ------------------------------------------------------------------*/ 15 | /* Exported types ------------------------------------------------------------*/ 16 | /* Exported constants --------------------------------------------------------*/ 17 | /* Exported define -----------------------------------------------------------*/ 18 | /* адреса хранения настроек в EEPROM */ 19 | #define Saved_Settings 1 20 | #define CorrectZero_A_Address (Saved_Settings + 1) 21 | #define CorrectZero_B_Address (CorrectZero_A_Address + 24) 22 | #define Position_A_Address (CorrectZero_B_Address + 24) 23 | #define Position_B_Address (Position_A_Address + 1) 24 | #define Interpolation_Address (Position_B_Address + 1) 25 | #define Sweep_Address (Interpolation_Address + 1) 26 | #define Analog_Divider_A_Address (Sweep_Address + 1) 27 | #define Analog_Divider_B_Address (Analog_Divider_A_Address + 1) 28 | #define oscSweep_Address (Analog_Divider_B_Address + 1) 29 | #define Saved_check_Sum_Addr (oscSweep_Address + 1) 30 | 31 | 32 | /* Exported variables --------------------------------------------------------*/ 33 | /* Exported macro ------------------------------------------------------------*/ 34 | /* Exported functions ------------------------------------------------------- */ 35 | void EEPROM_Read(uint8_t *prefMassive, uint16_t start_address, uint8_t numValues); 36 | void EEPROM_Write(uint8_t *prefMassive, uint16_t start_address, uint8_t numValues); 37 | 38 | 39 | 40 | #endif /* _EEPROM_WR_RD__H */ 41 | /********************************************************************************************************* 42 | END FILE 43 | *********************************************************************************************************/ 44 | -------------------------------------------------------------------------------- /drivers/epm570/EPM570.h: -------------------------------------------------------------------------------- 1 | /************************************************************************************* 2 | * 3 | Description : NeilScope3 EPM570 header 4 | Version : 1.0.0 5 | Date : 7.12.2011 6 | Author : Left Radio 7 | Comments: 8 | * 9 | **************************************************************************************/ 10 | 11 | #ifndef __EPM570_H 12 | #define __EPM570_H 13 | 14 | /* Includes ------------------------------------------------------------------*/ 15 | /* Exported typedef -----------------------------------------------------------*/ 16 | /* Exported define -----------------------------------------------------------*/ 17 | #define SRAM_READ_UP 0 18 | #define SRAM_READ_DOWN 1 19 | 20 | 21 | /* Exported variables --------------------------------------------------------*/ 22 | extern volatile FlagStatus SRAM_TimeoutState; 23 | extern volatile int32_t TimeoutCnt; 24 | extern volatile int8_t InterliveCorrectionCoeff; 25 | extern volatile uint8_t LA_Diff_MASK, LA_Cond_MASK; 26 | extern FunctionalState RLE_State; 27 | 28 | /* Exported function ---------------------------------------------------------*/ 29 | void EPM570_Signals_Init(void); 30 | EPM_ErrorStatus EPM570_Registers_Init(void); 31 | 32 | void EPM570_Set_numPoints(uint32_t points); 33 | uint32_t EPM570_Get_numPoints(void); 34 | 35 | void EPM570_Set_Decimation(uint32_t value); 36 | uint32_t EPM570_Get_Decimation(void); 37 | 38 | void EPM570_SRAM_SetWriteState(State_TypeDef NewState); 39 | State_TypeDef EPM570_SRAM_GetWriteState(void); 40 | void EPM570_SRAM_ReadState(FunctionalState NewState); 41 | void EPM570_SRAM_Shift(int32_t cnt, uint8_t UP_DOWN); 42 | void EPM570_SRAM_ReadDirection(uint8_t UP_DOWN); 43 | State_TypeDef EPM570_SRAM_Write(void); 44 | void EPM570_SRAM_Read(void); 45 | 46 | void EPM570_Update_SynchronizationMode(Channel_ID_TypeDef Sourse, SyncMode_TypeDef Mode, SyncAType_TypeDef Type); 47 | 48 | void EPM570_Set_AnalogDigital_DataInput(OSC_LA_Mode_Typedef NewMode); 49 | void EPM570_Set_LA_RLE_State(FunctionalState NewState); 50 | FunctionalState EPM570_Get_LA_RLE_State(void); 51 | 52 | void EPM570_Set_BackLight(BcklightState_Typedef bckLight_Val); 53 | uint8_t EPM570_Read_Keys(void); 54 | 55 | 56 | 57 | #endif /* __EPM570_H */ 58 | /********************************************************************************************************* 59 | END FILE 60 | *********************************************************************************************************/ 61 | -------------------------------------------------------------------------------- /drivers/epm570/EPM570_GPIO.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LeftRadio/neil-scope3/cf86cfada2b9b32ed0eeb5054fca2bd611318e7f/drivers/epm570/EPM570_GPIO.c -------------------------------------------------------------------------------- /drivers/epm570/EPM570_GPIO.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file EPM570_GPIO.h 4 | * @author Neil Lab :: Left Radio 5 | * @version v1.0.0 6 | * @date 7 | * @brief header 8 | ****************************************************************************** 9 | **/ 10 | 11 | /* Define to prevent recursive inclusion -------------------------------------*/ 12 | #ifndef __EPM570_GPIO_H 13 | #define __EPM570_GPIO_H 14 | 15 | /* Includes ------------------------------------------------------------------*/ 16 | #include "stm32f10x_gpio.h" 17 | 18 | /* Exported define -----------------------------------------------------------*/ 19 | #define EPM570_WR_set GPIOB->BSRR=GPIO_BSRR_BS1 20 | #define EPM570_WR_clr GPIOB->BSRR=GPIO_BSRR_BR1 21 | #define EPM570_RD_set GPIOC->BSRR=GPIO_BSRR_BS7 22 | #define EPM570_RD_clr GPIOC->BSRR=GPIO_BSRR_BR7 23 | #define EPM570_RS_set GPIOC->BSRR=GPIO_BSRR_BS6 24 | #define EPM570_RS_clr GPIOC->BSRR=GPIO_BSRR_BR6 25 | 26 | #define GPIO_Pin_7_0 (uint16_t)0x00FF 27 | #define GPIO_Pin_8_15 (uint16_t)0xFF00 28 | 29 | #define EPM570_portMask (uint16_t)0x00FF 30 | #define SetEPM570Reg(address) { GPIOB->ODR = (GPIOB->IDR & EPM570_portMask) | (address << 8); } 31 | 32 | #define EPM570_Write_Ready (GPIOC->IDR & GPIO_Pin_5) 33 | 34 | 35 | /* Exported macro ------------------------------------------------------------*/ 36 | /* Exported typedef ----------------------------------------------------------*/ 37 | /* Exported variables --------------------------------------------------------*/ 38 | /* Exported function ---------------------------------------------------------*/ 39 | void EPM570_GPIO_Configuration(void); 40 | 41 | void EPM570_GPIO_RS(FlagStatus NewState); 42 | void EPM570_GPIO_WR(FlagStatus NewState); 43 | void EPM570_GPIO_RD(FlagStatus NewState); 44 | void EPM570_GPIO_ResetCntrlSignals(void); 45 | void EPM570_GPIO_SetPortState(GPIOMode_TypeDef GPIO_Mode); 46 | 47 | void EPM570_GPIO_SetPortData(uint16_t data); 48 | void EPM570_GPIO_WriteStrobe(void); 49 | void EPM570_GPIO_AddrWriteStrobe(void); 50 | 51 | 52 | 53 | #endif /* __EPM570_GPIO_H */ 54 | /********************************************************************************************************* 55 | END FILE 56 | *********************************************************************************************************/ 57 | -------------------------------------------------------------------------------- /drivers/epm570/EPM570_RegVar.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file EPM570_RegVar.h 4 | * @author Neil Lab :: Left Radio 5 | * @version v1.0.0 6 | * @date 7 | * @brief header 8 | ****************************************************************************** 9 | **/ 10 | 11 | /* Define to prevent recursive inclusion -------------------------------------*/ 12 | #ifndef __EPM570_REG_VAR_H 13 | #define __EPM570_REG_VAR_H 14 | 15 | /* Includes ------------------------------------------------------------------*/ 16 | /* Exported define -----------------------------------------------------------*/ 17 | /* Exported macro ------------------------------------------------------------*/ 18 | /* Exported typedef ----------------------------------------------------------*/ 19 | /* typedef for registers */ 20 | typedef struct 21 | { 22 | uint8_t data; 23 | const uint16_t address; 24 | 25 | } EPM570_HWRegisterSingle_TypeDef; 26 | 27 | typedef struct 28 | { 29 | union { 30 | uint8_t data[4]; 31 | uint32_t u32_data; 32 | }; 33 | const uint16_t address[4]; 34 | const uint8_t num_bytes; 35 | 36 | } EPM570_HWRegisters_TypeDef; 37 | 38 | 39 | /* typedefs for controls (work, sync and other) registers */ 40 | typedef struct 41 | { 42 | union { 43 | struct 44 | { 45 | unsigned char ADC_SyncSourse_RLE_Sel : 1; 46 | unsigned char GlobalSync_ON : 1; 47 | unsigned char ADC_SyncWIN : 1; 48 | unsigned char ReadCounterEN : 1; 49 | unsigned char Read_SRAM_UP : 1; 50 | unsigned char OSC_LA_DATA : 1; 51 | unsigned char AND_OR_LA_TRIGG : 1; 52 | unsigned char OSC_LA_TRIGG : 1; 53 | } bit; 54 | uint8_t bits; 55 | }; 56 | const uint16_t address; 57 | 58 | } EPM570_HWIntCnf_Register_TypeDef; 59 | 60 | /* typedefs for controls (work, sync and other) registers */ 61 | typedef struct 62 | { 63 | union { 64 | struct { 65 | unsigned char ReadCounter_sLoad : 1; 66 | unsigned char INTRL_0_1 : 2; 67 | unsigned char bit3_7 : 5; 68 | } bit; 69 | uint8_t bits; 70 | }; 71 | const uint16_t address; 72 | 73 | } EPM570_HWIntCnf_B_Register_TypeDef; 74 | 75 | /* typedefs for external pin controls register */ 76 | typedef struct 77 | { 78 | union { 79 | struct { 80 | unsigned char S1 : 1; 81 | unsigned char S2 : 1; 82 | unsigned char O_C_A : 1; 83 | unsigned char O_C_B : 1; 84 | unsigned char bit4_7 : 4; 85 | } bit; 86 | uint8_t bits; 87 | }; 88 | const uint16_t address; 89 | 90 | } EPM570_HWIntEX_0_Register_TypeDef; 91 | 92 | /* typedefs for external pin controls register */ 93 | typedef struct 94 | { 95 | union { 96 | struct { 97 | unsigned char A0 : 1; 98 | unsigned char A1 : 1; 99 | unsigned char A2 : 1; 100 | unsigned char B0 : 1; 101 | unsigned char B1 : 1; 102 | unsigned char B2 : 1; 103 | unsigned char OSC_EN : 1; 104 | unsigned char BckLght : 1; 105 | } bit; 106 | uint8_t bits; 107 | }; 108 | const uint16_t address; 109 | 110 | } EPM570_HWIntEX_1_Register_TypeDef; 111 | 112 | /* typedefs for write control register */ 113 | typedef struct 114 | { 115 | union { 116 | struct { 117 | unsigned char Start_Write : 1; 118 | unsigned char Trigger_EN : 1; 119 | unsigned char bit2_7 : 6; 120 | } bit; 121 | uint8_t bits; 122 | }; 123 | const uint16_t address; 124 | 125 | } EPM570_HWWriteCntrl_Register_TypeDef; 126 | 127 | 128 | 129 | /* Exported variables --------------------------------------------------------*/ 130 | /* Exported function ---------------------------------------------------------*/ 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | #endif /* __EPM570_REG_VAR_H */ 140 | /********************************************************************************************************* 141 | END FILE 142 | *********************************************************************************************************/ 143 | -------------------------------------------------------------------------------- /drivers/epm570/EPM570_Registers.c: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file EPM570_Registers.c 4 | * @author Neil Lab :: Left Radio 5 | * @version v1.5.0 6 | * @date 25.04.2015 7 | * @brief sourse 8 | ****************************************************************************** 9 | **/ 10 | 11 | /* Includes ------------------------------------------------------------------*/ 12 | #include "stm32f10x.h" 13 | #include "EPM570_GPIO.h" 14 | #include "EPM570_Registers.h" 15 | #include "init.h" 16 | 17 | /* Private typedef -----------------------------------------------------------*/ 18 | /* Private define ------------------------------------------------------------*/ 19 | /* Private macro -------------------------------------------------------------*/ 20 | /* Private variables ---------------------------------------------------------*/ 21 | /* Exported variables --------------------------------------------------------*/ 22 | 23 | /* Var = { reg data bits union, reg addr } */ 24 | volatile EPM570_HWRegisterSingle_TypeDef EPM570_Register_TRG_UP = { 0x00, 0x03 }; 25 | volatile EPM570_HWRegisterSingle_TypeDef EPM570_Register_TRG_DWN = { 0x00, 0x04 }; 26 | volatile EPM570_HWRegisterSingle_TypeDef EPM570_Register_LA_CND_DAT = { 0x00, 0x03 }; 27 | volatile EPM570_HWRegisterSingle_TypeDef EPM570_Register_LA_DIFF_DAT = { 0x00, 0x04 }; 28 | volatile EPM570_HWRegisterSingle_TypeDef EPM570_Register_LA_CND_MSK = { 0x00, 0x11 }; 29 | volatile EPM570_HWRegisterSingle_TypeDef EPM570_Register_LA_DIFF_MSK = { 0x00, 0x12 }; 30 | volatile EPM570_HWRegisterSingle_TypeDef EPM570_Register_InKeys = { 0x00, 0x09 }; 31 | 32 | /* Var = { reg union u32 w data[4], reg addr[4], num_bytes } */ 33 | volatile EPM570_HWRegisters_TypeDef EPM570_Register_Decim = { {{0x00, 0x00, 0x00, 0x00}}, {0x00, 0x01, 0x02, 0x00}, 3 }; 34 | volatile EPM570_HWRegisters_TypeDef EPM570_Register_WIN = { {{0x00, 0x00, 0x00, 0x00}}, {0x05, 0x06, 0x07, 0x00}, 3 }; 35 | 36 | /* Var = { reg data bits union, reg addr } */ 37 | volatile EPM570_HWIntCnf_Register_TypeDef EPM570_Register_cnfPin = { {{0, 0, 0, 0, 0, 0, 0, 0}}, 0x08 }; 38 | volatile EPM570_HWIntCnf_B_Register_TypeDef EPM570_Register_cnfPin_B = { {{0, 0, 0}}, 0x10 }; 39 | volatile EPM570_HWIntEX_0_Register_TypeDef EPM570_Register_extPin0 = { {{0, 0, 0, 0, 0}}, 0x0B }; 40 | volatile EPM570_HWIntEX_1_Register_TypeDef EPM570_Register_extPin_1 = { {{0, 0, 0, 0, 0, 0, 0, 1}}, 0x0C }; 41 | volatile EPM570_HWWriteCntrl_Register_TypeDef EPM570_Register_WriteControl = { {{0, 0, 0}}, 0x0D }; 42 | 43 | 44 | volatile FlagStatus EPM570_Register_Process = RESET; 45 | 46 | 47 | 48 | /* Private function prototypes -----------------------------------------------*/ 49 | /* Private function ---------------------------------------------------------*/ 50 | 51 | /** 52 | * @brief ResetEPM570_cntrlSignals 53 | * reset to 0 all control signals 54 | * @param None 55 | * @retval None 56 | */ 57 | __inline static void EPM570_WriteReg_Address(uint8_t address) 58 | { 59 | EPM570_GPIO_SetPortData(address); 60 | EPM570_GPIO_AddrWriteStrobe(); 61 | } 62 | 63 | 64 | /** 65 | * @brief EPM570_WriteReg_Data 66 | * write data to epm570 register 67 | * @param None 68 | * @retval None 69 | */ 70 | __inline static void EPM570_WriteReg_Data(uint8_t data) 71 | { 72 | EPM570_GPIO_SetPortData(data); 73 | EPM570_GPIO_WriteStrobe(); 74 | } 75 | 76 | 77 | /** 78 | * @brief EPM570_ReadReg_Data 79 | * read data from epm570 register 80 | * @param None 81 | * @retval None 82 | */ 83 | __inline static uint8_t EPM570_ReadReg_Data(void) 84 | { 85 | uint8_t Register_Data; 86 | 87 | EPM570_GPIO_RD(SET); 88 | EPM570_GPIO_RD(SET); 89 | // delay_us(100); 90 | Register_Data = GPIOB->IDR >> 8; 91 | EPM570_GPIO_RD(RESET); 92 | 93 | return Register_Data; 94 | } 95 | 96 | 97 | 98 | /** 99 | * @brief EPM570_Write_Register 100 | * 101 | * @param None 102 | * @retval None 103 | */ 104 | void EPM570_Registers_WriteReg(uint8_t address, uint8_t data) 105 | { 106 | EPM570_Register_Process = 1; 107 | 108 | EPM570_GPIO_ResetCntrlSignals(); 109 | EPM570_GPIO_SetPortState(GPIO_Mode_Out_PP); 110 | 111 | EPM570_WriteReg_Address(address); 112 | EPM570_WriteReg_Data(data); 113 | 114 | EPM570_Register_Process = 0; 115 | } 116 | 117 | 118 | /** 119 | * @brief EPM570_Read_Register 120 | * @param None 121 | * @retval None 122 | */ 123 | uint8_t EPM570_Registers_ReadReg(uint8_t address) 124 | { 125 | uint8_t read_data = 0x00; 126 | 127 | EPM570_Register_Process = 1; 128 | 129 | EPM570_GPIO_ResetCntrlSignals(); 130 | EPM570_GPIO_SetPortState(GPIO_Mode_Out_PP); 131 | 132 | /* Write reading register address */ 133 | EPM570_WriteReg_Address(address); 134 | 135 | /* Reconfig port to IN, read and return register data */ 136 | EPM570_GPIO_SetPortState(GPIO_Mode_IPU); 137 | read_data = EPM570_ReadReg_Data(); 138 | 139 | EPM570_Register_Process = 0; 140 | 141 | return read_data; 142 | } 143 | 144 | 145 | /** 146 | * @brief EPM570_Write_MultByteRegister 147 | * @param None 148 | * @retval None 149 | */ 150 | void EPM570_Registers_WriteMultByte(volatile EPM570_HWRegisters_TypeDef* Register) 151 | { 152 | uint8_t i; 153 | 154 | for(i = 0; i < Register->num_bytes; i++) 155 | { 156 | EPM570_Registers_WriteReg(Register->address[i], Register->data[i]); 157 | } 158 | } 159 | 160 | 161 | /** 162 | * @brief EPM570_Read_MultByteRegister 163 | * @param None 164 | * @retval None 165 | */ 166 | uint32_t EPM570_Registers_ReadMultByte(volatile EPM570_HWRegisters_TypeDef* Register) 167 | { 168 | uint8_t i; 169 | 170 | for(i = 0; i < Register->num_bytes; i++) 171 | { 172 | Register->data[i] = EPM570_Registers_ReadReg(Register->address[i]); 173 | } 174 | 175 | return Register->u32_data; 176 | } 177 | 178 | 179 | /** 180 | * @brief EPM570_Register_Operate_Status 181 | * if EPM570 busy return SET 182 | * @param None 183 | * @retval None 184 | */ 185 | uint8_t EPM570_Registers_GetOperateStatus(void) 186 | { 187 | return EPM570_Register_Process; 188 | } 189 | 190 | 191 | 192 | 193 | 194 | /********************************************************************************************************* 195 | END FILE 196 | *********************************************************************************************************/ 197 | -------------------------------------------------------------------------------- /drivers/epm570/EPM570_Registers.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file EPM570_Registers.h 4 | * @author Neil Lab :: Left Radio 5 | * @version v1.5.0 6 | * @date 26.04.2015 7 | * @brief NeilScope3 EPM570 Registers header 8 | ****************************************************************************** 9 | **/ 10 | 11 | #ifndef __EPM570_REGISTERS_H 12 | #define __EPM570_REGISTERS_H 13 | 14 | /* Includes ------------------------------------------------------------------*/ 15 | #include "stm32f10x_gpio.h" 16 | #include "EPM570_RegVar.h" 17 | 18 | /* Exported typedef -----------------------------------------------------------*/ 19 | /* Exported define -----------------------------------------------------------*/ 20 | #define SRAM_DATA (uint8_t)15 21 | 22 | /* Exported variables --------------------------------------------------------*/ 23 | /** All EPM570 registers **/ 24 | extern volatile EPM570_HWRegisters_TypeDef EPM570_Register_Decim; 25 | extern volatile EPM570_HWRegisters_TypeDef EPM570_Register_WIN; 26 | extern volatile EPM570_HWRegisterSingle_TypeDef EPM570_Register_TRG_UP; 27 | extern volatile EPM570_HWRegisterSingle_TypeDef EPM570_Register_TRG_DWN; 28 | extern volatile EPM570_HWRegisterSingle_TypeDef EPM570_Register_LA_CND_DAT; 29 | extern volatile EPM570_HWRegisterSingle_TypeDef EPM570_Register_LA_DIFF_DAT; 30 | extern volatile EPM570_HWIntCnf_Register_TypeDef EPM570_Register_cnfPin; 31 | extern volatile EPM570_HWRegisterSingle_TypeDef EPM570_Register_InKeys; 32 | extern volatile EPM570_HWIntCnf_B_Register_TypeDef EPM570_Register_cnfPin_B; 33 | extern volatile EPM570_HWIntEX_0_Register_TypeDef EPM570_Register_extPin0; 34 | extern volatile EPM570_HWIntEX_1_Register_TypeDef EPM570_Register_extPin_1; 35 | extern volatile EPM570_HWWriteCntrl_Register_TypeDef EPM570_Register_WriteControl; 36 | extern volatile EPM570_HWRegisterSingle_TypeDef EPM570_Register_LA_CND_MSK; 37 | extern volatile EPM570_HWRegisterSingle_TypeDef EPM570_Register_LA_DIFF_MSK; 38 | extern volatile FlagStatus EPM570_Register_Process; 39 | 40 | 41 | /* Exported function --------------------------------------------------------*/ 42 | void EPM570_Registers_WriteReg(uint8_t address, uint8_t data); 43 | uint8_t EPM570_Registers_ReadReg(uint8_t address); 44 | void EPM570_Registers_WriteMultByte(volatile EPM570_HWRegisters_TypeDef* Register); 45 | uint32_t EPM570_Registers_ReadMultByte(volatile EPM570_HWRegisters_TypeDef* Register); 46 | uint8_t EPM570_Registers_GetOperateStatus(void); 47 | 48 | 49 | 50 | 51 | 52 | #endif /* __EPM570_REGISTERS_H */ 53 | /********************************************************************************************************* 54 | END FILE 55 | *********************************************************************************************************/ 56 | -------------------------------------------------------------------------------- /drivers/esp_07/ns_esp_07.c: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file ns_esp_07.c 4 | * @author Left Radio 5 | * @version 1.0.0 6 | * @date 7 | * @brief NeilScope3 esp07 module comunication sourse 8 | ****************************************************************************** 9 | **/ 10 | 11 | /* Includes ------------------------------------------------------------------*/ 12 | #include "stm32f10x.h" 13 | #include "defines.h" 14 | #include "ns_esp_07.h" 15 | #include "systick.h" 16 | 17 | /* Private typedef -----------------------------------------------------------*/ 18 | /* Private define ------------------------------------------------------------*/ 19 | /* Private macro -------------------------------------------------------------*/ 20 | /* Private variables ---------------------------------------------------------*/ 21 | 22 | /* Extern function -----------------------------------------------------------*/ 23 | /* Private function prototypes -----------------------------------------------*/ 24 | /* Private Functions --------------------------------------------------------*/ 25 | 26 | /** 27 | * @brief main cycle 28 | * @param None 29 | * @retval None 30 | */ 31 | int ESP_Configuration(void) 32 | { 33 | return 0; 34 | } 35 | 36 | 37 | /** 38 | * @brief ESP_State_Host_MCU 39 | * @param None 40 | * @retval None 41 | */ 42 | int ESP_State_Host_MCU(void) 43 | { 44 | /* Boot OFF*/ 45 | I2CIO_Write_Pin(GPIO_Pin_0, Bit_SET); 46 | 47 | /* Revert ESP USART RX/TX, ESP_TX->MCU_RX, ESP_RX<-MCU_TX */ 48 | I2CIO_Write_Pin(GPIO_Pin_2, Bit_SET); 49 | 50 | delay_ms(100); 51 | 52 | /* Power ON */ 53 | I2CIO_Write_Pin(GPIO_Pin_1, Bit_SET); 54 | 55 | return 0; 56 | } 57 | 58 | /** 59 | * @brief ESP_State_Interconnect_CP2102 60 | * @param None 61 | * @retval None 62 | */ 63 | int ESP_State_Interconnect_CP2102(void) 64 | { 65 | /* Boot OFF*/ 66 | I2CIO_Write_Pin(GPIO_Pin_0, Bit_SET); 67 | 68 | /* ESP USART RX/TX, ESP_TX->CP2102_RX, ESP_RX<-CP2102_TX */ 69 | I2CIO_Write_Pin(GPIO_Pin_2, Bit_RESET); 70 | 71 | delay_ms(100); 72 | 73 | /* Power ON */ 74 | I2CIO_Write_Pin(GPIO_Pin_1, Bit_SET); 75 | 76 | return 0; 77 | } 78 | 79 | /** 80 | * @brief ESP_State_Bootloader 81 | * @param None 82 | * @retval None 83 | */ 84 | int ESP_State_Bootloader(void) 85 | { 86 | /* Boot ON */ 87 | I2CIO_Write_Pin(GPIO_Pin_0, Bit_RESET); 88 | 89 | /* ESP USART RX/TX, ESP_TX->CP2102_RX, ESP_RX<-CP2102_TX */ 90 | I2CIO_Write_Pin(GPIO_Pin_2, Bit_RESET); 91 | 92 | delay_ms(100); 93 | 94 | /* Power ON */ 95 | I2CIO_Write_Pin(GPIO_Pin_1, Bit_SET); 96 | 97 | return 0; 98 | } 99 | 100 | 101 | /** 102 | * @brief ESP_State_OFF 103 | * @param None 104 | * @retval None 105 | */ 106 | int ESP_State_OFF(void) 107 | { 108 | /* Power OFF */ 109 | I2CIO_Write_Pin(GPIO_Pin_1, Bit_RESET); 110 | 111 | /* Boot OFF */ 112 | I2CIO_Write_Pin(GPIO_Pin_0, Bit_SET); 113 | 114 | /* ESP USART RX/TX, ESP_TX->CP2102_RX, ESP_RX<-CP2102_TX */ 115 | I2CIO_Write_Pin(GPIO_Pin_2, Bit_RESET); 116 | 117 | return 0; 118 | } 119 | 120 | 121 | -------------------------------------------------------------------------------- /drivers/esp_07/ns_esp_07.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file ns_esp_07.h 4 | * @author Left Radio 5 | * @version 1.0.0 6 | * @date 7 | * @brief header 8 | ****************************************************************************** 9 | **/ 10 | 11 | /* Define to prevent recursive inclusion -------------------------------------*/ 12 | #ifndef __NS_ESP_07__H 13 | #define __NS_ESP_07__H 14 | 15 | /* Includes ------------------------------------------------------------------*/ 16 | #include "main.h" 17 | #include "i2c_gpio.h" 18 | 19 | /* Exported define -----------------------------------------------------------*/ 20 | /* Exported macro ------------------------------------------------------------*/ 21 | /* Exported typedef ----------------------------------------------------------*/ 22 | /* Exported variables --------------------------------------------------------*/ 23 | /* Exported function ---------------------------------------------------------*/ 24 | 25 | int ESP_State_Host_MCU(void); 26 | int ESP_State_Interconnect_CP2102(void); 27 | int ESP_State_Bootloader(void); 28 | int ESP_State_OFF(void); 29 | 30 | 31 | #endif /* __NS_ESP_07__H */ 32 | /********************************************************************************************************* 33 | END FILE 34 | *********************************************************************************************************/ 35 | -------------------------------------------------------------------------------- /drivers/i2c/i2c.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LeftRadio/neil-scope3/cf86cfada2b9b32ed0eeb5054fca2bd611318e7f/drivers/i2c/i2c.c -------------------------------------------------------------------------------- /drivers/i2c/i2c.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file i2c.h 4 | * @author Left Radio 5 | * @version 1.0.0 6 | * @date 7 | * @brief NeilScope3 i2c Write/Read header 8 | ****************************************************************************** 9 | **/ 10 | 11 | #ifndef _NI2C__H 12 | #define _NI2C__H 13 | 14 | /* Includes ------------------------------------------------------------------*/ 15 | /* Exported types ------------------------------------------------------------*/ 16 | /* Exported constants --------------------------------------------------------*/ 17 | /* Exported define -----------------------------------------------------------*/ 18 | /* Exported variables --------------------------------------------------------*/ 19 | /* Exported macro ------------------------------------------------------------*/ 20 | /* Exported functions ------------------------------------------------------- */ 21 | int8_t I2C_Write_Bytes(uint8_t *Data, uint8_t len, uint8_t i2c_address); 22 | int8_t I2C_Read_Bytes(uint8_t *Data, uint8_t len, uint8_t i2c_address); 23 | 24 | 25 | 26 | #endif /* _NI2C__H */ 27 | /********************************************************************************************************* 28 | END FILE 29 | *********************************************************************************************************/ 30 | -------------------------------------------------------------------------------- /drivers/i2c/i2c_gpio/i2c_gpio.c: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file i2c_gpio.c 4 | * @author Left Radio 5 | * @version 1.0.0 6 | * @date 7 | * @brief NeilScope3 i2c_gpio sourse 8 | ****************************************************************************** 9 | **/ 10 | 11 | /* Includes ------------------------------------------------------------------*/ 12 | #include "stm32f10x.h" 13 | #include "i2c_gpio.h" 14 | #include "pca9675.h" 15 | #include "max7320.h" 16 | #include "systick.h" 17 | 18 | /* Private typedef -----------------------------------------------------------*/ 19 | /* Private define ------------------------------------------------------------*/ 20 | /* Private macro -------------------------------------------------------------*/ 21 | /* Private variables ---------------------------------------------------------*/ 22 | NS_I2C_GPIO_TypeDef* ns_i2c_gpios[] = { 23 | (void*)0, 24 | &pca9675, 25 | &max7320 26 | }; 27 | 28 | NS_I2C_GPIO_TypeDef *ns_i2c_gpio; 29 | 30 | /* Extern function -----------------------------------------------------------*/ 31 | /* Private function prototypes -----------------------------------------------*/ 32 | /* Private Functions --------------------------------------------------------*/ 33 | 34 | /** 35 | * @brief I2CIO_Write_Pin 36 | * @param None 37 | * @retval None 38 | */ 39 | int8_t I2CIO_Configuration(NS_I2C_GPIO_TypeDef* gpio) 40 | { 41 | uint8_t data; 42 | int8_t status = 0; 43 | 44 | if(gpio != (void*)0) { 45 | ns_i2c_gpio = gpio; 46 | ns_i2c_gpio->Configuration(); 47 | 48 | I2CIO_Read_Port(&data); 49 | 50 | if(data == 0) status = 0; 51 | else status = -1; 52 | } 53 | return status; 54 | } 55 | 56 | /** 57 | * @brief I2CIO_Write_Pin 58 | * @param None 59 | * @retval None 60 | */ 61 | void I2CIO_Write_Pin(uint32_t pin, uint8_t state) 62 | { 63 | if(ns_i2c_gpio != (void*)0) { 64 | __disable_irq (); 65 | ButtonPush = B_RESET; 66 | 67 | ns_i2c_gpio->Write_Pin(pin, state); 68 | delay_ms(10); 69 | 70 | __enable_irq (); 71 | } 72 | } 73 | 74 | /** 75 | * @brief I2CIO_Write_Port 76 | * @param None 77 | * @retval None 78 | */ 79 | void I2CIO_Write_Port(uint32_t val) 80 | { 81 | if(ns_i2c_gpio != (void*)0) { 82 | __disable_irq (); 83 | ButtonPush = B_RESET; 84 | 85 | ns_i2c_gpio->Write_Port(val); 86 | delay_ms(10); 87 | 88 | __enable_irq (); 89 | } 90 | } 91 | 92 | /** 93 | * @brief I2CIO_Write_Pin 94 | * @param None 95 | * @retval None 96 | */ 97 | int8_t I2CIO_Read_Pin(uint32_t pin) 98 | { 99 | int8_t state; 100 | 101 | if(ns_i2c_gpio != (void*)0) { 102 | __disable_irq (); 103 | ButtonPush = B_RESET; 104 | 105 | state = ns_i2c_gpio->Read_Pin(pin); 106 | delay_ms(10); 107 | 108 | __enable_irq (); 109 | 110 | return state; 111 | } 112 | 113 | return -1; 114 | } 115 | 116 | /** 117 | * @brief I2CIO_Read_Port 118 | * @param None 119 | * @retval None 120 | */ 121 | void I2CIO_Read_Port(void* data) 122 | { 123 | if(ns_i2c_gpio != (void*)0) { 124 | __disable_irq (); 125 | ButtonPush = B_RESET; 126 | 127 | ns_i2c_gpio->Read_Port(data); 128 | delay_ms(10); 129 | 130 | __enable_irq (); 131 | } 132 | } 133 | -------------------------------------------------------------------------------- /drivers/i2c/i2c_gpio/i2c_gpio.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file i2c_gpio.h 4 | * @author Left Radio 5 | * @version 1.0.0 6 | * @date 7 | * @brief header 8 | ****************************************************************************** 9 | **/ 10 | 11 | /* Define to prevent recursive inclusion -------------------------------------*/ 12 | #ifndef __NS_I2C_GPIO__H 13 | #define __NS_I2C_GPIO__H 14 | 15 | /* Includes ------------------------------------------------------------------*/ 16 | #include "main.h" 17 | 18 | /* Exported define -----------------------------------------------------------*/ 19 | /* Exported macro ------------------------------------------------------------*/ 20 | /* Exported typedef ----------------------------------------------------------*/ 21 | /* */ 22 | typedef struct { 23 | uint8_t i2c_address; 24 | int8_t (*Configuration)(void); 25 | int8_t (*Write_Pin)(uint32_t pin, uint8_t state); 26 | int8_t (*Write_Port)(uint32_t val); 27 | int8_t (*Read_Pin)(uint32_t pin); 28 | int8_t (*Read_Port)(void* data); 29 | } NS_I2C_GPIO_TypeDef; 30 | 31 | /* Exported variables --------------------------------------------------------*/ 32 | //extern NS_I2C_GPIO_TypeDef pca9675; 33 | //extern NS_I2C_GPIO_TypeDef max7320; 34 | 35 | extern NS_I2C_GPIO_TypeDef* ns_i2c_gpios[]; 36 | 37 | /* Exported function ---------------------------------------------------------*/ 38 | int8_t I2CIO_Configuration(NS_I2C_GPIO_TypeDef* gpio); 39 | void I2CIO_Write_Pin(uint32_t pin, uint8_t state); 40 | void I2CIO_Write_Port(uint32_t val); 41 | int8_t I2CIO_Read_Pin(uint32_t pin); 42 | void I2CIO_Read_Port(void* data); 43 | 44 | 45 | 46 | #endif /* __NS_I2C_GPIO__H */ 47 | /********************************************************************************************************* 48 | END FILE 49 | *********************************************************************************************************/ 50 | -------------------------------------------------------------------------------- /drivers/i2c/i2c_gpio/max7320.c: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file i2c_gpio.c 4 | * @author Left Radio 5 | * @version 1.0.0 6 | * @date 7 | * @brief NeilScope3 i2c_gpio sourse 8 | ****************************************************************************** 9 | **/ 10 | 11 | /* Includes ------------------------------------------------------------------*/ 12 | #include "stm32f10x.h" 13 | #include "i2c.h" 14 | #include "i2c_gpio.h" 15 | #include "max7320.h" 16 | 17 | /* Private typedef -----------------------------------------------------------*/ 18 | /* Private define ------------------------------------------------------------*/ 19 | /* Private macro -------------------------------------------------------------*/ 20 | /* Private function prototypes -----------------------------------------------*/ 21 | static int8_t configuration(void); 22 | static int8_t write_pin(uint32_t pin, uint8_t state); 23 | static int8_t write_port(uint32_t val); 24 | static int8_t read_pin(uint32_t pin); 25 | static int8_t read_port(void *data); 26 | 27 | /* Private variables ---------------------------------------------------------*/ 28 | NS_I2C_GPIO_TypeDef max7320 = { 29 | 0xB0, 30 | 31 | configuration, 32 | write_pin, 33 | write_port, 34 | read_pin, 35 | read_port 36 | }; 37 | 38 | /* Extern function -----------------------------------------------------------*/ 39 | /* Private Functions --------------------------------------------------------*/ 40 | 41 | /** 42 | * @brief configuration 43 | * @param None 44 | * @retval None 45 | */ 46 | static int8_t configuration(void) 47 | { 48 | return write_port(0x00000000); 49 | 50 | /* no other configurate needed for pca9675 */ 51 | } 52 | 53 | /** 54 | * @brief write_pin 55 | * @param None 56 | * @retval None 57 | */ 58 | static int8_t write_pin(uint32_t pin, uint8_t state) 59 | { 60 | uint8_t read_data; 61 | 62 | read_port(&read_data); 63 | 64 | if(state) { 65 | read_data |= (uint8_t)pin; 66 | } 67 | else { 68 | read_data &= (uint8_t)(~pin); 69 | } 70 | 71 | return I2C_Write_Bytes(&read_data, 1, max7320.i2c_address); 72 | } 73 | 74 | /** 75 | * @brief write_port 76 | * @param None 77 | * @retval None 78 | */ 79 | static int8_t write_port(uint32_t val) 80 | { 81 | uint8_t write_data = (uint8_t)val; 82 | return I2C_Write_Bytes(&write_data, 1, max7320.i2c_address); 83 | } 84 | 85 | /** 86 | * @brief read_pin 87 | * @param None 88 | * @retval None 89 | */ 90 | static int8_t read_pin(uint32_t pin) 91 | { 92 | uint8_t read_data = 0; 93 | 94 | if (read_port(&read_data) == -1) { 95 | return -1; 96 | } 97 | else if ((read_data & pin) != 0) { 98 | return 1; 99 | } 100 | else { 101 | return 0; 102 | } 103 | } 104 | 105 | /** 106 | * @brief read_port 107 | * @param None 108 | * @retval None 109 | */ 110 | static int8_t read_port(void *data) 111 | { 112 | return I2C_Read_Bytes((uint8_t*)data, 1, max7320.i2c_address); 113 | } 114 | -------------------------------------------------------------------------------- /drivers/i2c/i2c_gpio/max7320.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file max7320.h 4 | * @author Left Radio 5 | * @version 1.0.0 6 | * @date 7 | * @brief header 8 | ****************************************************************************** 9 | **/ 10 | 11 | /* Define to prevent recursive inclusion -------------------------------------*/ 12 | #ifndef __NS_MAX7320_GPIO__H 13 | #define __NS_MAX7320_GPIO__H 14 | 15 | /* Includes ------------------------------------------------------------------*/ 16 | #include "i2c_gpio.h" 17 | 18 | /* Exported define -----------------------------------------------------------*/ 19 | /* Exported macro ------------------------------------------------------------*/ 20 | /* Exported typedef ----------------------------------------------------------*/ 21 | extern NS_I2C_GPIO_TypeDef max7320; 22 | 23 | /* Exported variables --------------------------------------------------------*/ 24 | /* Exported function ---------------------------------------------------------*/ 25 | 26 | 27 | 28 | 29 | #endif /* __NS_MAX7320_GPIO__H */ 30 | /********************************************************************************************************* 31 | END FILE 32 | *********************************************************************************************************/ 33 | -------------------------------------------------------------------------------- /drivers/i2c/i2c_gpio/pca9675.c: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file i2c_gpio.c 4 | * @author Left Radio 5 | * @version 1.0.0 6 | * @date 7 | * @brief NeilScope3 i2c_gpio sourse 8 | ****************************************************************************** 9 | **/ 10 | 11 | /* Includes ------------------------------------------------------------------*/ 12 | #include "stm32f10x.h" 13 | #include "i2c.h" 14 | #include "i2c_gpio.h" 15 | #include "pca9675.h" 16 | 17 | /* Private typedef -----------------------------------------------------------*/ 18 | /* Private define ------------------------------------------------------------*/ 19 | /* Private macro -------------------------------------------------------------*/ 20 | /* Private function prototypes -----------------------------------------------*/ 21 | static int8_t configuration(void); 22 | static int8_t write_pin(uint32_t pin, uint8_t state); 23 | static int8_t write_port(uint32_t val); 24 | static int8_t read_pin(uint32_t pin); 25 | static int8_t read_port(void *data); 26 | 27 | /* Private variables ---------------------------------------------------------*/ 28 | NS_I2C_GPIO_TypeDef pca9675 = { 29 | 0x42, 30 | 31 | configuration, 32 | write_pin, 33 | write_port, 34 | read_pin, 35 | read_port 36 | }; 37 | 38 | /* Extern function -----------------------------------------------------------*/ 39 | /* Private Functions --------------------------------------------------------*/ 40 | 41 | /** 42 | * @brief configuration 43 | * @param None 44 | * @retval None 45 | */ 46 | static int8_t configuration(void) 47 | { 48 | return write_port(0x00000000); 49 | 50 | /* no other configurate needed for pca9675 */ 51 | } 52 | 53 | /** 54 | * @brief write_pin 55 | * @param None 56 | * @retval None 57 | */ 58 | static int8_t write_pin(uint32_t pin, uint8_t state) 59 | { 60 | uint8_t write_data[3]; 61 | uint16_t read_data; 62 | 63 | read_port(&read_data); 64 | 65 | read_data &= ~pin; 66 | read_data |= state; 67 | 68 | write_data[0] = (uint8_t)read_data; 69 | write_data[1] = (uint8_t)((read_data & 0xFF00) >> 8); 70 | 71 | return I2C_Write_Bytes(write_data, 2, pca9675.i2c_address); 72 | } 73 | 74 | /** 75 | * @brief write_port 76 | * @param None 77 | * @retval None 78 | */ 79 | static int8_t write_port(uint32_t val) 80 | { 81 | uint8_t write_data[3]; 82 | 83 | write_data[0] = (uint8_t)val; 84 | write_data[1] = (uint8_t)((val & 0xFF00) >> 8); 85 | 86 | return I2C_Write_Bytes(write_data, 2, pca9675.i2c_address); 87 | } 88 | 89 | /** 90 | * @brief read_pin 91 | * @param None 92 | * @retval None 93 | */ 94 | static int8_t read_pin(uint32_t pin) 95 | { 96 | uint16_t read_data; 97 | 98 | if (read_port(&read_data) == -1) { 99 | return -1; 100 | } 101 | else if ((read_data & pin) != 0) { 102 | return 1; 103 | } 104 | else { 105 | return 0; 106 | } 107 | } 108 | 109 | /** 110 | * @brief read_port 111 | * @param None 112 | * @retval None 113 | */ 114 | static int8_t read_port(void *data) 115 | { 116 | return I2C_Read_Bytes((uint8_t*)data, 2, pca9675.i2c_address); 117 | } 118 | -------------------------------------------------------------------------------- /drivers/i2c/i2c_gpio/pca9675.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file pca9675.h 4 | * @author Left Radio 5 | * @version 1.0.0 6 | * @date 7 | * @brief header 8 | ****************************************************************************** 9 | **/ 10 | 11 | /* Define to prevent recursive inclusion -------------------------------------*/ 12 | #ifndef __NS_PCA9674_GPIO__H 13 | #define __NS_PCA9674_GPIO__H 14 | 15 | /* Includes ------------------------------------------------------------------*/ 16 | #include "i2c_gpio.h" 17 | 18 | /* Exported define -----------------------------------------------------------*/ 19 | /* Exported macro ------------------------------------------------------------*/ 20 | /* Exported typedef ----------------------------------------------------------*/ 21 | extern NS_I2C_GPIO_TypeDef pca9675; 22 | 23 | /* Exported variables --------------------------------------------------------*/ 24 | /* Exported function ---------------------------------------------------------*/ 25 | 26 | 27 | 28 | 29 | #endif /* __NS_PCA9674_GPIO__H */ 30 | /********************************************************************************************************* 31 | END FILE 32 | *********************************************************************************************************/ 33 | -------------------------------------------------------------------------------- /drivers/lcd/colors-5-6-5.c: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file colors 5-6-5.c 4 | * @author Left Radio 5 | * @version 1.5.6 6 | * @date 7 | * @brief NeilScope3 Colors sourse 8 | ****************************************************************************** 9 | **/ 10 | 11 | /* Includes ------------------------------------------------------------------*/ 12 | #include /* Include standard types */ 13 | #include "colors-5-6-5.h" 14 | 15 | /* Private typedef -----------------------------------------------------------*/ 16 | /* Private define ------------------------------------------------------------*/ 17 | /* Private macro -------------------------------------------------------------*/ 18 | /* Private variables ---------------------------------------------------------*/ 19 | const uint16_t M256_Colors[256] = 20 | { 21 | 0xf801, 0xf800, 0xf860, 0xf880, 0xf8c0, 0xf8e0, 0xf920, 0xf940, 0xf980, 0xf9a0, 22 | 0xf9e0, 0xfa00, 0xfa40, 0xfa60, 0xfaa0, 0xfac0, 0xfb00, 0xfb20, 0xfb60, 0xfb80, 23 | 0xfbc0, 0xfbe0, 0xfc20, 0xfc40, 0xfc80, 0xfca0, 0xfce0, 0xfd00, 0xfd40, 0xfd60, 24 | 0xfda0, 0xfdc0, 0xfe00, 0xfe20, 0xfe60, 0xfe80, 0xfec0, 0xfee0, 0xff20, 0xff40, 25 | 0xff80, 0xffa0, 0xffe0, 0xffe0, 0xffe0, 0xf7e0, 0xefe0, 0xe7e0, 0xe7e0, 0xdfe0, 26 | 0xd7e0, 0xcfe0, 0xcfe0, 0xc7e0, 0xbfe0, 0xb7e0, 0xb7e0, 0xafe0, 0xa7e0, 0x9fe0, 27 | 0x9fe0, 0x97e0, 0x8fe0, 0x87e0, 0x87e0, 0x7fe0, 0x77e0, 0x6fe0, 0x6fe0, 0x67e0, 28 | 0x5fe0, 0x57e0, 0x57e0, 0x4fe0, 0x47e0, 0x3fe0, 0x3fe0, 0x37e0, 0x2fe0, 0x27e0, 29 | 0x27e0, 0x1fe0, 0x17e0, 0xfe0, 0xfe0, 0x7e0, 0x7e0, 0x7e0, 0x7e1, 0x7e2, 30 | 0x7e3, 0x7e3, 0x7e4, 0x7e5, 0x7e6, 0x7e6, 0x7e7, 0x7e8, 0x7e9, 0x7e9, 31 | 0x7ea, 0x7eb, 0x7ec, 0x7ec, 0x7ed, 0x7ee, 0x7ef, 0x7ef, 0x7f0, 0x7f1, 32 | 0x7f2, 0x7f2, 0x7f3, 0x7f4, 0x7f5, 0x7f5, 0x7f6, 0x7f7, 0x7f8, 0x7f8, 33 | 0x7f9, 0x7fa, 0x7fb, 0x7fb, 0x7fc, 0x7fd, 0x7fe, 0x7fe, 0x7ff, 0x7ff, 34 | 0x7df, 0x79f, 0x77f, 0x73f, 0x71f, 0x6df, 0x6bf, 0x67f, 0x65f, 0x61f, 35 | 0x5ff, 0x5bf, 0x59f, 0x55f, 0x53f, 0x4ff, 0x4df, 0x49f, 0x47f, 0x43f, 36 | 0x41f, 0x3df, 0x3bf, 0x37f, 0x35f, 0x31f, 0x2ff, 0x2bf, 0x29f, 0x25f, 37 | 0x23f, 0x1ff, 0x1df, 0x19f, 0x17f, 0x13f, 0x11f, 0xdf, 0xbf, 0x7f, 38 | 0x5f, 0x1f, 0x1f, 0x1f, 0x81f, 0x101f, 0x181f, 0x181f, 0x201f, 0x281f, 39 | 0x301f, 0x301f, 0x381f, 0x401f, 0x481f, 0x481f, 0x501f, 0x581f, 0x601f, 0x601f, 40 | 0x681f, 0x701f, 0x781f, 0x781f, 0x801f, 0x881f, 0x901f, 0x901f, 0x981f, 0xa01f, 41 | 0xa81f, 0xa81f, 0xb01f, 0xb81f, 0xc01f, 0xc01f, 0xc81f, 0xd01f, 0xd81f, 0xd81f, 42 | 0xe01f, 0xe81f, 0xf01f, 0xf01f, 0xf81f, 0xf81f, 0xf81f, 0xf81e, 0xf81d, 0xf81c, 43 | 0xf81c, 0xf81b, 0xf81a, 0xf819, 0xf819, 0xf818, 0xf817, 0xf816, 0xf816, 0xf815, 44 | 0xf814, 0xf813, 0xf813, 0xf812, 0xf811, 0xf810, 0xf810, 0xf80f, 0xf80e, 0xf80d, 45 | 0xf80d, 0xf80c, 0xf80b, 0xf80a, 0xf80a, 0xf809, 0xf808, 0xf807, 0xffff, 46 | 0xffff, 0xce59, 0xce59, 0xb5b6, 0xb5b6, 0x2945, 0x2945 47 | }; 48 | 49 | //256 gray scale pallete in R5-G6-B5 format 50 | const uint16_t grayScalle[256] = { 51 | 0x0, 0x0, 0x0, 0x0, 0x20, 0x20, 0x20, 0x20, 0x841, 0x841, 52 | 0x841, 0x841, 0x861, 0x861, 0x861, 0x861, 0x1082, 0x1082, 0x1082, 0x1082, 53 | 0x10a2, 0x10a2, 0x10a2, 0x10a2, 0x18c3, 0x18c3, 0x18c3, 0x18c3, 0x18e3, 0x18e3, 54 | 0x18e3, 0x18e3, 0x2104, 0x2104, 0x2104, 0x2104, 0x2124, 0x2124, 0x2124, 0x2124, 55 | 0x2945, 0x2945, 0x2945, 0x2945, 0x2965, 0x2965, 0x2965, 0x2965, 0x3186, 0x3186, 56 | 0x3186, 0x3186, 0x31a6, 0x31a6, 0x31a6, 0x31a6, 0x39c7, 0x39c7, 0x39c7, 0x39c7, 57 | 0x39e7, 0x39e7, 0x39e7, 0x39e7, 0x4208, 0x4208, 0x4208, 0x4208, 0x4228, 0x4228, 58 | 0x4228, 0x4228, 0x4a49, 0x4a49, 0x4a49, 0x4a49, 0x4a69, 0x4a69, 0x4a69, 0x4a69, 59 | 0x528a, 0x528a, 0x528a, 0x528a, 0x52aa, 0x52aa, 0x52aa, 0x52aa, 0x5acb, 0x5acb, 60 | 0x5acb, 0x5acb, 0x5aeb, 0x5aeb, 0x5aeb, 0x5aeb, 0x630c, 0x630c, 0x630c, 0x630c, 61 | 0x632c, 0x632c, 0x632c, 0x632c, 0x6b4d, 0x6b4d, 0x6b4d, 0x6b4d, 0x6b6d, 0x6b6d, 62 | 0x6b6d, 0x6b6d, 0x738e, 0x738e, 0x738e, 0x738e, 0x73ae, 0x73ae, 0x73ae, 0x73ae, 63 | 0x7bcf, 0x7bcf, 0x7bcf, 0x7bcf, 0x7bef, 0x7bef, 0x7bef, 0x7bef, 0x8410, 0x8410, 64 | 0x8410, 0x8410, 0x8430, 0x8430, 0x8430, 0x8430, 0x8c51, 0x8c51, 0x8c51, 0x8c51, 65 | 0x8c71, 0x8c71, 0x8c71, 0x8c71, 0x9492, 0x9492, 0x9492, 0x9492, 0x94b2, 0x94b2, 66 | 0x94b2, 0x94b2, 0x9cd3, 0x9cd3, 0x9cd3, 0x9cd3, 0x9cf3, 0x9cf3, 0x9cf3, 0x9cf3, 67 | 0xa514, 0xa514, 0xa514, 0xa514, 0xa534, 0xa534, 0xa534, 0xa534, 0xad55, 0xad55, 68 | 0xad55, 0xad55, 0xad75, 0xad75, 0xad75, 0xad75, 0xb596, 0xb596, 0xb596, 0xb596, 69 | 0xb5b6, 0xb5b6, 0xb5b6, 0xb5b6, 0xbdd7, 0xbdd7, 0xbdd7, 0xbdd7, 0xbdf7, 0xbdf7, 70 | 0xbdf7, 0xbdf7, 0xc618, 0xc618, 0xc618, 0xc618, 0xc638, 0xc638, 0xc638, 0xc638, 71 | 0xce59, 0xce59, 0xce59, 0xce59, 0xce79, 0xce79, 0xce79, 0xce79, 0xd69a, 0xd69a, 72 | 0xd69a, 0xd69a, 0xd6ba, 0xd6ba, 0xd6ba, 0xd6ba, 0xdedb, 0xdedb, 0xdedb, 0xdedb, 73 | 0xdefb, 0xdefb, 0xdefb, 0xdefb, 0xe71c, 0xe71c, 0xe71c, 0xe71c, 0xe73c, 0xe73c, 74 | 0xe73c, 0xe73c, 0xef5d, 0xef5d, 0xef5d, 0xef5d, 0xef7d, 0xef7d, 0xef7d, 0xef7d, 75 | 0xf79e, 0xf79e, 0xf79e, 0xf79e, 0xf7be, 0xf7be, 0xf7be, 0xf7be, 0xffdf, 0xffdf, 76 | 0xffdf, 0xffdf, 0xffff, 0xffff, 0xffff, 0xffff }; 77 | 78 | 79 | 80 | /******************************************************************************* 81 | * Function Name : Color_ChangeBrightness 82 | * Description : 83 | * Input : reference color, BrightLevel 84 | * Output : changed color 85 | * Return : None 86 | *******************************************************************************/ 87 | uint16_t Color_ChangeBrightness(uint16_t ColorIn, int8_t BrightLevel) 88 | { 89 | int32_t R = 0, G = 0, B = 0; 90 | 91 | if(BrightLevel > 32) BrightLevel = 32; 92 | else if(BrightLevel < -32) BrightLevel = -32; 93 | 94 | R = ((ColorIn & 0xF800) >> 11) + (BrightLevel); 95 | G = ((ColorIn & 0x07E0) >> 5) + (BrightLevel * 2); 96 | B = (ColorIn & 0x001F) + (BrightLevel); 97 | 98 | if(R < 0) R = 0; 99 | else if(R > 31) R = 31; 100 | 101 | if(G < 0) G = 0; 102 | else if(G > 63) G = 63; 103 | 104 | if(B < 0) B = 0; 105 | else if(B > 31) B = 31; 106 | 107 | 108 | return (uint16_t)((R << 11) | (G << 5) | (B)); 109 | } 110 | -------------------------------------------------------------------------------- /drivers/lcd/colors-5-6-5.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file colors 5-6-5.h 4 | * @author LeftRadio 5 | * @version 1.5.6 6 | * @date 7 | * @brief NeilScope3 Colors header 8 | ****************************************************************************** 9 | **/ 10 | 11 | #ifndef __COLOR565_H 12 | #define __COLOR565_H 13 | 14 | /* Includes ------------------------------------------------------------------*/ 15 | /* Exported typedef ----------------------------------------------------------*/ 16 | /* Exported define -----------------------------------------------------------*/ 17 | #define White 0xffff 18 | #define Black 0x0000 19 | #define LightBlack 0x841 20 | #define LightBlack2 0x3186 21 | #define Gray 0x8c71 22 | #define LightGray 0xce59 23 | #define LightGray2 0xbdf7 24 | #define LightGray3 0x94b2 25 | #define LightGray4 0x8410 26 | #define LightSky 0x7e7f 27 | #define Red 0xf800 28 | #define DarkRed 0x5000 29 | #define LightRed 0xfcb2 30 | #define LightRed2 0xf904 31 | #define LightGreen 0x679 32 | #define Blue 0x1f 33 | #define LightBlue1 0x3bd 34 | #define LighGreen 0x87f0 35 | #define Green1 0x160 36 | #define Orange 0xeba0 37 | #define Orange1 0xfb23 38 | #define DarkOrange 0xa9a0 39 | #define DarkOrange2 0x8960 40 | #define Auqa 0x332c 41 | #define DarkAuqa 0x1e4 42 | #define GrayBlue 0x41f 43 | #define Yellow 0xffe0 44 | #define StillBlue 0x10a4 45 | 46 | /* Exported variables --------------------------------------------------------*/ 47 | extern const uint16_t M256_Colors[256]; 48 | extern const uint16_t grayScalle[256]; 49 | 50 | /* Exported function ---------------------------------------------------------*/ 51 | uint16_t Color_ChangeBrightness(uint16_t ColorIn, int8_t BrightLevel); 52 | 53 | 54 | 55 | #endif /* __COLOR565_H */ 56 | /********************************************************************************************************* 57 | END FILE 58 | *********************************************************************************************************/ 59 | -------------------------------------------------------------------------------- /drivers/lcd/fonts/SansSerif_9Bold.c: -------------------------------------------------------------------------------- 1 | // 2 | // Font data for Microsoft Sans Serif 10pt 3 | // 4 | 5 | #include "HX8352_Library.h" 6 | 7 | // 8 | // Font data for Lucida Console 9pt 9 | // 10 | 11 | // Character bitmaps for Lucida Console 9pt 12 | const uint8_t lucidaConsole_9ptBitmaps[] = 13 | { 14 | // @0 '0' (7 pixels wide) 15 | 0x3C, // #### 16 | 0xFF, // ######## 17 | 0xC3, // ## ## 18 | 0x81, // # # 19 | 0xC3, // ## ## 20 | 0xFF, // ######## 21 | 0x3C, // #### 22 | 23 | // @7 '1' (6 pixels wide) 24 | 0b10000010, // # # 25 | 0b10000010, // # # 26 | 0b11111111, // ######## 27 | 0b11111111, // ######## 28 | 0b10000000, // # 29 | 0b10000000, // # 30 | 31 | // @13 '2' (6 pixels wide) 32 | 0b11000001, // ## # 33 | 0b11100001, // ### # 34 | 0b10110001, // # ## # 35 | 0b10011001, // # ## # 36 | 0b10001111, // # #### 37 | 0b10001111, // # #### 38 | 39 | // @19 '3' (5 pixels wide) 40 | 0x81, // # # 41 | 0x89, // # # # 42 | 0x89, // # # # 43 | 0xFF, // ######## 44 | 0x77, // ### ### 45 | 46 | // @24 '4' (7 pixels wide) 47 | 0x30, // ## 48 | 0x38, // ### 49 | 0x2C, // # ## 50 | 0x26, // # ## 51 | 0xFF, // ######## 52 | 0xFF, // ######## 53 | 0x20, // # 54 | 55 | // @31 '5' (5 pixels wide) 56 | 0x8F, // # #### 57 | 0x8F, // # #### 58 | 0x89, // # # # 59 | 0xF9, // ##### # 60 | 0x71, // ### # 61 | 62 | // @36 '6' (6 pixels wide) 63 | 0x7C, // ##### 64 | 0xFE, // ####### 65 | 0x9B, // # ## ## 66 | 0x89, // # # # 67 | 0xF9, // ##### # 68 | 0x71, // ### # 69 | 70 | // @42 '7' (6 pixels wide) 71 | 0xC1, // ## # 72 | 0xF1, // #### # 73 | 0x39, // ### # 74 | 0x0D, // ## # 75 | 0x07, // ### 76 | 0x03, // ## 77 | 78 | // @48 '8' (6 pixels wide) 79 | 0x76, // ### ## 80 | 0xFF, // ######## 81 | 0x89, // # # # 82 | 0x99, // # ## # 83 | 0xFF, // ######## 84 | 0x66, // ## ## 85 | 86 | // @54 '9' (6 pixels wide) 87 | 0x8E, // # ### 88 | 0x9F, // # ##### 89 | 0x91, // # # # 90 | 0xD1, // ## # # 91 | 0x7F, // ####### 92 | 0x3E, // ##### 93 | }; 94 | 95 | // Character descriptors for Lucida Console 9pt 96 | // { [Char width in bits], [Offset into lucidaConsole_9ptCharBitmaps in bytes] } 97 | const FONT_CHAR_INFO lucidaConsole_9ptDescriptors[] = 98 | { 99 | {7, 0}, // 0 100 | {6, 7}, // 1 101 | {6, 13}, // 2 102 | {5, 19}, // 3 103 | {7, 24}, // 4 104 | {5, 31}, // 5 105 | {6, 36}, // 6 106 | {6, 42}, // 7 107 | {6, 48}, // 8 108 | {6, 54}, // 9 109 | }; 110 | 111 | // Font information for Lucida Console 9pt 112 | const FONT_INFO lucidaConsole_9pt_Bold_FontInfo = 113 | { 114 | 8, // Character height 115 | 1, // Character height in bytes 116 | '0', // Start character 117 | '9', // End character 118 | 2, // Width, in pixels, of space character 119 | lucidaConsole_9ptDescriptors, // Character descriptor array 120 | lucidaConsole_9ptBitmaps, // Character bitmap array 121 | }; 122 | 123 | 124 | 125 | -------------------------------------------------------------------------------- /drivers/lcd/libGL_HX8352_flash.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LeftRadio/neil-scope3/cf86cfada2b9b32ed0eeb5054fca2bd611318e7f/drivers/lcd/libGL_HX8352_flash.a -------------------------------------------------------------------------------- /drivers/rtc/RTC.c: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file RTC.c 4 | * @author Left Radio 5 | * @version 1.5.6 6 | * @date 7 | * @brief NeilScope3 RTC sourse 8 | ****************************************************************************** 9 | **/ 10 | 11 | 12 | /* Includes ------------------------------------------------------------------*/ 13 | #include "stm32f10x.h" 14 | #include "RTC.h" 15 | 16 | /* Private variables--------------------------------------------------------- */ 17 | Time_s s_TimeStructVar; 18 | 19 | /* Private typedef -----------------------------------------------------------*/ 20 | /* Private define ------------------------------------------------------------*/ 21 | /* Private macro -------------------------------------------------------------*/ 22 | /* Private variables ---------------------------------------------------------*/ 23 | /* Private function prototypes -----------------------------------------------*/ 24 | /* Private functions ---------------------------------------------------------*/ 25 | 26 | /******************************************************************************* 27 | * Function Name : RTC_User_Init 28 | * Description : 29 | * Input : None 30 | * Output : None 31 | * Return : None 32 | *******************************************************************************/ 33 | void RTC_User_Init(void) 34 | { 35 | /*Enables the clock to Backup and power interface peripherals */ 36 | RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP | RCC_APB1Periph_PWR, ENABLE); 37 | 38 | NVIC_EnableIRQ(RTC_IRQn); 39 | NVIC_SetPriority(RTC_IRQn, 8); 40 | 41 | /* RTC Configuration*/ 42 | RTC_Configuration(); 43 | } 44 | 45 | 46 | /******************************************************************************* 47 | * Function Name : RTC_Configuration 48 | * Description : 49 | * Input : None 50 | * Output : None 51 | * Return : None 52 | *******************************************************************************/ 53 | void RTC_Configuration(void) 54 | { 55 | /*Enables the clock to Backup and power interface peripherals */ 56 | RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP | RCC_APB1Periph_PWR, ENABLE); 57 | 58 | /*Allow access to Backup Registers*/ 59 | PWR_BackupAccessCmd(ENABLE); 60 | 61 | /* Backup Domain Reset */ 62 | BKP_DeInit(); 63 | BKP_WriteBackupRegister(BKP_DR1, CONFIGURATION_DONE); 64 | 65 | RCC_RTCCLKConfig(RCC_RTCCLKSource_HSE_Div128); 66 | 67 | /* RTC Enabled */ 68 | RCC_RTCCLKCmd(ENABLE); 69 | RTC_WaitForLastTask(); 70 | 71 | /*Wait for RTC registers synchronisation */ 72 | RTC_WaitForSynchro(); 73 | RTC_WaitForLastTask(); 74 | 75 | /* Setting RTC Interrupts-Seconds interrupt enabled */ 76 | RTC_ITConfig(RTC_IT_SEC, ENABLE); 77 | 78 | /* Wait until last write operation on RTC registers has finished */ 79 | RTC_WaitForLastTask(); 80 | 81 | /* Set RTC prescaler: set RTC period to 1 sec */ 82 | RTC_SetPrescaler(62250); /* RTC period */ 83 | 84 | /* Wait until last write operation on RTC registers has finished */ 85 | RTC_WaitForLastTask(); 86 | } 87 | 88 | 89 | /******************************************************************************* 90 | * Function Name : Calculate_Time 91 | * Description : 92 | * Input : None 93 | * Output : None 94 | * Return : None 95 | *******************************************************************************/ 96 | void Calculate_Time(void) 97 | { 98 | uint32_t TimeVar; 99 | 100 | TimeVar = RTC_GetCounter(); 101 | // TimeVar = TimeVar % 86400; 102 | 103 | s_TimeStructVar.Hours = (uint8_t)(TimeVar / 3600); 104 | s_TimeStructVar.Minutes = (uint8_t)((TimeVar % 3600) / 60); 105 | s_TimeStructVar.Seconds = (uint8_t)((TimeVar % 3600) % 60); 106 | } 107 | 108 | 109 | -------------------------------------------------------------------------------- /drivers/rtc/RTC.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LeftRadio/neil-scope3/cf86cfada2b9b32ed0eeb5054fca2bd611318e7f/drivers/rtc/RTC.h -------------------------------------------------------------------------------- /drivers/systick/stm32f10x_systick.c: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** 2 | * File Name : stm32f10x_systick.c 3 | * Author : MCD Application Team 4 | * Version : V2.0.3 5 | * Date : 09/22/2008 6 | * Description : This file provides all the SysTick firmware functions. 7 | ******************************************************************************** 8 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 9 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 10 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 11 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 12 | * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 13 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 14 | *******************************************************************************/ 15 | 16 | /* Includes ------------------------------------------------------------------*/ 17 | #include "stm32f10x_systick.h" 18 | 19 | /* Private typedef -----------------------------------------------------------*/ 20 | /* Private define ------------------------------------------------------------*/ 21 | /* ---------------------- SysTick registers bit mask -------------------- */ 22 | /* CTRL TICKINT Mask */ 23 | #define CTRL_TICKINT_Set ((u32)0x00000002) 24 | #define CTRL_TICKINT_Reset ((u32)0xFFFFFFFD) 25 | 26 | /* Private macro -------------------------------------------------------------*/ 27 | /* Private variables ---------------------------------------------------------*/ 28 | /* Private function prototypes -----------------------------------------------*/ 29 | /* Private functions ---------------------------------------------------------*/ 30 | 31 | /******************************************************************************* 32 | * Function Name : SysTick_SetReload 33 | * Description : Sets SysTick Reload value. 34 | * Input : - Reload: SysTick Reload new value. 35 | * This parameter must be a number between 1 and 0xFFFFFF. 36 | * Output : None 37 | * Return : None 38 | *******************************************************************************/ 39 | void SysTick_SetReload(u32 Reload) 40 | { 41 | /* Check the parameters */ 42 | assert_param(IS_SYSTICK_RELOAD(Reload)); 43 | 44 | SysTick->LOAD = Reload; 45 | } 46 | 47 | /******************************************************************************* 48 | * Function Name : SysTick_CounterCmd 49 | * Description : Enables or disables the SysTick counter. 50 | * Input : - SysTick_Counter: new state of the SysTick counter. 51 | * This parameter can be one of the following values: 52 | * - SysTick_Counter_Disable: Disable counter 53 | * - SysTick_Counter_Enable: Enable counter 54 | * - SysTick_Counter_Clear: Clear counter value to 0 55 | * Output : None 56 | * Return : None 57 | *******************************************************************************/ 58 | void SysTick_CounterCmd(u32 SysTick_Counter) 59 | { 60 | /* Check the parameters */ 61 | assert_param(IS_SYSTICK_COUNTER(SysTick_Counter)); 62 | 63 | if (SysTick_Counter == SysTick_Counter_Enable) 64 | { 65 | SysTick->CTRL |= SysTick_Counter_Enable; 66 | } 67 | else if (SysTick_Counter == SysTick_Counter_Disable) 68 | { 69 | SysTick->CTRL &= SysTick_Counter_Disable; 70 | } 71 | else /* SysTick_Counter == SysTick_Counter_Clear */ 72 | { 73 | SysTick->VAL = SysTick_Counter_Clear; 74 | } 75 | } 76 | 77 | /******************************************************************************* 78 | * Function Name : SysTick_ITConfig 79 | * Description : Enables or disables the SysTick Interrupt. 80 | * Input : - NewState: new state of the SysTick Interrupt. 81 | * This parameter can be: ENABLE or DISABLE. 82 | * Output : None 83 | * Return : None 84 | *******************************************************************************/ 85 | void SysTick_ITConfig(FunctionalState NewState) 86 | { 87 | /* Check the parameters */ 88 | assert_param(IS_FUNCTIONAL_STATE(NewState)); 89 | 90 | if (NewState != DISABLE) 91 | { 92 | SysTick->CTRL |= CTRL_TICKINT_Set; 93 | } 94 | else 95 | { 96 | SysTick->CTRL &= CTRL_TICKINT_Reset; 97 | } 98 | } 99 | 100 | /******************************************************************************* 101 | * Function Name : SysTick_GetCounter 102 | * Description : Gets SysTick counter value. 103 | * Input : None 104 | * Output : None 105 | * Return : SysTick current value 106 | *******************************************************************************/ 107 | u32 SysTick_GetCounter(void) 108 | { 109 | return(SysTick->VAL); 110 | } 111 | 112 | /******************************************************************************* 113 | * Function Name : SysTick_GetFlagStatus 114 | * Description : Checks whether the specified SysTick flag is set or not. 115 | * Input : - SysTick_FLAG: specifies the flag to check. 116 | * This parameter can be one of the following values: 117 | * - SysTick_FLAG_COUNT 118 | * - SysTick_FLAG_SKEW 119 | * - SysTick_FLAG_NOREF 120 | * Output : None 121 | * Return : None 122 | *******************************************************************************/ 123 | FlagStatus SysTick_GetFlagStatus(u8 SysTick_FLAG) 124 | { 125 | u32 statusreg = 0, tmp = 0 ; 126 | FlagStatus bitstatus = RESET; 127 | 128 | /* Check the parameters */ 129 | assert_param(IS_SYSTICK_FLAG(SysTick_FLAG)); 130 | 131 | /* Get the SysTick register index */ 132 | tmp = SysTick_FLAG >> 3; 133 | 134 | if (tmp == 2) /* The flag to check is in CTRL register */ 135 | { 136 | statusreg = SysTick->CTRL; 137 | } 138 | else /* The flag to check is in CALIB register */ 139 | { 140 | statusreg = SysTick->CALIB; 141 | } 142 | 143 | if ((statusreg & ((u32)1 << SysTick_FLAG)) != (u32)RESET) 144 | { 145 | bitstatus = SET; 146 | } 147 | else 148 | { 149 | bitstatus = RESET; 150 | } 151 | return bitstatus; 152 | } 153 | 154 | /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ 155 | -------------------------------------------------------------------------------- /drivers/systick/stm32f10x_systick.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** 2 | * File Name : stm32f10x_systick.h 3 | * Author : MCD Application Team 4 | * Version : V2.0.3 5 | * Date : 09/22/2008 6 | * Description : This file contains all the functions prototypes for the 7 | * SysTick firmware library. 8 | ******************************************************************************** 9 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 10 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 11 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 12 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 13 | * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 14 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 15 | *******************************************************************************/ 16 | 17 | /* Define to prevent recursive inclusion -------------------------------------*/ 18 | #ifndef __STM32F10x_SYSTICK_H 19 | #define __STM32F10x_SYSTICK_H 20 | 21 | /* Includes ------------------------------------------------------------------*/ 22 | //#include "stm32f10x.h" 23 | #include "misc.h" 24 | 25 | /* Exported types ------------------------------------------------------------*/ 26 | /* Exported constants --------------------------------------------------------*/ 27 | /* SysTick clock source */ 28 | 29 | #define IS_SYSTICK_CLK_SOURCE(SOURCE) (((SOURCE) == SysTick_CLKSource_HCLK) || \ 30 | ((SOURCE) == SysTick_CLKSource_HCLK_Div8)) 31 | 32 | /* SysTick counter state */ 33 | #define SysTick_Counter_Disable ((u32)0xFFFFFFFE) 34 | #define SysTick_Counter_Enable ((u32)0x00000001) 35 | #define SysTick_Counter_Clear ((u32)0x00000000) 36 | 37 | #define IS_SYSTICK_COUNTER(COUNTER) (((COUNTER) == SysTick_Counter_Disable) || \ 38 | ((COUNTER) == SysTick_Counter_Enable) || \ 39 | ((COUNTER) == SysTick_Counter_Clear)) 40 | 41 | /* SysTick Flag */ 42 | #define SysTick_FLAG_COUNT ((u32)0x00000010) 43 | #define SysTick_FLAG_SKEW ((u32)0x0000001E) 44 | #define SysTick_FLAG_NOREF ((u32)0x0000001F) 45 | 46 | #define IS_SYSTICK_FLAG(FLAG) (((FLAG) == SysTick_FLAG_COUNT) || \ 47 | ((FLAG) == SysTick_FLAG_SKEW) || \ 48 | ((FLAG) == SysTick_FLAG_NOREF)) 49 | 50 | #define IS_SYSTICK_RELOAD(RELOAD) (((RELOAD) > 0) && ((RELOAD) <= 0xFFFFFF)) 51 | 52 | /* Exported macro ------------------------------------------------------------*/ 53 | /* Exported functions ------------------------------------------------------- */ 54 | void SysTick_CLKSourceConfig(u32 SysTick_CLKSource); 55 | void SysTick_SetReload(u32 Reload); 56 | void SysTick_CounterCmd(u32 SysTick_Counter); 57 | void SysTick_ITConfig(FunctionalState NewState); 58 | u32 SysTick_GetCounter(void); 59 | FlagStatus SysTick_GetFlagStatus(u8 SysTick_FLAG); 60 | 61 | #endif /* __STM32F10x_SYSTICK_H */ 62 | 63 | /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ 64 | -------------------------------------------------------------------------------- /drivers/systick/systick.c: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file systick.c 4 | * @author Left Radio 5 | * @version 1.2.0 6 | * @date 7 | * @brief systick sourse 8 | ****************************************************************************** 9 | **/ 10 | 11 | /* Includes ------------------------------------------------------------------*/ 12 | #include "systick.h" 13 | #include "stm32f10x_systick.h" 14 | #include "core_cm3.h" 15 | #include "main.h" 16 | 17 | /* Private typedef -----------------------------------------------------------*/ 18 | /* Private define ------------------------------------------------------------*/ 19 | /* Private macro -------------------------------------------------------------*/ 20 | /* Private variables ---------------------------------------------------------*/ 21 | static uint8_t delay_fac_us = 0; 22 | static uint16_t delay_fac_ms = 0; 23 | static FlagStatus Status; 24 | 25 | extern ButtonsPush_TypeDef ButtonPush; 26 | 27 | 28 | /* Private function prototypes -----------------------------------------------*/ 29 | /* Private Functions --------------------------------------------------------*/ 30 | 31 | /** 32 | * @brief delay_init 33 | * @param None 34 | * @retval None 35 | */ 36 | void delay_init(void) 37 | { 38 | RCC_ClocksTypeDef RCC_ClocksStatus; 39 | 40 | RCC_GetClocksFreq(&RCC_ClocksStatus); 41 | SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); 42 | SysTick_ITConfig(DISABLE); 43 | delay_fac_us = RCC_ClocksStatus.HCLK_Frequency / 8000000; 44 | delay_fac_ms = RCC_ClocksStatus.HCLK_Frequency / 8000; 45 | } 46 | 47 | 48 | /** 49 | * @brief delay_us 50 | * @param u32 Nus 51 | * @retval None 52 | */ 53 | void delay_us(u32 us) 54 | { 55 | uint32_t temp = delay_fac_us * us; 56 | int16_t tick = us/1864135; 57 | 58 | if (temp > 0x00ffffff) temp = 0x00ffffff; 59 | 60 | do 61 | { 62 | SysTick_SetReload(temp); 63 | SysTick_CounterCmd(SysTick_Counter_Clear); 64 | SysTick_CounterCmd(SysTick_Counter_Enable); 65 | 66 | do 67 | { 68 | Status = SysTick_GetFlagStatus(SysTick_FLAG_COUNT); 69 | 70 | } while ((Status != SET) && (ButtonPush == B_RESET)); 71 | 72 | SysTick_CounterCmd(SysTick_Counter_Disable); 73 | SysTick_CounterCmd(SysTick_Counter_Clear); 74 | 75 | } while((tick-- > 0) && (ButtonPush == B_RESET)); 76 | } 77 | 78 | 79 | /** 80 | * @brief delay_ms 81 | * @param uint16_t nms 82 | * @retval None 83 | */ 84 | void delay_ms(uint16_t nms) 85 | { 86 | uint32_t temp = delay_fac_ms * nms; 87 | 88 | if (temp > 0x00ffffff) temp = 0x00ffffff; 89 | 90 | SysTick_SetReload(temp); 91 | SysTick_CounterCmd(SysTick_Counter_Clear); 92 | SysTick_CounterCmd(SysTick_Counter_Enable); 93 | 94 | do 95 | { 96 | Status = SysTick_GetFlagStatus(SysTick_FLAG_COUNT); 97 | 98 | } while ((Status != SET) && (ButtonPush == B_RESET)); 99 | 100 | SysTick_CounterCmd(SysTick_Counter_Disable); 101 | SysTick_CounterCmd(SysTick_Counter_Clear); 102 | } 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | /********************************************************************************************************* 112 | END FILE 113 | *********************************************************************************************************/ 114 | -------------------------------------------------------------------------------- /drivers/systick/systick.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file systick.h 4 | * @author Left Radio 5 | * @version 1.2.0 6 | * @date 7 | * @brief systick header 8 | ****************************************************************************** 9 | **/ 10 | 11 | #ifndef __SYSTICK_H 12 | #define __SYSTICK_H 13 | 14 | /* Includes ------------------------------------------------------------------*/ 15 | #include /* Include standard types */ 16 | 17 | /* Private function prototypes -----------------------------------------------*/ 18 | void delay_init(void); 19 | void delay_ms(uint16_t nms); 20 | void delay_us(uint32_t nus); 21 | 22 | 23 | 24 | 25 | 26 | #endif /* __SYSTICK_H */ 27 | /********************************************************************************************************* 28 | END FILE 29 | *********************************************************************************************************/ 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /fft/fft.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LeftRadio/neil-scope3/cf86cfada2b9b32ed0eeb5054fca2bd611318e7f/fft/fft.c -------------------------------------------------------------------------------- /fft/fft.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LeftRadio/neil-scope3/cf86cfada2b9b32ed0eeb5054fca2bd611318e7f/fft/fft.h -------------------------------------------------------------------------------- /host/Host.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file Host.h 4 | * @author Left Radio 5 | * @version 1.5.6 6 | * @date 7 | * @brief NeilScope3 Host header 8 | ****************************************************************************** 9 | **/ 10 | 11 | #ifndef __HOST_H 12 | #define __HOST_H 13 | 14 | /* Includes ------------------------------------------------------------------*/ 15 | /* Exported typedef ----------------------------------------------------------*/ 16 | typedef enum { NO_Request, Data_Request, Calibrate_Request, Disconnect, Bootoader_Request} HostRequestType; 17 | 18 | /* Host Request struct type */ 19 | typedef struct { 20 | FunctionalState State; 21 | HostRequestType Request; 22 | uint8_t UserData; 23 | uint32_t DataLen; 24 | } HostRequest_TypeDef; 25 | 26 | /* Exported define -----------------------------------------------------------*/ 27 | /* Exported variables --------------------------------------------------------*/ 28 | extern FunctionalState HostMode; 29 | extern Boolean SamplesData_ACK; 30 | extern __IO HostRequest_TypeDef gHostRequest; 31 | 32 | /* Exported function ---------------------------------------------------------*/ 33 | void Recive_Host_Data(uint8_t IQueueIndex); 34 | void Transmit_To_Host(uint8_t Respond_CMD, uint8_t *pData, uint8_t DataLen); 35 | void Transmit_DataBuf_To_Host(void); 36 | void Host_RequestReset(void); 37 | FlagStatus Host_GetTerminateCmd(void); 38 | 39 | void host_send_str(const char *str); 40 | 41 | uint8_t CRC8_Buff(uint8_t *pBuff, uint16_t NumBytes); 42 | uint8_t CRC8(uint8_t Byte, uint8_t crc); 43 | 44 | 45 | #endif /* __HOST_H */ 46 | /********************************************************************************************************* 47 | END FILE 48 | *********************************************************************************************************/ 49 | -------------------------------------------------------------------------------- /host/HostCommands.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file ReceivedStateMachine.h 4 | * @author Left Radio 5 | * @version 6 | * @date 7 | * @brief header 8 | ****************************************************************************** 9 | **/ 10 | 11 | /* Define to prevent recursive inclusion -------------------------------------*/ 12 | #ifndef _HOST_COMMANDS__H 13 | #define _HOST_COMMANDS__H 14 | 15 | /* Includes ------------------------------------------------------------------*/ 16 | /* Exported define -----------------------------------------------------------*/ 17 | #define HOST_CMD_CNT 22 18 | 19 | /* Exported macro ------------------------------------------------------------*/ 20 | /* Exported typedef ----------------------------------------------------------*/ 21 | typedef struct 22 | { 23 | uint8_t Command[10]; 24 | int8_t (*Handler)(uint8_t* data); 25 | // Boolean Complete; 26 | } Host_Commands_TypeDef; 27 | 28 | /* Exported variables --------------------------------------------------------*/ 29 | extern const Host_Commands_TypeDef Host_Commands[HOST_CMD_CNT]; 30 | 31 | /* Exported function ---------------------------------------------------------*/ 32 | 33 | 34 | 35 | #endif /* _HOST_COMMANDS__H */ 36 | /********************************************************************************************************* 37 | END FILE 38 | *********************************************************************************************************/ 39 | -------------------------------------------------------------------------------- /host/IQueue.c: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file init.c 4 | * @author LeftRadio 5 | * @version V1.0.0 6 | * @date 7 | * @brief Main Init Peripherals. 8 | ****************************************************************************** 9 | **/ 10 | 11 | /* Includes ------------------------------------------------------------------*/ 12 | #include "stm32f10x.h" 13 | #include "IQueue.h" 14 | 15 | /* Private typedef -----------------------------------------------------------*/ 16 | /* Private define ------------------------------------------------------------*/ 17 | /* Private macro -------------------------------------------------------------*/ 18 | /* Private variables ---------------------------------------------------------*/ 19 | /* Instruction queue command massive */ 20 | __IO IQueue_TypeDef IQueue[IQUEUE_SIZE]; 21 | Boolean IQueue_Commands_Empty = TRUE; 22 | 23 | /* Private function prototypes -----------------------------------------------*/ 24 | /* Extern function ----------------------------------------------------------*/ 25 | /* Functions -----------------------------------------------------------------*/ 26 | 27 | /******************************************************************************* 28 | * Function Name : Host_Read_Instruction_From_Queue 29 | * Description : 30 | * Input : None 31 | * Return : None 32 | *******************************************************************************/ 33 | void Host_IQueue_Initialization(void) 34 | { 35 | Host_IQueue_ClearAll(); 36 | } 37 | 38 | 39 | /******************************************************************************* 40 | * Function Name : Host_IQueue_GetReadStatus 41 | * Description : 42 | * Input : None 43 | * Return : None 44 | *******************************************************************************/ 45 | Boolean Host_IQueue_GetReadStatus(uint8_t index) 46 | { 47 | if( IQueue[index].IsEmpty == FALSE ) { 48 | return TRUE; 49 | } 50 | else { 51 | return FALSE; 52 | } 53 | } 54 | 55 | 56 | /******************************************************************************* 57 | * Function Name : HostInstructionQueue 58 | * Description : 59 | * Input : None 60 | * Return : None 61 | *******************************************************************************/ 62 | void Host_SetIQueue(uint8_t* data, uint8_t cmd_index) 63 | { 64 | uint8_t i; 65 | uint8_t index = Host_IQueue_GetEmptyIndex(); 66 | 67 | for(i = 0; i < CMD_MAX_SIZE; i++) { 68 | IQueue[index].Data[i] = data[i]; 69 | } 70 | IQueue[index].CMD_Index = cmd_index; 71 | IQueue[index].IsEmpty = FALSE; 72 | } 73 | 74 | /******************************************************************************* 75 | * Function Name : HostInstructionQueue 76 | * Description : 77 | * Input : None 78 | * Return : None 79 | *******************************************************************************/ 80 | IQueue_TypeDef* Host_GetIQueue(uint8_t index) 81 | { 82 | return (IQueue_TypeDef*)&IQueue[index]; 83 | } 84 | 85 | 86 | /******************************************************************************* 87 | * Function Name : HostInstructionQueue 88 | * Description : 89 | * Input : None 90 | * Return : None 91 | *******************************************************************************/ 92 | uint8_t Host_IQueue_GetEmptyIndex(void) 93 | { 94 | uint8_t i; 95 | 96 | /* Search empty IQueue cell */ 97 | for(i = 0; i < IQUEUE_SIZE; i++) { 98 | /* Write if cell is empty */ 99 | if(IQueue[i].IsEmpty == TRUE) { 100 | // Host_IQueue_SetCommandCount(+1); 101 | break; 102 | } 103 | } 104 | 105 | /* If all cells is full then overwrite the last cell */ 106 | if(i == IQUEUE_SIZE) { 107 | i = IQUEUE_SIZE - 1; 108 | Host_IQueue_Clear(i); 109 | } 110 | 111 | return i; 112 | } 113 | 114 | 115 | /******************************************************************************* 116 | * Function Name : Clear_IQueue_Cell 117 | * Description : 118 | * Input : None 119 | * Return : None 120 | *******************************************************************************/ 121 | void Host_IQueue_Clear(uint8_t index) 122 | { 123 | /* Clear IQueue cell IsEmpty flag, command length and recive first byte data */ 124 | IQueue[index].IsEmpty = TRUE; 125 | IQueue[index].CMD_Index = 255; 126 | IQueue[index].Data[0] = 0x00; 127 | } 128 | 129 | /******************************************************************************* 130 | * Function Name : Clear_IQueue_Cell 131 | * Description : 132 | * Input : None 133 | * Return : None 134 | *******************************************************************************/ 135 | void Host_IQueue_ClearAll(void) 136 | { 137 | uint8_t i; 138 | for(i = 0; i < IQUEUE_SIZE; i++) { 139 | Host_IQueue_Clear(i); 140 | } 141 | } 142 | 143 | 144 | /******************************************************************************* 145 | * Function Name : Host_IQueue_GetCount 146 | * Description : 147 | * Input : None 148 | * Return : None 149 | *******************************************************************************/ 150 | int8_t Host_IQueue_GetWorkIQueue(void) 151 | { 152 | uint8_t i; 153 | int8_t cnt = -1; 154 | 155 | for(i = 0; i < IQUEUE_SIZE; i++) { 156 | if(IQueue[i].IsEmpty == FALSE) { 157 | cnt++; 158 | } 159 | } 160 | 161 | return cnt; 162 | } 163 | 164 | 165 | 166 | 167 | 168 | /********************************************************************************************************* 169 | END FILE 170 | *********************************************************************************************************/ 171 | -------------------------------------------------------------------------------- /host/IQueue.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file IQueue.h 4 | * @author Left Radio 5 | * @version 6 | * @date 7 | * @brief header 8 | ****************************************************************************** 9 | **/ 10 | 11 | /* Define to prevent recursive inclusion -------------------------------------*/ 12 | #ifndef _IQUEUE__H 13 | #define _IQUEUE__H 14 | 15 | /* Includes ------------------------------------------------------------------*/ 16 | /* Exported define -----------------------------------------------------------*/ 17 | #define CMD_MAX_SIZE 10 18 | #define IQUEUE_SIZE 4 19 | 20 | /* Exported macro ------------------------------------------------------------*/ 21 | /* Exported typedef ----------------------------------------------------------*/ 22 | typedef struct { 23 | Boolean IsEmpty; 24 | uint8_t Data[CMD_MAX_SIZE]; 25 | uint8_t CMD_Index; 26 | } IQueue_TypeDef; 27 | 28 | /* Exported variables --------------------------------------------------------*/ 29 | /* Exported function ---------------------------------------------------------*/ 30 | void Host_IQueue_Initialization(void); 31 | void Host_SetIQueue(uint8_t* data, uint8_t cmd_index); 32 | IQueue_TypeDef* Host_GetIQueue(uint8_t index); 33 | uint8_t Host_IQueue_GetEmptyIndex(void); 34 | void Host_IQueue_Clear(uint8_t index); 35 | void Host_IQueue_ClearAll(void); 36 | int8_t Host_IQueue_GetWorkIQueue(void); 37 | 38 | 39 | 40 | #endif /* _IQUEUE__H */ 41 | /********************************************************************************************************* 42 | END FILE 43 | *********************************************************************************************************/ 44 | -------------------------------------------------------------------------------- /host/ReceiveStateMachine.c: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file ReceiveStateMachine.c 4 | * @author LeftRadio 5 | * @version V1.0.0 6 | * @date 7 | * @brief 8 | ****************************************************************************** 9 | **/ 10 | 11 | /* Includes ------------------------------------------------------------------*/ 12 | #include "stm32f10x.h" 13 | #include "Host.h" 14 | #include "HostCommands.h" 15 | #include "ReceiveStateMachine.h" 16 | 17 | /* Private typedef -----------------------------------------------------------*/ 18 | /* Private define ------------------------------------------------------------*/ 19 | /* Private macro -------------------------------------------------------------*/ 20 | /* Private variables ---------------------------------------------------------*/ 21 | __IO ReceivedStateMachine_TypeDef RStateMaschine; 22 | 23 | /* Private function prototypes -----------------------------------------------*/ 24 | /* Extern function ----------------------------------------------------------*/ 25 | /* Functions -----------------------------------------------------------------*/ 26 | 27 | /** 28 | * @brief ReceivedStateMachine_Reset 29 | * @param 30 | * @retval 31 | */ 32 | void ReceivedStateMachine_Reset(void) 33 | { 34 | uint8_t i; 35 | 36 | RStateMaschine.Stage = MSG_START; 37 | RStateMaschine.Complite = FALSE; 38 | RStateMaschine.Command_Index = 255; 39 | RStateMaschine.Data_Cnt = 0; 40 | 41 | for(i = 0; i < 10; i++) { 42 | RStateMaschine.Data[i] = 0; 43 | } 44 | } 45 | 46 | 47 | /** 48 | * @brief ReceivedStateMachine_Reset 49 | * @param 50 | * @retval 51 | */ 52 | void ReceivedStateMachine_Event(uint8_t byte) 53 | { 54 | uint8_t i; 55 | uint8_t control_crc; 56 | ReceivedStateMachine_TypeDef* Machine = (ReceivedStateMachine_TypeDef*)&RStateMaschine; 57 | 58 | 59 | switch(Machine->Stage) { 60 | 61 | /* Start frame, 0x5B expected byte */ 62 | case MSG_START: 63 | if (byte == 0x5B) { 64 | Machine->Stage = MSG_CODE; 65 | } 66 | else { 67 | ReceivedStateMachine_Reset(); 68 | return; 69 | } 70 | break; 71 | 72 | /* Message code byte */ 73 | case MSG_CODE: 74 | 75 | for(i = 0; i < HOST_CMD_CNT; i++) { 76 | if (byte == Host_Commands[i].Command[0]) { 77 | Machine->Command_Index = i; 78 | Machine->Stage = MSG_LEN; 79 | break; 80 | } 81 | } 82 | 83 | if (Machine->Stage != MSG_LEN) { 84 | ReceivedStateMachine_Reset(); 85 | return; 86 | } 87 | break; 88 | 89 | 90 | /* Message lenght byte */ 91 | case MSG_LEN: 92 | i = Machine->Command_Index; 93 | if ( (i != 255) && (byte == Host_Commands[i].Command[1]) ) { 94 | Machine->Stage = MSG_DATA; 95 | } 96 | else { 97 | ReceivedStateMachine_Reset(); 98 | return; 99 | } 100 | break; 101 | 102 | 103 | /* Message data */ 104 | case MSG_DATA: 105 | 106 | if (Machine->Data_Cnt >= Machine->Data[2] + 2) { 107 | Machine->Stage = MSG_END; 108 | } 109 | break; 110 | 111 | 112 | /* Message end, recive CRC byte */ 113 | case MSG_END: 114 | 115 | /* crc for all recived bytes and 1 byte with 0x00 value */ 116 | control_crc = CRC8_Buff( (uint8_t*)&Machine->Data[0], Machine->Data_Cnt + 1 ); 117 | if (control_crc == byte) { 118 | Machine->Stage = MSG_COMPLETE; 119 | } 120 | else { 121 | ReceivedStateMachine_Reset(); 122 | return; 123 | } 124 | break; 125 | 126 | 127 | /* Undefined stage, reset and return */ 128 | default: 129 | ReceivedStateMachine_Reset(); 130 | return; 131 | } 132 | 133 | 134 | Machine->Data[Machine->Data_Cnt] = byte; 135 | Machine->Data_Cnt += 1; 136 | 137 | /* Host command recived successfull */ 138 | if (Machine->Stage == MSG_COMPLETE) { 139 | ReceivedStateMachine_CompleteCallBack(Machine->Command_Index, Machine->Data); 140 | ReceivedStateMachine_Reset(); 141 | } 142 | } 143 | 144 | 145 | 146 | 147 | 148 | /********************************************************************************************************* 149 | END FILE 150 | *********************************************************************************************************/ 151 | -------------------------------------------------------------------------------- /host/ReceiveStateMachine.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file ReceivedStateMachine.h 4 | * @author Left Radio 5 | * @version 6 | * @date 7 | * @brief header 8 | ****************************************************************************** 9 | **/ 10 | 11 | /* Define to prevent recursive inclusion -------------------------------------*/ 12 | #ifndef _RECIVEIVE_STATE__H 13 | #define _RECIVEIVE_STATE__H 14 | 15 | /* Includes ------------------------------------------------------------------*/ 16 | /* Exported define -----------------------------------------------------------*/ 17 | /* Exported macro ------------------------------------------------------------*/ 18 | /* Exported typedef ----------------------------------------------------------*/ 19 | typedef enum { MSG_START, MSG_CODE, MSG_LEN, MSG_DATA, MSG_END, MSG_COMPLETE } ReceivedStates_TypeDef; 20 | typedef struct 21 | { 22 | ReceivedStates_TypeDef Stage; 23 | uint8_t Data[10]; 24 | uint8_t Data_Cnt; 25 | uint8_t Command_Index; 26 | Boolean Complite; 27 | } ReceivedStateMachine_TypeDef; 28 | 29 | /* Exported variables --------------------------------------------------------*/ 30 | /* Exported function ---------------------------------------------------------*/ 31 | void ReceivedStateMachine_Reset(void); 32 | void ReceivedStateMachine_Event(uint8_t byte); 33 | 34 | __attribute__((weak)) void ReceivedStateMachine_CompleteCallBack(uint8_t command_index, uint8_t* command_data); 35 | 36 | 37 | 38 | 39 | #endif /* _RECIVEIVE_STATE__H */ 40 | /********************************************************************************************************* 41 | END FILE 42 | *********************************************************************************************************/ 43 | -------------------------------------------------------------------------------- /init.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file init.c 4 | * @author LeftRadio 5 | * @version V1.0.0 6 | * @date 7 | * @brief Main Init Peripherals header file. 8 | ****************************************************************************** 9 | **/ 10 | 11 | #ifndef __INIT_H 12 | #define __INIT_H 13 | 14 | /* Includes ------------------------------------------------------------------*/ 15 | /* Exported typedef ----------------------------------------------------------*/ 16 | /* Exported define -----------------------------------------------------------*/ 17 | /* Exported variables --------------------------------------------------------*/ 18 | /* Exported function ---------------------------------------------------------*/ 19 | void User_I2C_Init(void); 20 | void User_I2C_Deinit(void); 21 | void Global_Init(void); 22 | void External_Peripheral_Init(void); 23 | void Start_Bootloader(void); 24 | void Delay_ms (uint16_t mS); 25 | void Init_Inerlive_GPIO(void); 26 | int8_t Host_Comunication_Configuration(void* host_mode); 27 | 28 | 29 | 30 | #endif /* __INIT_H */ 31 | /********************************************************************************************************* 32 | END FILE 33 | *********************************************************************************************************/ 34 | -------------------------------------------------------------------------------- /interface/Advanced_Menu.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file Advanced_Menu.h 4 | * @author Left Radio 5 | * @version 1.0.0 6 | * @date 7 | * @brief NeilScope3 Advanced Menu header 8 | ****************************************************************************** 9 | **/ 10 | 11 | #ifndef __ADVANCED_MENU_H 12 | #define __ADVANCED_MENU_H 13 | 14 | /* Includes ------------------------------------------------------------------*/ 15 | #include "HX8352_Library.h" 16 | 17 | /* Exported typedef -----------------------------------------------------------*/ 18 | /* Exported define -----------------------------------------------------------*/ 19 | /* Exported variables --------------------------------------------------------*/ 20 | //extern FunctionalState VisibleQuickMenu; 21 | //extern btnINFO Interpolation, BeepEN, AutoPowerOFF; 22 | //extern char AutoPowerOFF_btnTxt[13]; 23 | 24 | /* Private function prototypes -----------------------------------------------*/ 25 | /* Exported function --------------------------------------------------------*/ 26 | 27 | 28 | #endif /* __ADVANCED_MENU_H */ 29 | /********************************************************************************************************* 30 | END FILE 31 | *********************************************************************************************************/ 32 | -------------------------------------------------------------------------------- /interface/ChannelsMenu.h: -------------------------------------------------------------------------------- 1 | /************************************************************************************* 2 | * 3 | Description : NeilScope3 Quick Menu header 4 | Version : 1.0.0 5 | Date : 7.12.2011 6 | Author : Left Radio 7 | Comments : 8 | * 9 | **************************************************************************************/ 10 | 11 | #ifndef __CHENNELS_MENU_H 12 | #define __CHENNELS_MENU_H 13 | 14 | /* Includes ------------------------------------------------------------------*/ 15 | /* Exported typedef ----------------------------------------------------------*/ 16 | /* Exported define -----------------------------------------------------------*/ 17 | /* Exported variables --------------------------------------------------------*/ 18 | /* Exported function --------------------------------------------------------*/ 19 | void Draw_Channels_Menu(void); 20 | void Change_Channel_Menu_indx(void); 21 | 22 | void Correct_AnalogZero_CH_A(void); 23 | void Correct_AnalogZero_CH_B(void); 24 | 25 | void OFFSET_CH_A(void); 26 | void OFFSET_CH_B(void); 27 | 28 | void AutoDivider_A(void); 29 | void AutoDivider_B(void); 30 | 31 | void Change_COLOR_CH_A(void); 32 | void Change_COLOR_CH_B(void); 33 | 34 | void Change_TextColor_CH_A(void); 35 | void Change_TextColor_CH_B(void); 36 | 37 | void Intrlive_Correct(void); 38 | 39 | #endif /* __CHENNELS_MENU_H */ 40 | /********************************************************************************************************* 41 | END FILE 42 | *********************************************************************************************************/ 43 | -------------------------------------------------------------------------------- /interface/Digit_Trig_Menu.h: -------------------------------------------------------------------------------- 1 | /************************************************************************************* 2 | * 3 | Description : NeilScope3 Digit Trig Menu header 4 | Version : 1.0.0 5 | Date : 25.04.2012 6 | Author : Left Radio 7 | Comments : 8 | * 9 | **************************************************************************************/ 10 | 11 | #ifndef __DIGIT_TRIG_MENU_H 12 | #define __DIGIT_TRIG_MENU_H 13 | 14 | /* Includes ------------------------------------------------------------------*/ 15 | /* Exported typedef -----------------------------------------------------------*/ 16 | /* Exported define -----------------------------------------------------------*/ 17 | 18 | /* Exported variables --------------------------------------------------------*/ 19 | /* Private function --------------------------------------------------------*/ 20 | /* Exported function --------------------------------------------------------*/ 21 | static void Change_Digit_Trig_Menu(void); 22 | 23 | 24 | #endif /* __DIGIT_TRIG_MENU_H */ 25 | /********************************************************************************************************* 26 | END FILE 27 | *********************************************************************************************************/ 28 | 29 | -------------------------------------------------------------------------------- /interface/Meas_Menu.c: -------------------------------------------------------------------------------- 1 | /************************************************************************************* 2 | * 3 | Description : NeilScope3 Measurment menu sourse 4 | Version : 1.0.0 5 | Date : 7.12.2011 6 | Author : Left Radio 7 | Comments : 8 | * 9 | **************************************************************************************/ 10 | 11 | /* Includes ------------------------------------------------------------------*/ 12 | #include 13 | 14 | #include "main.h" 15 | #include "Meas_Menu.h" 16 | #include "User_Interface.h" 17 | #include "Measurments.h" 18 | #include "Processing_and_output.h" 19 | #include "Settings.h" 20 | #include "MeasButtons.h" 21 | 22 | /* Private typedef -----------------------------------------------------------*/ 23 | /* Private define ------------------------------------------------------------*/ 24 | /* Private macro -------------------------------------------------------------*/ 25 | /* Private variables ---------------------------------------------------------*/ 26 | uint8_t numMeasMenu = Menu_1; 27 | 28 | /* Private function prototypes -----------------------------------------------*/ 29 | static void ChangeMeasCursors(uint16_t *MeasCursor); 30 | static void DrawMeasModeText(uint8_t Ypos, uint16_t Color); 31 | static void MeasMenuCallBack(DrawState NewDrawState); 32 | 33 | /* Exported variables --------------------------------------------------------*/ 34 | Menu_Struct_TypeDef MeasMenu = { 35 | { LeftLineBtn, LowerBtn, (LeftLineBtn + btnWidht), UpLineBtn }, 36 | DISABLE, 37 | 0, 38 | MeasButtonsMAX, 39 | MeasButtonsMAX, 40 | MeasButtonsMAX, 41 | M_NTH, 42 | DOWN, 43 | UP, 44 | { &btnMeasCursor1, &btnMeasCursor2, &btnMeasMode }, 45 | &MeasMenuCallBack, 46 | }; 47 | 48 | 49 | /* Functions ------------------------------------------------------------*/ 50 | 51 | /******************************************************************************* 52 | * Function Name : MeasMenuCallBack 53 | * Description : спецфичные действия для меню при отрисовке и очистке 54 | * Input : NewDrawState 55 | * Return : None 56 | *******************************************************************************/ 57 | static void MeasMenuCallBack(DrawState NewDrawState) 58 | { 59 | /* очищаем */ 60 | LCD_ClearArea(LeftLineMeas, lowerLimit + 6, 398, upperLimit - 6, Active_BackColor); 61 | 62 | if(NewDrawState == DRAW) 63 | { 64 | if(rightLimit != 304) Change_horizontal_size(304); // Изменяем размер области осциллограм 65 | Init_Meas_Values(); 66 | LCD_SetGraphicsColor(Active_BorderColor); 67 | LCD_DrawLine(leftLimit, lowerLimit + 5, leftLimit, upperLimit - 5); 68 | 69 | LCD_SetTextColor(gInterfaceMenu.Buttons[1]->Active_FontColor); // установить цвет текста 70 | DrawMeasModeText(CHA_SW_Ypos, INFO_A.Color); 71 | LCD_SetTextColor(gInterfaceMenu.Buttons[2]->Active_FontColor); // установить цвет текста 72 | DrawMeasModeText(0, INFO_B.Color); 73 | } 74 | else if(NewDrawState == CLEAR) 75 | { 76 | /* очищаем */ 77 | Draw_Cursor_Meas_Line(measCursor1, CLEAR); 78 | Draw_Cursor_Meas_Line(measCursor2, CLEAR); 79 | Change_horizontal_size(399); // изменяем размер области вывода осциллограмм 80 | } 81 | } 82 | 83 | 84 | /******************************************************************************* 85 | * Function Name : ChangeMeasCursor_1 86 | * Description : 87 | * Input : None 88 | * Return : None 89 | *******************************************************************************/ 90 | void ChangeMeasCursor_1(void) 91 | { 92 | ChangeMeasCursors(&measCursor1); 93 | } 94 | 95 | 96 | /******************************************************************************* 97 | * Function Name : ChangeMeasCursor_1 98 | * Description : 99 | * Input : None 100 | * Return : None 101 | *******************************************************************************/ 102 | void ChangeMeasCursor_2(void) 103 | { 104 | ChangeMeasCursors(&measCursor2); 105 | } 106 | 107 | 108 | /******************************************************************************* 109 | * Function Name : ChangeMeasCursor 110 | * Description : 111 | * Input : None 112 | * Return : None 113 | *******************************************************************************/ 114 | static void ChangeMeasCursors(uint16_t *MeasCursor) 115 | { 116 | uint16_t tLeftLim = (ActiveMode == &FFT_MODE)? leftLimit + 20 : leftLimit + 2; 117 | uint16_t tRightLim = (ActiveMode == &FFT_MODE)? leftLimit + 20 + 256 : rightLimit - 2; 118 | int8_t X_Chg; 119 | 120 | if((ButtonsCode == RIGHT) && (*MeasCursor < tRightLim)) 121 | { 122 | Draw_Cursor_Meas_Line(*MeasCursor, CLEAR); 123 | if(speed_up_cnt++ >= 10) X_Chg = 5; 124 | else X_Chg = 1; 125 | } 126 | else if((ButtonsCode == LEFT) && (*MeasCursor > tLeftLim)) // push button Right 127 | { 128 | Draw_Cursor_Meas_Line(*MeasCursor, CLEAR); 129 | if(speed_up_cnt++ >= 10) X_Chg = -5; 130 | else X_Chg = -1; 131 | } 132 | else return; 133 | 134 | (*MeasCursor) = (*MeasCursor) + X_Chg; 135 | if(*MeasCursor < tLeftLim) *MeasCursor = tLeftLim; 136 | else if(*MeasCursor > tRightLim) *MeasCursor = tRightLim; 137 | 138 | if((*MeasCursor == measCursor1) && (*MeasCursor > (measCursor2 - 2))) *MeasCursor = measCursor2 - 2; 139 | else if((*MeasCursor == measCursor2) && (*MeasCursor < (measCursor1 + 2))) *MeasCursor = measCursor1 + 2; 140 | 141 | Draw_Cursor_Meas_Line(*MeasCursor, DRAW); 142 | } 143 | 144 | 145 | /******************************************************************************* 146 | * Function Name : ChangeMeasCursor 147 | * Description : 148 | * Input : None 149 | * Return : None 150 | *******************************************************************************/ 151 | void ChangeMeasMode(void) 152 | { 153 | static int8_t indx = 0; 154 | 155 | if(ActiveMode == &FFT_MODE) return; 156 | 157 | if(ButtonsCode == RIGHT) indx = 1; 158 | else if(ButtonsCode == LEFT) indx = 0; 159 | else return; 160 | 161 | mModeActive = (MeasMode_TypeDef*)&MeasurmentsMode[indx]; 162 | Draw_Menu(&MeasMenu); 163 | } 164 | 165 | 166 | /******************************************************************************* 167 | * Function Name : DrawMeasModeText 168 | * Description : 169 | * Input : None 170 | * Return : None 171 | *******************************************************************************/ 172 | static void DrawMeasModeText(uint8_t Ypos, uint16_t Color) 173 | { 174 | if(mModeActive->indx == 0) 175 | { 176 | LCD_PutStrig(LeftLineMeas, mFRTH_YPOS + Ypos, 1, " Vpp:"); 177 | LCD_PutStrig(LeftLineMeas, mTHRD_YPOS + Ypos, 1, " dT :"); 178 | LCD_PutStrig(LeftLineMeas, mSECND_YPOS + Ypos, 1, " Vdc:"); 179 | LCD_PutStrig(LeftLineMeas, mFRST_YPOS + Ypos, 1, " RMS:"); 180 | LCD_PutStrig(LeftLineMeas, mBASE_YPOS + Ypos, 1, " DC%:"); 181 | } 182 | else if(mModeActive->indx == 1) 183 | { 184 | LCD_PutStrig(LeftLineMeas, mFRTH_YPOS + Ypos, 1, " V 1:"); 185 | LCD_PutStrig(LeftLineMeas, mTHRD_YPOS + Ypos, 1, " V 2:"); 186 | LCD_PutStrig(LeftLineMeas, mSECND_YPOS + Ypos, 1, " max:"); 187 | LCD_PutStrig(LeftLineMeas, mFRST_YPOS + Ypos, 1, " min:"); 188 | LCD_PutStrig(LeftLineMeas, mBASE_YPOS + Ypos, 1, " F:"); 189 | } 190 | else if(mModeActive->indx == 2) 191 | { 192 | LCD_PutStrig(LeftLineMeas, mFRTH_YPOS + Ypos, 1, " F C1:"); 193 | LCD_PutStrig(LeftLineMeas, mTHRD_YPOS + Ypos, 1, " F C2:"); 194 | 195 | LCD_PutStrig(LeftLineMeas, mBASE_YPOS + Ypos, 1, " F H1:"); 196 | } 197 | } 198 | 199 | 200 | -------------------------------------------------------------------------------- /interface/Meas_Menu.h: -------------------------------------------------------------------------------- 1 | /************************************************************************************* 2 | * 3 | Description : NeilScope3 Measurment menu header 4 | Version : 1.0.0 5 | Date : 7.12.2011 6 | Author : Left Radio 7 | Comments : 8 | * 9 | **************************************************************************************/ 10 | 11 | #ifndef __MEAS_MENU_H 12 | #define __MEAS_MENU_H 13 | 14 | 15 | /* Includes ------------------------------------------------------------------*/ 16 | //#include "HX8352_Library.h" 17 | 18 | /* Exported typedef ----------------------------------------------------------*/ 19 | 20 | /* Exported define -----------------------------------------------------------*/ 21 | #define Menu_1 2 22 | #define Menu_2 3 23 | 24 | /* Exported variables --------------------------------------------------------*/ 25 | extern uint8_t tmpAutoMeas, numMeasMenu; 26 | 27 | /* Private function prototypes -----------------------------------------------*/ 28 | 29 | /* Exported function ---------------------------------------------------------*/ 30 | extern void ChangeMeasCursor_1(void); 31 | extern void ChangeMeasCursor_2(void); 32 | extern void ChangeMeasMode(void); 33 | 34 | #endif /* __MEAS_MENU_H */ 35 | /********************************************************************************************************* 36 | END FILE 37 | *********************************************************************************************************/ 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /interface/Quick_Menu.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file Quick_Menu.h 4 | * @author Left Radio 5 | * @version 1.5.6 6 | * @date 7 | * @brief NeilScope3 Quick Menu header 8 | ****************************************************************************** 9 | **/ 10 | 11 | #ifndef __QUICK_MENU_H 12 | #define __QUICK_MENU_H 13 | 14 | /* Includes ------------------------------------------------------------------*/ 15 | #include "HX8352_Library.h" 16 | 17 | /* Exported typedef -----------------------------------------------------------*/ 18 | /* Exported define -----------------------------------------------------------*/ 19 | /* Exported variables --------------------------------------------------------*/ 20 | extern FunctionalState VisibleQuickMenu; 21 | extern btnINFO Interpolation, BeepEN, AutoPowerOFF; 22 | extern char AutoPowerOFF_btnTxt[13]; 23 | 24 | /* Private function prototypes -----------------------------------------------*/ 25 | /* Exported function --------------------------------------------------------*/ 26 | 27 | 28 | #endif /* __QUICK_MENU_H */ 29 | /********************************************************************************************************* 30 | END FILE 31 | *********************************************************************************************************/ 32 | -------------------------------------------------------------------------------- /interface/TimeScale_Menu.c: -------------------------------------------------------------------------------- 1 | /************************************************************************************* 2 | * 3 | Description : NeilScope3 Time Scale Menu sourse 4 | Version : 1.0.0 5 | Date : 7.12.2011 6 | Author : Left Radio 7 | Comments: 8 | * 9 | **************************************************************************************/ 10 | 11 | /* Includes ------------------------------------------------------------------*/ 12 | #include 13 | 14 | #include "main.h" 15 | #include "init.h" 16 | #include "TimeScale_Menu.h" 17 | #include "User_Interface.h" 18 | #include "Trig_Menu.h" 19 | #include "Settings.h" 20 | #include "Processing_and_output.h" 21 | #include "EPM570.h" 22 | #include "Synchronization.h" 23 | #include "Sweep.h" 24 | 25 | /* Private typedef -----------------------------------------------------------*/ 26 | /* Private define ------------------------------------------------------------*/ 27 | /* Private macro -------------------------------------------------------------*/ 28 | /* Private variables ---------------------------------------------------------*/ 29 | __IO int32_t nI = 1; 30 | 31 | /* Private function prototypes -----------------------------------------------*/ 32 | /* Functions ----------------------------------------------------------------*/ 33 | 34 | /******************************************************************************* 35 | * Function Name : Draw_Time_Scale_Menu 36 | * Description : 37 | * Input : None 38 | * Return : None 39 | *******************************************************************************/ 40 | static void Update_TimeScale_Menu_Text(void) 41 | { 42 | static char Text[40] = {' ', ' '}; 43 | uint8_t tmpY = (TriggShowInfo.Status == ENABLE)? (upperLimit - 34) : (upperLimit - 20); 44 | 45 | LCD_PutColorStrig(leftLimit + 5, tmpY, 1, Text, globalBackColor); 46 | memset(&Text[2], 0, 38); 47 | 48 | ConvertToString(gOSC_MODE.oscNumPoints, &Text[2], 6); 49 | strcat(Text, " samples | "); 50 | ConvertToString(gSamplesWin.WindowPosition, &Text[strlen(Text)], 3); 51 | strcat(Text, " win pos"); 52 | 53 | LCD_PutColorStrig(leftLimit + 5, tmpY, 0, Text, LighGreen); 54 | } 55 | 56 | 57 | /******************************************************************************* 58 | * Function Name : Draw_Time_Scale_Menu 59 | * Description : 60 | * Input : None 61 | * Return : None 62 | *******************************************************************************/ 63 | void Draw_TimeScale_Menu(DrawState NewDrawState) 64 | { 65 | uint8_t tmpY = (TriggShowInfo.Status == ENABLE)? (TriggShowInfo.Y0 - 14) : (TriggShowInfo.Y0); 66 | uint16_t tmpX = centerX + 25; 67 | 68 | if(NewDrawState == DRAW) 69 | { 70 | Set_New_ClipObject(leftLimit - 1, tmpY, tmpX, tmpY + 15, IN_OBJECT, TsMNU_ClipObj); 71 | Update_TimeScale_Menu_Text(); 72 | } 73 | else 74 | { 75 | LCD_ClearArea(leftLimit + 1, tmpY, tmpX, tmpY + 14, Active_BackColor); 76 | Clear_ClipObject(TsMNU_ClipObj); 77 | LCD_DrawGrid(&activeAreaGrid, DRAW); 78 | } 79 | 80 | Update_Oscillogram(); 81 | } 82 | 83 | 84 | /******************************************************************************* 85 | * Function Name : Draw_Time_Scale_Menu 86 | * Description : 87 | * Input : None 88 | * Return : None 89 | *******************************************************************************/ 90 | void Reset_TimeScale_Menu(void) 91 | { 92 | nI = 1; 93 | } 94 | 95 | 96 | /******************************************************************************* 97 | * Function Name : TimeScale_Menu 98 | * Description : 99 | * Input : None 100 | * Return : None 101 | *******************************************************************************/ 102 | void TimeScale_Menu(void) 103 | { 104 | uint16_t max_win_num; 105 | static int16_t old_WindowPosition = -1; 106 | static uint16_t old_WindowsNum = 0xFFFF; 107 | int16_t new_WindowPosition = gSamplesWin.WindowPosition; 108 | uint16_t new_WindowsNum = gSamplesWin.WindowsNum; 109 | 110 | if(ButtonsCode == OK) 111 | { 112 | Draw_TimeScale_Menu(CLEAR); 113 | pMNU = Change_Menu_Indx; // изменяем указатель на функцию основного меню 114 | Draw_btnTIME_SCALE(activeButton); 115 | return; 116 | } 117 | else if(ButtonsCode != NO_Push) 118 | { 119 | if(((ButtonsCode == UP) || (ButtonsCode == DOWN)) && (gOSC_MODE.State != STOP)) 120 | { 121 | if(ButtonsCode == UP) new_WindowsNum++; 122 | else new_WindowsNum--; 123 | } 124 | else if((ButtonsCode == LEFT) || (ButtonsCode == RIGHT)) 125 | { 126 | if(ButtonsCode == LEFT) new_WindowPosition--; 127 | else new_WindowPosition++; 128 | } 129 | 130 | max_win_num = 128000 / (gSamplesWin.WindowWidh * (*SweepScale)); 131 | 132 | if( new_WindowsNum > max_win_num){ new_WindowsNum = max_win_num; } 133 | else if(new_WindowsNum < 1){ new_WindowsNum = 1; } 134 | 135 | if(new_WindowPosition < 0){ new_WindowPosition = 0; } 136 | else if(new_WindowPosition >= new_WindowsNum){ new_WindowPosition = new_WindowsNum - 1; } 137 | 138 | 139 | if((old_WindowPosition != new_WindowPosition) || (old_WindowsNum != new_WindowsNum)) 140 | { 141 | /* Clear trig X cursor if needed */ 142 | btnTIME_SCALE_trigX_Update(CLEAR); 143 | DrawTrig_PosX(CLEAR, &trigPosX_cursor); 144 | 145 | /* Aplly new position for active window and new num windows */ 146 | gSamplesWin.WindowPosition = new_WindowPosition; 147 | gSamplesWin.WindowsNum = new_WindowsNum; 148 | 149 | /* Calc new number points */ 150 | gOSC_MODE.oscNumPoints = (gSamplesWin.WindowWidh * gSamplesWin.WindowsNum) / (*SweepScale); 151 | 152 | /* If number points now < trigger X position */ 153 | if((gOSC_MODE.oscNumPoints * (*SweepScale)) < trigPosX_cursor.Position) 154 | { 155 | trigPosX_cursor.Position = gOSC_MODE.oscNumPoints - (gSamplesWin.WindowWidh / 2); 156 | trigPosX_cursor.WindowPosition = gSamplesWin.WindowPosition; 157 | } 158 | 159 | /* If Stop state read data and update oscillograms */ 160 | if(gOSC_MODE.State == STOP) 161 | { 162 | EPM570_SRAM_Read(); 163 | Update_Oscillogram(); //обновлем осциллограммы 164 | } 165 | 166 | /* Set new position for trig X */ 167 | gSyncState.foops->SetTrigg_X(trigPosX_cursor.Position - leftLimit); 168 | 169 | /* Update trig X cursor if needed */ 170 | DrawTrig_PosX(DRAW, &trigPosX_cursor); 171 | 172 | /* Draw timeScale button */ 173 | Draw_btnTIME_SCALE(activeButton); 174 | Update_TimeScale_Menu_Text(); 175 | 176 | old_WindowPosition = gSamplesWin.WindowPosition; 177 | old_WindowsNum = gSamplesWin.WindowsNum; 178 | } 179 | } 180 | } 181 | 182 | 183 | 184 | -------------------------------------------------------------------------------- /interface/TimeScale_Menu.h: -------------------------------------------------------------------------------- 1 | /************************************************************************************* 2 | * 3 | Description : NeilScope3 Time Scale Menu header 4 | Version : 1.0.0 5 | Date : 7.12.2011 6 | Author : Left Radio 7 | Comments : 8 | * 9 | **************************************************************************************/ 10 | 11 | #ifndef __TIME_SCALE_MNU_H 12 | #define __TIME_SCALE_MNU_H 13 | 14 | /* Includes ------------------------------------------------------------------*/ 15 | #include "HX8352_Library.h" 16 | 17 | /* Exported typedef -----------------------------------------------------------*/ 18 | /* Exported define -----------------------------------------------------------*/ 19 | /* Exported variables --------------------------------------------------------*/ 20 | /* Private function prototypes -----------------------------------------------*/ 21 | /* Exported function --------------------------------------------------------*/ 22 | void Draw_TimeScale_Menu(DrawState NewDrawState); 23 | void Reset_TimeScale_Menu(void); 24 | void TimeScale_Menu(void); 25 | 26 | #endif /* __TIME_SCALE_MNU_H */ 27 | /********************************************************************************************************* 28 | END FILE 29 | *********************************************************************************************************/ 30 | -------------------------------------------------------------------------------- /interface/Trig_Menu.h: -------------------------------------------------------------------------------- 1 | /************************************************************************************* 2 | * 3 | Description : NeilScope3 Trig Menu header 4 | Version : 1.0.0 5 | Date : 7.12.2011 6 | Author : Left Radio 7 | Comments: 8 | * 9 | **************************************************************************************/ 10 | 11 | #ifndef __TRIG_MENU_H 12 | #define __TRIG_MENU_H 13 | 14 | 15 | /* Includes ------------------------------------------------------------------*/ 16 | #include "HX8352_Library.h" 17 | 18 | /* Exported typedef ----------------------------------------------------------*/ 19 | typedef struct /* тип данных курсоров триггера */ 20 | { 21 | int32_t Position; 22 | int16_t WindowPosition; 23 | uint16_t Color; 24 | char* Name; 25 | Boolean Visible; 26 | Boolean Drawed; 27 | } TrigCursorINFO; 28 | 29 | 30 | typedef struct /* тип данных параметров триггера для вывода на экран */ 31 | { 32 | char *triggType_Name[8]; 33 | const uint16_t X0; 34 | const uint16_t Y0; 35 | char Text[60]; 36 | FunctionalState Status; 37 | } TriggShowInfo_TypeDef; 38 | 39 | 40 | /* Exported define -----------------------------------------------------------*/ 41 | #define trgHeigth 0 42 | #define trgLow 1 43 | 44 | /* Exported variables --------------------------------------------------------*/ 45 | extern TrigCursorINFO *pntTrigCursor; 46 | extern TrigCursorINFO Height_Y_cursor, Low_Y_cursor, trigPosX_cursor; // курсоры триггера 47 | extern TriggShowInfo_TypeDef TriggShowInfo; 48 | extern const char Trigg_Sourse_Sync_Text[3][10]; 49 | 50 | 51 | /* Private function prototypes -----------------------------------------------*/ 52 | void Update_SyncSourse_Texts(void); 53 | void Trigg_SyncType(void); 54 | void Trigg_SyncSourse(void); 55 | void Change_H_CursorLevel(void); 56 | void Change_L_CursorLevel(void); 57 | void Sync_ChangeLevel(TrigCursorINFO *Cursor, int16_t Diff); 58 | void Hide_Show_triggInfo(void); 59 | void Draw_Trigg_Info(FunctionalState NewState); 60 | 61 | /* Exported function ---------------------------------------------------------*/ 62 | extern void SetActiveTrigCursor(TrigCursorINFO *pTrigcursor); // Функция установки "активного" курсора для триггера 63 | extern void Draw_Trig_Menu_Buttons(uint8_t Draw); // Функция включения/выключения меню триггера 64 | extern void Change_Trig_Menu_indx(void); // Функция смены индекса меню триггера 65 | extern void Change_Trig_X_Y_onMainMenu(void); // Функция изменения уровней триггера из основного меню 66 | extern void Trigg_Position_X(void); 67 | extern void Update_triggInfo_OnScreen(DrawState NewDrawState); 68 | 69 | 70 | 71 | 72 | 73 | #endif /* __TRIG_MENU_H */ 74 | /********************************************************************************************************* 75 | END FILE 76 | *********************************************************************************************************/ 77 | 78 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /interface/User_Interface.h: -------------------------------------------------------------------------------- 1 | /************************************************************************************* 2 | * 3 | Description : NeilScope3 User Interface header 4 | Version : 1.0.0 5 | Date : 7.12.2011 6 | Author : Left Radio 7 | Comments : 8 | * 9 | **************************************************************************************/ 10 | 11 | #ifndef __USER_INTERFACE_H 12 | #define __USER_INTERFACE_H 13 | 14 | /* Includes ------------------------------------------------------------------*/ 15 | #include "main.h" 16 | #include "Trig_Menu.h" 17 | #include "TimeScale_Menu.h" 18 | #include "colors-5-6-5.h" 19 | 20 | /* Exported typedef -----------------------------------------------------------*/ 21 | typedef enum { M_SKIP = (uint8_t)0, M_CLEAR = (uint8_t)1, M_NTH = (uint8_t)2 } Menu_MaxIndexState_Typedef; 22 | typedef struct 23 | { 24 | uint16_t Coord[4]; 25 | const FunctionalState Clip; 26 | const uint8_t ClipObjIndx; 27 | uint8_t StartButton; 28 | const uint8_t MaxButton; 29 | uint8_t Indx; 30 | Menu_MaxIndexState_Typedef MaxIndexState; 31 | uint8_t ChangeIndButton_UP; 32 | uint8_t ChangeIndButton_DOWN; 33 | btnINFO *Buttons[16]; 34 | void (*MenuCallBack)(DrawState NewDrawState); 35 | 36 | } Menu_Struct_TypeDef; 37 | 38 | typedef struct 39 | { 40 | uint16_t Coord[4]; 41 | char *Text; 42 | uint16_t Color; 43 | uint8_t TimeShow; 44 | uint32_t TimeOFF; 45 | Boolean Visible; 46 | } Message_TypeDef; 47 | 48 | typedef enum {SAVE = (uint8_t)0, RESTORE = (uint8_t)1} SavedState_TypeDef; 49 | 50 | /* Exported define -----------------------------------------------------------*/ 51 | #define NO_Border 0 52 | #define NO_activeButton 0 53 | #define activeButton 1 54 | 55 | #define btn_ForeColor DarkAuqa 56 | #define btn_CH_A_ForeColor DarkOrange2 57 | #define btn_CH_B_ForeColor DarkAuqa 58 | #define btn_activeForeColor DarkOrange 59 | #define btn_FontColor White 60 | 61 | /* ID for clip objects */ 62 | #define ColorMN_ClipObj 1 63 | #define trgMenu_ClipObj 2 64 | #define trgINFO_ClipObj 3 65 | #define Digit_ClipObj 4 66 | #define qMenu_ClipObj 5 67 | #define TsMNU_ClipObj 6 68 | #define AutoCorr_ClipObj 7 69 | #define ChannelsMenu_ClipObj 8 70 | #define ActiveArea_ClipObj 9 71 | #define Message_ClipObj 10 72 | #define ShowFreq_ClipObj 11 73 | #define Auto_ClipObj 12 74 | 75 | #define MenuMax 7 76 | 77 | /* Exported variables --------------------------------------------------------*/ 78 | extern Menu_Struct_TypeDef gInterfaceMenu, QuickMenu, ChannelA_Menu; 79 | extern Menu_Struct_TypeDef ChannelB_Menu, DigitTrigMenu, TrigMenu, MeasMenu; 80 | extern Menu_Struct_TypeDef AdvancedMenu; 81 | extern Menu_Struct_TypeDef *pAll_Menu[7]; 82 | extern Menu_Struct_TypeDef *pMenu; 83 | 84 | extern GridType activeAreaGrid; 85 | extern Message_TypeDef gMessage; 86 | 87 | extern uint8_t indxColorA, indxColorB; 88 | extern uint8_t indxTextColorA, indxTextColorB; 89 | extern uint8_t indxColorButtons; 90 | extern uint8_t indxColorGrid; 91 | 92 | extern uint16_t leftLimit, rightLimit, upperLimit, lowerLimit; 93 | extern uint16_t centerX, centerY; 94 | 95 | extern uint16_t globalBackColor; 96 | extern uint16_t Active_BackColor; 97 | extern uint16_t Active_BorderColor; 98 | 99 | extern const char sweepMODE_text[4][10]; 100 | 101 | /* Exported function --------------------------------------------------------*/ 102 | void Draw_Logo(void); 103 | void Draw_Interface(void); 104 | void Save_ReDraw_Auto_Meas(SavedState_TypeDef State); 105 | 106 | void UI_ShowFPS(uint8_t FPS_counter); 107 | void UI_SamplingSetTimeout(uint16_t TextColor); 108 | void UI_SamplingClearTimeout(void); 109 | 110 | void UI_Update_CH_Cursors(void); 111 | void Draw_Cursor_CH(CH_INFO_TypeDef* Channel, uint16_t color); // отрисовка курсора канала А/B 112 | void DrawTrig_PosX(DrawState NewState, TrigCursorINFO *TrigCursor); // отрисовка указателя курсора позиции срабатывания триггера 113 | void Draw_Cursor_Trig(DrawState NewState, uint16_t ClearColor, uint16_t TextColor); // отрисовка курсора триггера 114 | void Draw_Cursor_Trig_Line(DrawState NewState, TrigCursorINFO *TrigCursor); // отрисовка линии курсора триггера 115 | void UpdateAllCursors(void); 116 | void Draw_Cursor_Meas_Line(uint16_t cursor, DrawState NewState); // отрисовка линии курсора автоизмерений 117 | void btnTIME_SCALE_trigX_Update(DrawState NewState); 118 | void Draw_btnTIME_SCALE(uint8_t active); 119 | void Draw_Batt(uint8_t charge_level, uint8_t upd); 120 | uint16_t Verify_Grid_Match(uint16_t X, uint16_t Y); 121 | 122 | void Clear_Message(void); 123 | void Show_Message(char *Text); 124 | 125 | void Init_COLOR_Mn(uint8_t Leight, uint16_t *ColorMassive); 126 | void Draw_COLOR_Mn(uint8_t Leight); 127 | DrawState Get_State_COLOR_Mn(void); 128 | void Clear_COLOR_Mn(void); 129 | void Change_COLOR_Mn_Position(uint16_t Position, uint16_t *OutColor); 130 | 131 | void FrequencyMeas_Draw(Boolean NewStatus); 132 | void FrequencyMeas_SaveRestore_State(uint8_t Save, Boolean *SaveRestoreStatus); 133 | 134 | void BackLightPowerState_UpdateButton(void); 135 | 136 | void Beep_Start(void); 137 | void Beep_Stop(void); 138 | 139 | void ConvertToString(uint32_t Num, char* Str, uint8_t NumSymbol); 140 | 141 | void mSet_AllButtons_Color(uint16_t NewColor); 142 | void mSet_Button_Color(Menu_Struct_TypeDef *btnMenu, uint16_t NewColor); 143 | 144 | void setActiveButton(btnINFO *Btn); 145 | 146 | void Draw_Menu(Menu_Struct_TypeDef *Menu); 147 | void ReDraw_Menu(Menu_Struct_TypeDef *ReDrawMenu, btnINFO *Button); 148 | void Clear_Menu(Menu_Struct_TypeDef *Menu); 149 | void Change_Menu_Indx(void); 150 | void SetActiveMenu(Menu_Struct_TypeDef *NewActiveMenu); 151 | 152 | void UI_BackLightPowerState_UpdateButton(void); 153 | void UI_LoadPreferenceUpdate(void); 154 | 155 | /* Смена активной области вывода по горизонтали ---------------------------------*/ 156 | void Change_horizontal_size(uint16_t NEW_rightLimit); 157 | 158 | 159 | 160 | 161 | #endif /* __USER_INTERFACE_H */ 162 | /********************************************************************************************************* 163 | END FILE 164 | *********************************************************************************************************/ 165 | 166 | -------------------------------------------------------------------------------- /interface/buttons/Advanced_Menu_buttons.h: -------------------------------------------------------------------------------- 1 |  2 | 3 | #define _ADVANCED_BUTTONS_MAX_ 7 4 | 5 | #define btnHight 16 6 | #define btnWidth 110 7 | #define btnSW 2 8 | #define advLeftLineBtn 120 9 | #define LowerBtn 22 10 | #define UpLineBtn ((LowerBtn - 4) + ((btnHight + btnSW) * (_ADVANCED_BUTTONS_MAX_ + 1))) 11 | 12 | 13 | void Jump_To_Boot(void); 14 | void AdvancedMenu_Closed(void); 15 | void Perform_Erase_EEPROM(void); 16 | void Save_pref(void); 17 | void Select_I2C_ADDR(void); 18 | void Select_I2C_GPIO(void); 19 | void Select_HostMode(void); 20 | 21 | 22 | /* ---------------------------------------------------------- */ 23 | btnINFO btnBootloader = 24 | { 25 | advLeftLineBtn, // Левая граница кнопки 26 | LowerBtn + (btnHight + btnSW) * 7, // Нижняя граница кнопки 27 | btnWidth, // Ширина кнопки 28 | btnHight, // Высота кнопки 29 | btn_ForeColor, // Цвет фона 30 | btn_activeForeColor, // Цвет фона когда кнопка активна 31 | btn_FontColor, // Цвет шрифта когда кнопка активна 32 | "Jump to Boot", // Текст 33 | Jump_To_Boot // указатель на функцию обработчик 34 | }; 35 | 36 | /* ---------------------------------------------------------- */ 37 | btnINFO btnEraseEeprom = 38 | { 39 | advLeftLineBtn, // Левая граница кнопки 40 | LowerBtn + (btnHight + btnSW) * 6, // Нижняя граница кнопки 41 | btnWidth, // Ширина кнопки 42 | btnHight, // Высота кнопки 43 | btn_ForeColor, // Цвет фона 44 | btn_activeForeColor, // Цвет фона когда кнопка активна 45 | btn_FontColor, // Цвет шрифта когда кнопка активна 46 | "Erase EEprom", // Текст 47 | Perform_Erase_EEPROM // указатель на функцию обработчик 48 | }; 49 | 50 | /* ---------------------------------------------------------- */ 51 | btnINFO btnSave = 52 | { 53 | advLeftLineBtn, // Левая граница кнопки 54 | LowerBtn + (btnHight + btnSW) * 5, // Нижняя граница кнопки 55 | btnWidth, // Ширина кнопки 56 | btnHight, // Высота кнопки 57 | btn_ForeColor, // Цвет фона 58 | btn_activeForeColor, // Цвет фона когда кнопка активна 59 | btn_FontColor, // Цвет шрифта когда кнопка активна 60 | "Save all sett", // Текст 61 | Save_pref // указатель на функцию обработчик 62 | }; 63 | 64 | /* ---------------------------------------------------------- */ 65 | btnINFO btnEmpty = 66 | { 67 | advLeftLineBtn, // Левая граница кнопки 68 | LowerBtn + (btnHight + btnSW) * 4, // Нижняя граница кнопки 69 | btnWidth, // Ширина кнопки 70 | btnHight, // Высота кнопки 71 | btn_ForeColor, // Цвет фона 72 | btn_activeForeColor, // Цвет фона когда кнопка активна 73 | btn_FontColor, // Цвет шрифта когда кнопка активна 74 | " ----- ", // Текст 75 | (void*)0 // указатель на функцию обработчик 76 | }; 77 | 78 | /* ---------------------------------------------------------- */ 79 | btnINFO btnI2C_ADDR = 80 | { 81 | advLeftLineBtn, // Левая граница кнопки 82 | LowerBtn + (btnHight + btnSW) * 3, // Нижняя граница кнопки 83 | btnWidth, // Ширина кнопки 84 | btnHight, // Высота кнопки 85 | btn_ForeColor, // Цвет фона 86 | btn_activeForeColor, // Цвет фона когда кнопка активна 87 | btn_FontColor, // Цвет шрифта когда кнопка активна 88 | "0x00", // Текст 89 | Select_I2C_ADDR // указатель на функцию обработчик 90 | }; 91 | 92 | /* ---------------------------------------------------------- */ 93 | #define btnI2C_Txt_Max 3 94 | const char btnI2C_GPIO_Texts[btnI2C_Txt_Max][12] = { 95 | "I2C IO OFF", 96 | "PCA9675", 97 | "MAX7320", 98 | }; 99 | 100 | btnINFO btnI2C_GPIO = 101 | { 102 | advLeftLineBtn, // Левая граница кнопки 103 | LowerBtn + (btnHight + btnSW) * 2, // Нижняя граница кнопки 104 | btnWidth, // Ширина кнопки 105 | btnHight, // Высота кнопки 106 | btn_ForeColor, // Цвет фона 107 | btn_activeForeColor, // Цвет фона когда кнопка активна 108 | btn_FontColor, // Цвет шрифта когда кнопка активна 109 | (char*)&btnI2C_GPIO_Texts[0], // Текст 110 | Select_I2C_GPIO // указатель на функцию обработчик 111 | }; 112 | 113 | /* ---------------------------------------------------------- */ 114 | const char btnHostMode_Texts[5][19] = { 115 | "Host OFF", 116 | "ESP Bridge", 117 | "Host CP2102", 118 | "Host ESP", 119 | "ESP Boot", 120 | }; 121 | 122 | btnINFO btnHostMode = 123 | { 124 | advLeftLineBtn, // Левая граница кнопки 125 | LowerBtn + (btnHight + btnSW) * 1, // Нижняя граница кнопки 126 | btnWidth, // Ширина кнопки 127 | btnHight, // Высота кнопки 128 | btn_ForeColor, // Цвет фона 129 | btn_activeForeColor, // Цвет фона когда кнопка активна 130 | btn_FontColor, // Цвет шрифта когда кнопка активна 131 | (char*)&btnHostMode_Texts[0], // Текст 132 | Select_HostMode // указатель на функцию обработчик 133 | }; 134 | 135 | /* ---------------------------------------------------------- */ 136 | btnINFO btnClose = 137 | { 138 | advLeftLineBtn, // Левая граница кнопки 139 | LowerBtn + (btnHight + btnSW) * 0, // Нижняя граница кнопки 140 | btnWidth, // Ширина кнопки 141 | btnHight, // Высота кнопки 142 | btn_ForeColor, // Цвет фона 143 | btn_activeForeColor, // Цвет фона когда кнопка активна 144 | btn_FontColor, // Цвет шрифта когда кнопка активна 145 | "Close", // Текст 146 | AdvancedMenu_Closed // указатель на функцию обработчик 147 | }; 148 | 149 | -------------------------------------------------------------------------------- /interface/buttons/MeasButtons.h: -------------------------------------------------------------------------------- 1 | /************************************************************************************* 2 | * 3 | Description : NeilScope3 Measurments buttons description 4 | Version : 1.0.0 5 | Date : 7.12.2011 6 | Author : Left Radio 7 | Comments : 8 | * 9 | **************************************************************************************/ 10 | 11 | #define MeasButtonsMAX 2 12 | 13 | #define btnHeight 15 14 | #define btnWidht 90 15 | #define btnSW 2 16 | #define LeftLineBtn 306 17 | #define LowerBtn 22 18 | #define UpLineBtn ((LowerBtn - 3) + ((btnHeight + btnSW) * (MeasButtonsMAX + 1))) 19 | 20 | 21 | /* кнопка изменения верхней границы окна или уровень триггера ---------------- */ 22 | btnINFO btnMeasCursor1 = 23 | { 24 | 306, // Левая граница кнопки 25 | 56, // Нижняя граница кнопки 26 | btnWidht, // Ширина кнопки 27 | btnHeight, // Высота кнопки 28 | btn_ForeColor, // Цвет фона 29 | btn_activeForeColor, // Цвет фона когда кнопка активна 30 | btn_FontColor, // Цвет шрифта когда кнопка активна 31 | "Cursor1", // Текст 32 | ChangeMeasCursor_1 33 | }; 34 | 35 | /* кнопка изменения нижней границы окна --------------------------------------- */ 36 | btnINFO btnMeasCursor2 = 37 | { 38 | 306, // Левая граница кнопки 39 | 39, // Нижняя граница кнопки 40 | btnWidht, // Ширина кнопки 41 | btnHeight, // Высота кнопки 42 | btn_ForeColor, // Цвет фона 43 | btn_activeForeColor, // Цвет фона когда кнопка активна 44 | btn_FontColor, // Цвет шрифта когда кнопка активна 45 | "Cursor2", // Текст 46 | ChangeMeasCursor_2 47 | }; 48 | 49 | 50 | 51 | /* кнопка ---------------- */ 52 | btnINFO btnMeasMode = 53 | { 54 | 306, // Левая граница кнопки 55 | 22, // Нижняя граница кнопки 56 | btnWidht, // Ширина кнопки 57 | btnHeight, // Высота кнопки 58 | btn_ForeColor, // Цвет фона 59 | btn_activeForeColor, // Цвет фона когда кнопка активна 60 | btn_FontColor, // Цвет шрифта когда кнопка активна 61 | "Mode", // Текст 62 | ChangeMeasMode 63 | }; 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /interface/buttons/Quick_Menu_buttons.h: -------------------------------------------------------------------------------- 1 | /************************************************************************************* 2 | * 3 | Description : NeilScope3 Quick Menu buttons description 4 | Version : 1.0.0 5 | Date : 7.12.2011 6 | Author : Left Radio 7 | Comments : 8 | * 9 | **************************************************************************************/ 10 | 11 | #define qMnuButtonsMAX 7 12 | 13 | #define btnHight 16 14 | #define btnWidth 100 15 | #define btnSW 2 16 | #define LeftLineBtn 15 17 | #define LowerBtn 22 18 | #define UpLineBtn ((LowerBtn - 4) + ((btnHight + btnSW) * (qMnuButtonsMAX + 1))) 19 | 20 | void Change_Color_Buttons(void); 21 | void Change_Color_Grid(void); 22 | void GoAdvancedMenu(void); 23 | void Auto_Power_OFF(void); 24 | void Beep_ON_OFF(void); 25 | void BackLight(void); 26 | void ShowFFT_Freq(void); 27 | void Change_Interpolation(void); 28 | 29 | 30 | /* кнопка ---------------------------------------------------------- */ 31 | btnINFO Color_Buttons = 32 | { 33 | LeftLineBtn, // Левая граница кнопки 34 | LowerBtn + (btnHight + btnSW) * 7, // Нижняя граница кнопки 35 | btnWidth, // Ширина кнопки 36 | btnHight, // Высота кнопки 37 | btn_ForeColor, // Цвет фона 38 | btn_activeForeColor, // Цвет фона когда кнопка активна 39 | btn_FontColor, // Цвет шрифта когда кнопка активна 40 | "Buttons Color", // Текст 41 | Change_Color_Buttons // указатель на функцию обработчик 42 | }; 43 | 44 | /* кнопка ---------------------------------------------------------- */ 45 | btnINFO Color_Grid = 46 | { 47 | LeftLineBtn, // Левая граница кнопки 48 | LowerBtn + (btnHight + btnSW) * 6, // Нижняя граница кнопки 49 | btnWidth, // Ширина кнопки 50 | btnHight, // Высота кнопки 51 | btn_ForeColor, // Цвет фона 52 | btn_activeForeColor, // Цвет фона когда кнопка активна 53 | btn_FontColor, // Цвет шрифта когда кнопка активна 54 | "Grid Color", // Текст 55 | Change_Color_Grid // указатель на функцию обработчик 56 | }; 57 | 58 | /* ------------------------------------------- */ 59 | btnINFO btnAdvancedMenu = 60 | { 61 | LeftLineBtn, // Левая граница кнопки 62 | LowerBtn + (btnHight + btnSW) * 5, // Нижняя граница кнопки 63 | btnWidth, // Ширина кнопки 64 | btnHight, // Высота кнопки 65 | btn_ForeColor, // Цвет фона 66 | btn_activeForeColor, // Цвет фона когда кнопка активна 67 | btn_FontColor, // Цвет шрифта когда кнопка активна 68 | "Advansed...", // Текст 69 | GoAdvancedMenu // указатель на функцию обработчик 70 | }; 71 | 72 | /* кнопка сохранения ---------------------------------------------------------- */ 73 | btnINFO AutoPowerOFF = 74 | { 75 | LeftLineBtn, // Левая граница кнопки 76 | LowerBtn + (btnHight + btnSW) * 4, // Нижняя граница кнопки 77 | btnWidth, // Ширина кнопки 78 | btnHight, // Высота кнопки 79 | btn_ForeColor, // Цвет фона 80 | btn_activeForeColor, // Цвет фона когда кнопка активна 81 | btn_FontColor, // Цвет шрифта когда кнопка активна 82 | "Power OFF -", // Текст 83 | Auto_Power_OFF // указатель на функцию обработчик 84 | }; 85 | 86 | /* кнопка бипера ---------------------------------------------------------- */ 87 | btnINFO BeepEN = 88 | { 89 | LeftLineBtn, // Левая граница кнопки 90 | LowerBtn + (btnHight + btnSW) * 3, // Нижняя граница кнопки 91 | btnWidth, // Ширина кнопки 92 | btnHight, // Высота кнопки 93 | btn_ForeColor, // Цвет фона 94 | btn_activeForeColor, // Цвет фона когда кнопка активна 95 | btn_FontColor, // Цвет шрифта когда кнопка активна 96 | "Beep OFF", // Текст 97 | Beep_ON_OFF // указатель на функцию обработчик 98 | }; 99 | 100 | /* кнопка изменения подсведки -------------------------------------------------- */ 101 | btnINFO btnLIGHT_INFO = 102 | { 103 | LeftLineBtn, // Левая граница кнопки 104 | LowerBtn + (btnHight + btnSW) * 2, // Нижняя граница кнопки 105 | btnWidth, // Ширина 106 | btnHight, // Высота кнопки 107 | btn_ForeColor, // Цвет фона 108 | btn_activeForeColor, // Цвет фона когда кнопка активна 109 | btn_FontColor, // Цвет шрифта когда кнопка активна 110 | "BL MIN", // Текст 111 | BackLight // указатель на функцию обработчик 112 | }; 113 | 114 | /* ------------------------ */ 115 | btnINFO btnShowFFT = 116 | { 117 | LeftLineBtn, // Левая граница кнопки 118 | LowerBtn + (btnHight + btnSW), // Нижняя граница кнопки 119 | btnWidth, // Ширина 120 | btnHight, // Высота кнопки 121 | btn_ForeColor, // Цвет фона 122 | btn_activeForeColor, // Цвет фона когда кнопка активна 123 | btn_FontColor, // Цвет шрифта когда кнопка активна 124 | "Show Freq", // Текст 125 | ShowFFT_Freq // указатель на функцию обработчик 126 | }; 127 | 128 | /* кнопка переключения интерполяции ------------------------------------------- */ 129 | btnINFO Interpolation = 130 | { 131 | LeftLineBtn, // Левая граница кнопки 132 | LowerBtn, // Нижняя граница кнопки 133 | btnWidth, // Ширина кнопки 134 | btnHight, // Высота кнопки 135 | btn_ForeColor, // Цвет фона 136 | btn_activeForeColor, // Цвет фона когда кнопка активна 137 | btn_FontColor, // Цвет шрифта когда кнопка активна 138 | "i NONE", // Текст 139 | Change_Interpolation // указатель на функцию обработчик 140 | }; 141 | 142 | -------------------------------------------------------------------------------- /interface/buttons/Trig_Menu_buttons.h: -------------------------------------------------------------------------------- 1 | /************************************************************************************* 2 | * 3 | Description : NeilScope3 Trigg Menu buttons description 4 | Version : 1.0.0 5 | Date : 7.12.2011 6 | Author : Left Radio 7 | Comments : 8 | * 9 | **************************************************************************************/ 10 | 11 | #define TrigButtonsMAX 5 12 | 13 | #define btnHight 16 14 | #define btnWidth 80 15 | #define btnSW 2 16 | #define LeftLineBtn 291 17 | #define LowerBtn 22 18 | #define UpLineBtn ((LowerBtn - 4) + ((btnHight + btnSW) * (TrigButtonsMAX + 1))) 19 | 20 | 21 | /* кнопка -------------------------------------- */ 22 | btnINFO btnTrigg_ShowInfo = { 23 | LeftLineBtn, // Левая граница кнопки 24 | LowerBtn + (btnHight + btnSW)*5, // Нижняя граница кнопки 25 | btnWidth, // Ширина кнопки 26 | btnHight, // Высота кнопки 27 | btn_ForeColor, // Цвет фона 28 | btn_activeForeColor, // Цвет фона когда кнопка активна 29 | btn_FontColor, // Цвет шрифта когда кнопка активна 30 | "show Info", // Текст 31 | Hide_Show_triggInfo // указатель на функцию обработки нажатия 32 | }; 33 | 34 | 35 | /* кнопка -------------------------------------- */ 36 | btnINFO btnTrigg_Position_X = { 37 | LeftLineBtn, // Левая граница кнопки 38 | 22 + (btnHight + btnSW)*4, // Нижняя граница кнопки 39 | btnWidth, // Ширина кнопки 40 | btnHight, // Высота кнопки 41 | btn_ForeColor, // Цвет фона 42 | btn_activeForeColor, // Цвет фона когда кнопка активна 43 | btn_FontColor, // Цвет шрифта когда кнопка активна 44 | "Pos X", // Текст 45 | Trigg_Position_X // указатель на функцию обработки нажатия 46 | }; 47 | 48 | /* кнопка изменения нижней границы окна --------------------------------------- */ 49 | btnINFO btnLow_Level_W = { 50 | LeftLineBtn, // Левая граница кнопки 51 | 22 + (btnHight + btnSW)*3, // Нижняя граница кнопки 52 | btnWidth, // Ширина кнопки 53 | btnHight, // Высота кнопки 54 | btn_ForeColor, // Цвет фона 55 | btn_activeForeColor, // Цвет фона когда кнопка активна 56 | btn_FontColor, // Цвет шрифта когда кнопка активна 57 | "L Level", // Текст 58 | Change_L_CursorLevel 59 | }; 60 | 61 | /* кнопка изменения верхней границы окна или уровень триггера ---------------- */ 62 | btnINFO btnHeight_Level_W = { 63 | LeftLineBtn, // Левая граница кнопки 64 | 22 + (btnHight + btnSW)*2, // Нижняя граница кнопки 65 | btnWidth, // Ширина кнопки 66 | btnHight, // Высота кнопки 67 | btn_ForeColor, // Цвет фона 68 | btn_activeForeColor, // Цвет фона когда кнопка активна 69 | btn_FontColor, // Цвет шрифта когда кнопка активна 70 | "H Level", // Текст 71 | Change_H_CursorLevel 72 | }; 73 | 74 | /* кнопка выбора фронт/спад ------------------------------------------------- */ 75 | btnINFO btnTrigg_Type_sync = 76 | { 77 | LeftLineBtn, // Левая граница кнопки 78 | 22 + (btnHight + btnSW), // Нижняя граница кнопки 79 | btnWidth, // Ширина кнопки 80 | btnHight, // Высота кнопки 81 | btn_ForeColor, // Цвет фона 82 | btn_activeForeColor, // Цвет фона когда кнопка активна 83 | btn_FontColor, // Цвет шрифта когда кнопка активна 84 | "RISE", // Текст 85 | Trigg_SyncType 86 | }; 87 | 88 | /* кнопка выбора канала для синхронизации -------------------------------------- */ 89 | btnINFO btnSync_Sourse = 90 | { 91 | LeftLineBtn, // Левая граница кнопки 92 | 22, // Нижняя граница кнопки 93 | btnWidth, // Ширина кнопки 94 | btnHight, // Высота кнопки 95 | btn_ForeColor, // Цвет фона 96 | btn_activeForeColor, // Цвет фона когда кнопка активна 97 | btn_FontColor, // Цвет шрифта когда кнопка активна 98 | (char*)&Trigg_Sourse_Sync_Text[0][0], // Текст 99 | Trigg_SyncSourse 100 | }; 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /interface/buttons/gOscModeButtons.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LeftRadio/neil-scope3/cf86cfada2b9b32ed0eeb5054fca2bd611318e7f/interface/buttons/gOscModeButtons.h -------------------------------------------------------------------------------- /interface/gInterface_MENU.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file gInterface_MENU.h 4 | * @author Left Radio 5 | * @version 1.5.6 6 | * @date 7 | * @brief NeilScope3 gInterface Menu header 8 | ****************************************************************************** 9 | **/ 10 | 11 | #ifndef __G_INTERFACE_H 12 | #define __G_INTERFACE_H 13 | 14 | /* Includes ------------------------------------------------------------------*/ 15 | /* Exported typedef ----------------------------------------------------------*/ 16 | /* Exported define -----------------------------------------------------------*/ 17 | /* Exported variables --------------------------------------------------------*/ 18 | extern const char sweep_text[][10]; 19 | extern const char sweep_Scale_text[][10]; 20 | extern const char div_text[6][10]; 21 | 22 | // 23 | 24 | extern uint8_t enChangeSyncMODE; // флаг изменения режима синхронизации 25 | 26 | /* Private function --------------------------------------------------------*/ 27 | /* Exported function --------------------------------------------------------*/ 28 | void qMenu(void); 29 | void change_Div_A(void); 30 | void change_Div_B(void); 31 | void change_Sweep(void); 32 | void change_Sweep_Mode(void); 33 | void Sweep_Mode(SyncMode_TypeDef NewSyncMode, Boolean Init); 34 | void change_Trigg_Mode(void); 35 | void Hide_Show_Meas(void); 36 | void RUN_HOLD(void); 37 | void ON_OFF_CHANNEL_A(void); 38 | void ON_OFF_CHANNEL_B(void); 39 | void ON_OFF_Channels(CH_INFO_TypeDef * Channel, Boolean init); 40 | void change_TIME_SCALE(void); 41 | void setCondition(uint8_t RUN_HOLD); /* приостановка/запуск каналов */ 42 | 43 | 44 | #endif /* __G_INTERFACE_H */ 45 | /********************************************************************************************************* 46 | END FILE 47 | *********************************************************************************************************/ 48 | -------------------------------------------------------------------------------- /main.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file main.h 4 | * @author Neil Lab :: Left Radio 5 | * @version v2.5.0 6 | * @date 7 | * @brief header 8 | ****************************************************************************** 9 | **/ 10 | 11 | #ifndef __MAIN_H 12 | #define __MAIN_H 13 | 14 | /* Includes ------------------------------------------------------------------*/ 15 | #include "stm32f10x.h" 16 | #include 17 | #include 18 | 19 | /* Exported define -----------------------------------------------------------*/ 20 | #define ON 1 21 | #define OFF 0 22 | 23 | //#define Sync_Condition 0 24 | //#define Sync_Different 1 25 | //#define Sync_C_or_D 2 26 | //#define Sync_C_and_D 3 27 | //#define oscSyncMode_MAX 3 28 | 29 | #define ON_OFF_button (GPIOC->IDR & GPIO_Pin_14) 30 | 31 | /* Exported typedef -----------------------------------------------------------*/ 32 | 33 | /* Work mode for device */ 34 | typedef enum { OSC_MODE = (uint8_t)0, LA_MODE = (uint8_t)1} OSC_LA_Mode_Typedef; 35 | typedef enum { STOP = 0, RUN = 1, COMPLETE = 2 } State_TypeDef; 36 | 37 | /* Buttons */ 38 | typedef enum { LEFT = 0x1E, RIGHT = 0x1D, UP = 0x17, DOWN = 0x1B, OK = 0x0F, NO_Push = 0x1F } ButtonsCode_TypeDef; 39 | typedef enum { SHORT_SET = 0x01, LONG_SET = 0x02, B_RESET = 0xFF } ButtonsPush_TypeDef; 40 | 41 | /* Channels ID */ 42 | typedef enum { 43 | CHANNEL_A = (uint8_t)0, 44 | CHANNEL_B = (uint8_t)1, 45 | CHANNEL_DIGIT = (uint8_t)2, 46 | BOTH_CHANNEL = (uint8_t)3 47 | } Channel_ID_TypeDef; 48 | 49 | /* ADC input AC/DC state */ 50 | typedef enum { NONE = (int8_t)0, RUN_AC = (int8_t)1, RUN_DC = (int8_t)2 } Channel_AC_DC_TypeDef; 51 | 52 | /* Synchronization work mode, type */ 53 | typedef enum { Sync_NONE = (int8_t)0, Sync_NORM = (int8_t)1, Sync_AUTO = (int8_t)2, Sync_SINGL = (int8_t)3 } SyncMode_TypeDef; 54 | typedef enum { 55 | Sync_Rise = (int8_t)0, Sync_Fall = (int8_t)1, 56 | Sync_IN_WIN = (int8_t)2, Sync_OUT_WIN = (int8_t)3, 57 | Sync_LA_State = (int8_t)4, Sync_LA_Different = (int8_t)5, 58 | Sync_LA_State_AND_Different = (int8_t)6, Sync_LA_State_OR_Different = (int8_t)7 59 | } SyncAType_TypeDef; 60 | 61 | /* Auto OFF device timer */ 62 | typedef struct { uint32_t ResetTime; int8_t Work_Minutes; uint8_t Vbatt; FunctionalState State; } OFF_Struct_TypeDef; // Auto off struct 63 | 64 | /* BackLight and power state */ 65 | typedef enum { BCKL_MIN = 0, BCKL_MAX = 1 } BcklightState_Typedef; 66 | typedef enum { PWR_S_DISABLE = 0, PWR_S_ENABLE = 1} PwrSaveState_Typedef; 67 | 68 | 69 | /* ---------------------------------------- Channels structs ---------------------------------------- */ 70 | /* ADC Channels mode struct */ 71 | typedef struct { 72 | Channel_ID_TypeDef ID; // Id for channel 73 | State_TypeDef EN; // ENABLE/DISABLE state 74 | Channel_AC_DC_TypeDef AC_DC; // 1 - AC, 2 - DC 75 | } gChannel_MODE; 76 | 77 | 78 | /* Структурный тип данных для аналоговых каналов */ 79 | typedef struct { 80 | uint8_t Div; // положение аналогового делителя 81 | uint16_t Zero_PWM_values[12]; // массив значений ШИМ для каждого положения аналогового делителя 82 | volatile uint16_t *corrZ; 83 | } ACH_INFO; 84 | 85 | /* Структурный тип данных цифрового канала для логического анализатора */ 86 | typedef struct 87 | { 88 | } DCH_INFO; 89 | 90 | 91 | /* Общий структурный тип данных каналов */ 92 | typedef struct 93 | { 94 | /* Общие поля */ 95 | uint16_t Color; // Цвет канала 96 | uint8_t Position; // координата на экране указателя канала 97 | gChannel_MODE Mode; 98 | int8_t DATA[800]; // данные канала 99 | uint8_t visDATA[800]; // данные для вывода на экран 100 | FunctionalState OldData_PointsFlag[400]; // данные для очистки экрана 101 | 102 | /* Уникальные данные аналоговых или цифрового каналов */ 103 | union { 104 | ACH_INFO Analog; 105 | DCH_INFO Digital; 106 | } AD_Type; 107 | 108 | void (*Procesing)(gChannel_MODE CH_Mode); 109 | } CH_INFO_TypeDef; 110 | 111 | /* */ 112 | typedef enum { 113 | Host_Undefined = (int8_t)-1, 114 | Host_OFF = (int8_t)0, 115 | Host_Bridge_Mode = (int8_t)1, 116 | Host_CP2102_Mode = (int8_t)2, 117 | Host_ESP_Mode = (int8_t)3, 118 | Host_ESP_Boot_Mode = (int8_t)4, 119 | } NS_Host_Communicate_TypeDef; 120 | 121 | /* Global device work mode/state struct */ 122 | typedef struct { 123 | uint32_t oscNumPoints; 124 | OSC_LA_Mode_Typedef Mode; 125 | Boolean Interleave; 126 | Boolean autoMeasurments; 127 | PwrSaveState_Typedef PowerSave; 128 | BcklightState_Typedef BackLight; 129 | uint8_t i2c_gpio_chip_index; 130 | NS_Host_Communicate_TypeDef HostCommunicate; 131 | FunctionalState BeepState; 132 | State_TypeDef State; 133 | Boolean Configurated; 134 | } OscMode_TypeDef; 135 | 136 | /* Samples window struct */ 137 | typedef struct { 138 | uint16_t WindowWidh; 139 | int16_t WindowPosition; 140 | uint16_t WindowsNum; 141 | uint32_t Sweep; 142 | } SamplesWin_Typedef; 143 | 144 | typedef struct { 145 | const uint8_t* u8_data; // param data pointer 146 | const uint16_t start_addr; // prevParam_start_index + prevParam_num_bytes + 1(CRC) 147 | const uint8_t num_bytes; // param number bytes to Save/Load 148 | } SettingsParam_TypeDef; 149 | 150 | /* Exported variables --------------------------------------------------------*/ 151 | extern CH_INFO_TypeDef *pINFO, INFO_A, INFO_B, DINFO_A; 152 | extern volatile OscMode_TypeDef gOSC_MODE; 153 | extern volatile SamplesWin_Typedef gSamplesWin; 154 | extern OFF_Struct_TypeDef AutoOff_Timer; 155 | 156 | extern FlagStatus show_FPS_flag; 157 | extern uint8_t FPS_counter; 158 | 159 | extern int8_t ADC_VbattPrecent; 160 | extern FlagStatus show_ADC_flag; 161 | extern FlagStatus MessageEvent; 162 | 163 | extern FlagStatus ButtonEnable; 164 | extern ButtonsCode_TypeDef ButtonsCode; 165 | extern ButtonsPush_TypeDef ButtonPush; 166 | extern uint8_t speed_up_cnt; 167 | 168 | 169 | /* Exported function --------------------------------------------------------*/ 170 | extern void (*pMNU)(void); /* Pointer to actived menu func */ 171 | 172 | 173 | 174 | 175 | #endif /* __MAIN_H */ 176 | /********************************************************************************************************* 177 | END FILE 178 | *********************************************************************************************************/ 179 | -------------------------------------------------------------------------------- /neil-scope.sublime-project: -------------------------------------------------------------------------------- 1 | { 2 | "build_systems": 3 | [ 4 | { 5 | "cmd": ["make"], 6 | "name": "ARM build", 7 | "working_dir": "${project_path}", 8 | "file_regex": "^(.*):(\\d+):(\\d+):\\s*(.*)$" 9 | } 10 | ], 11 | "folders": 12 | [ 13 | { 14 | "follow_symlinks": true, 15 | "path": "." 16 | } 17 | ], 18 | 19 | "SublimeLinter": 20 | { 21 | "linters": 22 | { 23 | "clang": 24 | { 25 | "include_dirs": 26 | [ 27 | "${project}/cmsis", 28 | "${project}/cmsis_boot" 29 | ], 30 | // "extra_flags":"-DSTM32F10X_MD_VL" 31 | } 32 | } 33 | }, 34 | "settings": 35 | { 36 | "sublimegdb_workingdir": "${project_path:build/}", 37 | "sublimegdb_commandline": "arm-none-eabi-gdb --interpreter=mi *.elf" 38 | } 39 | } -------------------------------------------------------------------------------- /neil-scope.sublime-workspace: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /processing_output/Processing_and_output.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file Processing_and_output.h 4 | * @author Left Radio 5 | * @version 1.5.6 6 | * @date 7 | * @brief NeilScope3 Processing and output header 8 | ****************************************************************************** 9 | **/ 10 | 11 | #ifndef __PROCESSING_AND_OUT_H 12 | #define __PROCESSING_AND_OUT_H 13 | 14 | /* Includes ------------------------------------------------------------------*/ 15 | /* Exported typedef -----------------------------------------------------------*/ 16 | typedef struct 17 | { 18 | void (*InterpolationMODEfunc)(uint16_t X0, uint16_t X1, int16_t Position); 19 | void (*Clear_OLD_DataFunc)(uint16_t X0, uint16_t X1); 20 | uint8_t oscNumPoints_Ratio; 21 | int8_t MinimumAllowed_SweepIndex; 22 | const char *Text; 23 | const uint8_t Indx; 24 | } InterpolationMode_TypeDef; 25 | 26 | 27 | /* Exported define -----------------------------------------------------------*/ 28 | /* Exported variables --------------------------------------------------------*/ 29 | extern uint16_t X0_Restrict, X1_Restrict, Y_Restrict; 30 | extern uint8_t Shift; 31 | 32 | extern InterpolationMode_TypeDef *ActiveMode; 33 | extern InterpolationMode_TypeDef IntNONE, IntLIN, IntMIN_MAX, FFT_MODE; 34 | extern const InterpolationMode_TypeDef *InterpModes[4]; 35 | extern volatile uint8_t Interpolate_AciveMode_Index; 36 | 37 | /* Exported function --------------------------------------------------------*/ 38 | void Update_Oscillogram(void); 39 | void changeInterpolation(InterpolationMode_TypeDef *NewMode); 40 | void InterpolationNONE(uint16_t X0, uint16_t X1, int16_t Position); 41 | void InterpolationLINEAR(uint16_t X0, uint16_t X1, int16_t Position); 42 | void MIN_MAX_MODEfunc(uint16_t X0, uint16_t X1, int16_t Position); 43 | void FFT_MODEfunc(uint16_t X0, uint16_t X1, int16_t Position); 44 | 45 | void Clear_OLD_DataCH_ON_SCREEN(uint8_t channel, uint16_t X0, uint16_t X1); 46 | void Clear_OLD_Line(uint16_t X0pos, uint16_t Y0pos, uint16_t X1pos, uint16_t Y1pos, uint8_t clear); 47 | void Set_Oscillogram_Restrictions(uint16_t X_Left, uint16_t X_Right, uint16_t Y_Up); 48 | void Set_CH_TypeINFO(Channel_ID_TypeDef NewChannelType); 49 | 50 | void Inerlive_Cmd(FunctionalState NewState); 51 | 52 | 53 | #endif /* __PROCESSING_AND_OUT_H */ 54 | /********************************************************************************************************* 55 | END FILE 56 | *********************************************************************************************************/ 57 | 58 | -------------------------------------------------------------------------------- /settings/Settings.h: -------------------------------------------------------------------------------- 1 | /************************************************************************************* 2 | * 3 | Description : NeilScope3 Settings header 4 | Version : 1.0.0 5 | Date : 7.12.2011 6 | Author : Left Radio 7 | Comments : 8 | * 9 | **************************************************************************************/ 10 | 11 | #ifndef __SETTINGS_H 12 | #define __SETTINGS_H 13 | 14 | /* Includes ------------------------------------------------------------------*/ 15 | #include "main.h" 16 | #include "stm32f10x.h" 17 | 18 | /* Exported typedef -----------------------------------------------------------*/ 19 | /* Exported define -----------------------------------------------------------*/ 20 | #define btn_POWER 0 21 | 22 | /* Exported variables --------------------------------------------------------*/ 23 | extern uint8_t err_I2C_flag; 24 | 25 | /* Exported function --------------------------------------------------------*/ 26 | void LoadPreference(void); // чтение сохранненых настроек 27 | uint8_t SavePreference(void); // сохраннение настроек 28 | uint8_t ErasePreference(void); 29 | 30 | uint8_t Settings_SaveParam(const SettingsParam_TypeDef* param); 31 | 32 | 33 | 34 | #endif /* __SETTINGS_H */ 35 | /********************************************************************************************************* 36 | END FILE 37 | *********************************************************************************************************/ 38 | 39 | -------------------------------------------------------------------------------- /settings/SettingsParams.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file SettingsParams.h 4 | * @author Neil Lab :: Left Radio 5 | * @version v1.0.0 6 | * @date 7 | * @brief header 8 | ****************************************************************************** 9 | **/ 10 | 11 | /* Define to prevent recursive inclusion -------------------------------------*/ 12 | #ifndef __SETTINGS_PARAM_H 13 | #define __SETTINGS_PARAM_H 14 | 15 | /* Includes ------------------------------------------------------------------*/ 16 | #include "main.h" 17 | 18 | /* Exported define -----------------------------------------------------------*/ 19 | /* Exported macro ------------------------------------------------------------*/ 20 | /* Exported typedef ----------------------------------------------------------*/ 21 | 22 | /* Exported variables --------------------------------------------------------*/ 23 | const SettingsParam_TypeDef Param_ADC_Zero_A = { (uint8_t*)(&INFO_A.AD_Type.Analog.Zero_PWM_values[0]), 0x00, 24 }; 24 | const SettingsParam_TypeDef Param_ADC_Zero_B = { (uint8_t*)(&INFO_B.AD_Type.Analog.Zero_PWM_values[0]), 0x19, 24 }; 25 | 26 | const SettingsParam_TypeDef Param_A_Position = { &INFO_A.Position, 0x32, 1 }; 27 | const SettingsParam_TypeDef Param_B_Position = { &INFO_B.Position, 0x34, 1 }; 28 | 29 | const SettingsParam_TypeDef Param_ActiveMode = { (uint8_t*)&Interpolate_AciveMode_Index, 0x36, 1 }; 30 | 31 | const SettingsParam_TypeDef Param_ADC_IN_Div_A = { &INFO_A.AD_Type.Analog.Div, 0x38, 1 }; 32 | const SettingsParam_TypeDef Param_ADC_IN_Div_B = { &INFO_B.AD_Type.Analog.Div, 0x3A, 1 }; 33 | 34 | const SettingsParam_TypeDef Param_SweepIndex = { &SweepIndex, 0x3C, 1 }; 35 | const SettingsParam_TypeDef Param_ScaleIndex = { &ScaleIndex, 0x3E, 1 }; 36 | const SettingsParam_TypeDef Param_WindowsNum = { (uint8_t*)&gSamplesWin.WindowsNum, 0x40, 2 }; 37 | const SettingsParam_TypeDef Param_WindowPosition = { (uint8_t*)&gSamplesWin.WindowPosition, 0x43, 2 }; 38 | 39 | const SettingsParam_TypeDef Param_AutoOff_Timer = { (uint8_t*)&AutoOff_Timer.Work_Minutes, 0x46, 1 }; 40 | 41 | extern Channel_ID_TypeDef param_auto_div; 42 | const SettingsParam_TypeDef Param_AutoDivider_State = { (uint8_t*)¶m_auto_div, 0x48, 1 }; 43 | 44 | const SettingsParam_TypeDef Param_SyncState_Mode = { (uint8_t*)&gSyncState.Mode, 0x4A, 1 }; 45 | const SettingsParam_TypeDef Param_SyncState_Sourse = { (uint8_t*)&gSyncState.Sourse, 0x4C, 1 }; 46 | const SettingsParam_TypeDef Param_SyncState_Type = { (uint8_t*)&gSyncState.Type, 0x4E, 1 }; 47 | 48 | const SettingsParam_TypeDef Param_Height_Y_cursor = { (uint8_t*)&Height_Y_cursor.Position, 0x50, 1 }; 49 | const SettingsParam_TypeDef Param_Low_Y_cursor = { (uint8_t*)&Low_Y_cursor.Position, 0x52, 1 }; 50 | const SettingsParam_TypeDef Param_trigPosX_cursor = { (uint8_t*)&trigPosX_cursor.Position, 0x54, 3 }; 51 | const SettingsParam_TypeDef Param_trigPosX_WinPosition = { (uint8_t*)&trigPosX_cursor.WindowPosition, 0x58, 2 }; 52 | const SettingsParam_TypeDef Param_TriggShowInfo = { (uint8_t*)&TriggShowInfo.Status, 0x5B, 1 }; 53 | 54 | const SettingsParam_TypeDef Param_indxColorA = { &indxColorA, 0x5D, 1 }; 55 | const SettingsParam_TypeDef Param_indxColorB = { &indxColorB, 0x5F, 1 }; 56 | const SettingsParam_TypeDef Param_indxColorButtons = { &indxColorButtons, 0x61, 1 }; 57 | const SettingsParam_TypeDef Param_indxTextColorA = { &indxTextColorA, 0x63, 1 }; 58 | const SettingsParam_TypeDef Param_indxTextColorB = { &indxTextColorB, 0x65, 1 }; 59 | const SettingsParam_TypeDef Param_indxColorGrid = { &indxColorGrid, 0x67, 1 }; 60 | 61 | const SettingsParam_TypeDef Param_PowerSave = { (uint8_t*)&gOSC_MODE.PowerSave, 0x69, 1 }; 62 | const SettingsParam_TypeDef Param_BL = { (uint8_t*)&gOSC_MODE.BackLight, 0x6B, 1 }; 63 | const SettingsParam_TypeDef Param_BeepState = { (uint8_t*)&gOSC_MODE.BeepState, 0x6D, 1 }; 64 | 65 | const SettingsParam_TypeDef Param_ADC_Input_AC_DC_A = { (uint8_t*)&INFO_A.Mode.AC_DC, 0x6F, 1 }; 66 | const SettingsParam_TypeDef Param_ADC__Input_AC_DC_B = { (uint8_t*)&INFO_B.Mode.AC_DC, 0x71, 1 }; 67 | const SettingsParam_TypeDef Param_ShowFFTFreq = { (uint8_t*)&gShowFFTFreq, 0x73, 1 }; 68 | 69 | const SettingsParam_TypeDef Param_InterliveCorrectionCoeff = { (uint8_t*)&InterliveCorrectionCoeff, 0x75, 1 }; 70 | const SettingsParam_TypeDef Param_oscNumPoints = { (uint8_t*)&gOSC_MODE.oscNumPoints , 0x77, 3 }; 71 | 72 | const SettingsParam_TypeDef Param_I2C_GPIO = { (uint8_t*)&gOSC_MODE.i2c_gpio_chip_index, 0x7B, 1 }; 73 | const SettingsParam_TypeDef Param_HostCommunicate = { (uint8_t*)&gOSC_MODE.HostCommunicate, 0x7D, 1 }; 74 | 75 | 76 | const SettingsParam_TypeDef* SettingsParams[PARAM_NUM] = { 77 | 78 | &Param_ADC_Zero_A, 79 | &Param_ADC_Zero_B, 80 | &Param_A_Position, 81 | &Param_B_Position, 82 | &Param_ActiveMode, 83 | &Param_ADC_IN_Div_A, 84 | &Param_ADC_IN_Div_B, 85 | &Param_SweepIndex, 86 | &Param_ScaleIndex, 87 | &Param_WindowsNum, 88 | &Param_WindowPosition, 89 | &Param_AutoOff_Timer, 90 | &Param_AutoDivider_State, 91 | &Param_SyncState_Mode, 92 | &Param_SyncState_Sourse, 93 | &Param_SyncState_Type, 94 | &Param_Height_Y_cursor, 95 | &Param_Low_Y_cursor, 96 | &Param_trigPosX_cursor, 97 | &Param_trigPosX_WinPosition, 98 | &Param_TriggShowInfo, 99 | &Param_indxColorA, 100 | &Param_indxColorB, 101 | &Param_indxColorButtons, 102 | &Param_indxTextColorA, 103 | &Param_indxTextColorB, 104 | &Param_indxColorGrid, 105 | &Param_PowerSave, 106 | &Param_BL, 107 | &Param_BeepState, 108 | &Param_ADC_Input_AC_DC_A, 109 | &Param_ADC__Input_AC_DC_B, 110 | &Param_ShowFFTFreq, 111 | &Param_InterliveCorrectionCoeff, 112 | &Param_oscNumPoints, 113 | &Param_I2C_GPIO, 114 | &Param_HostCommunicate, 115 | }; 116 | 117 | 118 | /* Exported function ---------------------------------------------------------*/ 119 | 120 | 121 | 122 | 123 | 124 | 125 | #endif /* __SETTINGS_PARAM_H */ 126 | /********************************************************************************************************* 127 | END FILE 128 | *********************************************************************************************************/ 129 | -------------------------------------------------------------------------------- /stm32f10x_it.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file Project/STM32F10x_StdPeriph_Template/stm32f10x_it.h 4 | * @author MCD Application Team 5 | * @version V3.5.0 6 | * @date 08-April-2011 7 | * @brief This file contains the headers of the interrupt handlers. 8 | ****************************************************************************** 9 | * @attention 10 | * 11 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 12 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE 13 | * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY 14 | * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING 15 | * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE 16 | * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 17 | * 18 | *

© COPYRIGHT 2011 STMicroelectronics

19 | ****************************************************************************** 20 | */ 21 | 22 | /* Define to prevent recursive inclusion -------------------------------------*/ 23 | #ifndef __STM32F10x_IT_H 24 | #define __STM32F10x_IT_H 25 | 26 | #ifdef __cplusplus 27 | extern "C" { 28 | #endif 29 | 30 | /* Includes ------------------------------------------------------------------*/ 31 | #include "stm32f10x.h" 32 | 33 | /* Exported types ------------------------------------------------------------*/ 34 | /* Exported constants --------------------------------------------------------*/ 35 | /* Exported macro ------------------------------------------------------------*/ 36 | /* Exported functions ------------------------------------------------------- */ 37 | 38 | void NMI_Handler(void); 39 | void HardFault_Handler(void); 40 | void MemManage_Handler(void); 41 | void BusFault_Handler(void); 42 | void UsageFault_Handler(void); 43 | void SVC_Handler(void); 44 | void DebugMon_Handler(void); 45 | void PendSV_Handler(void); 46 | void SysTick_Handler(void); 47 | 48 | #ifdef __cplusplus 49 | } 50 | #endif 51 | 52 | #endif /* __STM32F10x_IT_H */ 53 | 54 | /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ 55 | -------------------------------------------------------------------------------- /stm_lib/inc/stm32f10x_dbgmcu.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file stm32f10x_dbgmcu.h 4 | * @author MCD Application Team 5 | * @version V3.5.0 6 | * @date 11-March-2011 7 | * @brief This file contains all the functions prototypes for the DBGMCU 8 | * firmware library. 9 | ****************************************************************************** 10 | * @attention 11 | * 12 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 13 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE 14 | * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY 15 | * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING 16 | * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE 17 | * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 18 | * 19 | *

© COPYRIGHT 2011 STMicroelectronics

20 | ****************************************************************************** 21 | */ 22 | 23 | /* Define to prevent recursive inclusion -------------------------------------*/ 24 | #ifndef __STM32F10x_DBGMCU_H 25 | #define __STM32F10x_DBGMCU_H 26 | 27 | #ifdef __cplusplus 28 | extern "C" { 29 | #endif 30 | 31 | /* Includes ------------------------------------------------------------------*/ 32 | #include "stm32f10x.h" 33 | 34 | /** @addtogroup STM32F10x_StdPeriph_Driver 35 | * @{ 36 | */ 37 | 38 | /** @addtogroup DBGMCU 39 | * @{ 40 | */ 41 | 42 | /** @defgroup DBGMCU_Exported_Types 43 | * @{ 44 | */ 45 | 46 | /** 47 | * @} 48 | */ 49 | 50 | /** @defgroup DBGMCU_Exported_Constants 51 | * @{ 52 | */ 53 | 54 | #define DBGMCU_SLEEP ((uint32_t)0x00000001) 55 | #define DBGMCU_STOP ((uint32_t)0x00000002) 56 | #define DBGMCU_STANDBY ((uint32_t)0x00000004) 57 | #define DBGMCU_IWDG_STOP ((uint32_t)0x00000100) 58 | #define DBGMCU_WWDG_STOP ((uint32_t)0x00000200) 59 | #define DBGMCU_TIM1_STOP ((uint32_t)0x00000400) 60 | #define DBGMCU_TIM2_STOP ((uint32_t)0x00000800) 61 | #define DBGMCU_TIM3_STOP ((uint32_t)0x00001000) 62 | #define DBGMCU_TIM4_STOP ((uint32_t)0x00002000) 63 | #define DBGMCU_CAN1_STOP ((uint32_t)0x00004000) 64 | #define DBGMCU_I2C1_SMBUS_TIMEOUT ((uint32_t)0x00008000) 65 | #define DBGMCU_I2C2_SMBUS_TIMEOUT ((uint32_t)0x00010000) 66 | #define DBGMCU_TIM8_STOP ((uint32_t)0x00020000) 67 | #define DBGMCU_TIM5_STOP ((uint32_t)0x00040000) 68 | #define DBGMCU_TIM6_STOP ((uint32_t)0x00080000) 69 | #define DBGMCU_TIM7_STOP ((uint32_t)0x00100000) 70 | #define DBGMCU_CAN2_STOP ((uint32_t)0x00200000) 71 | #define DBGMCU_TIM15_STOP ((uint32_t)0x00400000) 72 | #define DBGMCU_TIM16_STOP ((uint32_t)0x00800000) 73 | #define DBGMCU_TIM17_STOP ((uint32_t)0x01000000) 74 | #define DBGMCU_TIM12_STOP ((uint32_t)0x02000000) 75 | #define DBGMCU_TIM13_STOP ((uint32_t)0x04000000) 76 | #define DBGMCU_TIM14_STOP ((uint32_t)0x08000000) 77 | #define DBGMCU_TIM9_STOP ((uint32_t)0x10000000) 78 | #define DBGMCU_TIM10_STOP ((uint32_t)0x20000000) 79 | #define DBGMCU_TIM11_STOP ((uint32_t)0x40000000) 80 | 81 | #define IS_DBGMCU_PERIPH(PERIPH) ((((PERIPH) & 0x800000F8) == 0x00) && ((PERIPH) != 0x00)) 82 | /** 83 | * @} 84 | */ 85 | 86 | /** @defgroup DBGMCU_Exported_Macros 87 | * @{ 88 | */ 89 | 90 | /** 91 | * @} 92 | */ 93 | 94 | /** @defgroup DBGMCU_Exported_Functions 95 | * @{ 96 | */ 97 | 98 | uint32_t DBGMCU_GetREVID(void); 99 | uint32_t DBGMCU_GetDEVID(void); 100 | void DBGMCU_Config(uint32_t DBGMCU_Periph, FunctionalState NewState); 101 | 102 | #ifdef __cplusplus 103 | } 104 | #endif 105 | 106 | #endif /* __STM32F10x_DBGMCU_H */ 107 | /** 108 | * @} 109 | */ 110 | 111 | /** 112 | * @} 113 | */ 114 | 115 | /** 116 | * @} 117 | */ 118 | 119 | /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ 120 | -------------------------------------------------------------------------------- /stm_lib/inc/stm32f10x_exti.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file stm32f10x_exti.h 4 | * @author MCD Application Team 5 | * @version V3.5.0 6 | * @date 11-March-2011 7 | * @brief This file contains all the functions prototypes for the EXTI firmware 8 | * library. 9 | ****************************************************************************** 10 | * @attention 11 | * 12 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 13 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE 14 | * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY 15 | * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING 16 | * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE 17 | * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 18 | * 19 | *

© COPYRIGHT 2011 STMicroelectronics

20 | ****************************************************************************** 21 | */ 22 | 23 | /* Define to prevent recursive inclusion -------------------------------------*/ 24 | #ifndef __STM32F10x_EXTI_H 25 | #define __STM32F10x_EXTI_H 26 | 27 | #ifdef __cplusplus 28 | extern "C" { 29 | #endif 30 | 31 | /* Includes ------------------------------------------------------------------*/ 32 | #include "stm32f10x.h" 33 | 34 | /** @addtogroup STM32F10x_StdPeriph_Driver 35 | * @{ 36 | */ 37 | 38 | /** @addtogroup EXTI 39 | * @{ 40 | */ 41 | 42 | /** @defgroup EXTI_Exported_Types 43 | * @{ 44 | */ 45 | 46 | /** 47 | * @brief EXTI mode enumeration 48 | */ 49 | 50 | typedef enum 51 | { 52 | EXTI_Mode_Interrupt = 0x00, 53 | EXTI_Mode_Event = 0x04 54 | }EXTIMode_TypeDef; 55 | 56 | #define IS_EXTI_MODE(MODE) (((MODE) == EXTI_Mode_Interrupt) || ((MODE) == EXTI_Mode_Event)) 57 | 58 | /** 59 | * @brief EXTI Trigger enumeration 60 | */ 61 | 62 | typedef enum 63 | { 64 | EXTI_Trigger_Rising = 0x08, 65 | EXTI_Trigger_Falling = 0x0C, 66 | EXTI_Trigger_Rising_Falling = 0x10 67 | }EXTITrigger_TypeDef; 68 | 69 | #define IS_EXTI_TRIGGER(TRIGGER) (((TRIGGER) == EXTI_Trigger_Rising) || \ 70 | ((TRIGGER) == EXTI_Trigger_Falling) || \ 71 | ((TRIGGER) == EXTI_Trigger_Rising_Falling)) 72 | /** 73 | * @brief EXTI Init Structure definition 74 | */ 75 | 76 | typedef struct 77 | { 78 | uint32_t EXTI_Line; /*!< Specifies the EXTI lines to be enabled or disabled. 79 | This parameter can be any combination of @ref EXTI_Lines */ 80 | 81 | EXTIMode_TypeDef EXTI_Mode; /*!< Specifies the mode for the EXTI lines. 82 | This parameter can be a value of @ref EXTIMode_TypeDef */ 83 | 84 | EXTITrigger_TypeDef EXTI_Trigger; /*!< Specifies the trigger signal active edge for the EXTI lines. 85 | This parameter can be a value of @ref EXTIMode_TypeDef */ 86 | 87 | FunctionalState EXTI_LineCmd; /*!< Specifies the new state of the selected EXTI lines. 88 | This parameter can be set either to ENABLE or DISABLE */ 89 | }EXTI_InitTypeDef; 90 | 91 | /** 92 | * @} 93 | */ 94 | 95 | /** @defgroup EXTI_Exported_Constants 96 | * @{ 97 | */ 98 | 99 | /** @defgroup EXTI_Lines 100 | * @{ 101 | */ 102 | 103 | #define EXTI_Line0 ((uint32_t)0x00001) /*!< External interrupt line 0 */ 104 | #define EXTI_Line1 ((uint32_t)0x00002) /*!< External interrupt line 1 */ 105 | #define EXTI_Line2 ((uint32_t)0x00004) /*!< External interrupt line 2 */ 106 | #define EXTI_Line3 ((uint32_t)0x00008) /*!< External interrupt line 3 */ 107 | #define EXTI_Line4 ((uint32_t)0x00010) /*!< External interrupt line 4 */ 108 | #define EXTI_Line5 ((uint32_t)0x00020) /*!< External interrupt line 5 */ 109 | #define EXTI_Line6 ((uint32_t)0x00040) /*!< External interrupt line 6 */ 110 | #define EXTI_Line7 ((uint32_t)0x00080) /*!< External interrupt line 7 */ 111 | #define EXTI_Line8 ((uint32_t)0x00100) /*!< External interrupt line 8 */ 112 | #define EXTI_Line9 ((uint32_t)0x00200) /*!< External interrupt line 9 */ 113 | #define EXTI_Line10 ((uint32_t)0x00400) /*!< External interrupt line 10 */ 114 | #define EXTI_Line11 ((uint32_t)0x00800) /*!< External interrupt line 11 */ 115 | #define EXTI_Line12 ((uint32_t)0x01000) /*!< External interrupt line 12 */ 116 | #define EXTI_Line13 ((uint32_t)0x02000) /*!< External interrupt line 13 */ 117 | #define EXTI_Line14 ((uint32_t)0x04000) /*!< External interrupt line 14 */ 118 | #define EXTI_Line15 ((uint32_t)0x08000) /*!< External interrupt line 15 */ 119 | #define EXTI_Line16 ((uint32_t)0x10000) /*!< External interrupt line 16 Connected to the PVD Output */ 120 | #define EXTI_Line17 ((uint32_t)0x20000) /*!< External interrupt line 17 Connected to the RTC Alarm event */ 121 | #define EXTI_Line18 ((uint32_t)0x40000) /*!< External interrupt line 18 Connected to the USB Device/USB OTG FS 122 | Wakeup from suspend event */ 123 | #define EXTI_Line19 ((uint32_t)0x80000) /*!< External interrupt line 19 Connected to the Ethernet Wakeup event */ 124 | 125 | #define IS_EXTI_LINE(LINE) ((((LINE) & (uint32_t)0xFFF00000) == 0x00) && ((LINE) != (uint16_t)0x00)) 126 | #define IS_GET_EXTI_LINE(LINE) (((LINE) == EXTI_Line0) || ((LINE) == EXTI_Line1) || \ 127 | ((LINE) == EXTI_Line2) || ((LINE) == EXTI_Line3) || \ 128 | ((LINE) == EXTI_Line4) || ((LINE) == EXTI_Line5) || \ 129 | ((LINE) == EXTI_Line6) || ((LINE) == EXTI_Line7) || \ 130 | ((LINE) == EXTI_Line8) || ((LINE) == EXTI_Line9) || \ 131 | ((LINE) == EXTI_Line10) || ((LINE) == EXTI_Line11) || \ 132 | ((LINE) == EXTI_Line12) || ((LINE) == EXTI_Line13) || \ 133 | ((LINE) == EXTI_Line14) || ((LINE) == EXTI_Line15) || \ 134 | ((LINE) == EXTI_Line16) || ((LINE) == EXTI_Line17) || \ 135 | ((LINE) == EXTI_Line18) || ((LINE) == EXTI_Line19)) 136 | 137 | 138 | /** 139 | * @} 140 | */ 141 | 142 | /** 143 | * @} 144 | */ 145 | 146 | /** @defgroup EXTI_Exported_Macros 147 | * @{ 148 | */ 149 | 150 | /** 151 | * @} 152 | */ 153 | 154 | /** @defgroup EXTI_Exported_Functions 155 | * @{ 156 | */ 157 | 158 | void EXTI_DeInit(void); 159 | void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct); 160 | void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct); 161 | void EXTI_GenerateSWInterrupt(uint32_t EXTI_Line); 162 | FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line); 163 | void EXTI_ClearFlag(uint32_t EXTI_Line); 164 | ITStatus EXTI_GetITStatus(uint32_t EXTI_Line); 165 | void EXTI_ClearITPendingBit(uint32_t EXTI_Line); 166 | 167 | #ifdef __cplusplus 168 | } 169 | #endif 170 | 171 | #endif /* __STM32F10x_EXTI_H */ 172 | /** 173 | * @} 174 | */ 175 | 176 | /** 177 | * @} 178 | */ 179 | 180 | /** 181 | * @} 182 | */ 183 | 184 | /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ 185 | -------------------------------------------------------------------------------- /stm_lib/inc/stm32f10x_pwr.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file stm32f10x_pwr.h 4 | * @author MCD Application Team 5 | * @version V3.5.0 6 | * @date 11-March-2011 7 | * @brief This file contains all the functions prototypes for the PWR firmware 8 | * library. 9 | ****************************************************************************** 10 | * @attention 11 | * 12 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 13 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE 14 | * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY 15 | * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING 16 | * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE 17 | * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 18 | * 19 | *

© COPYRIGHT 2011 STMicroelectronics

20 | ****************************************************************************** 21 | */ 22 | 23 | /* Define to prevent recursive inclusion -------------------------------------*/ 24 | #ifndef __STM32F10x_PWR_H 25 | #define __STM32F10x_PWR_H 26 | 27 | #ifdef __cplusplus 28 | extern "C" { 29 | #endif 30 | 31 | /* Includes ------------------------------------------------------------------*/ 32 | #include "stm32f10x.h" 33 | 34 | /** @addtogroup STM32F10x_StdPeriph_Driver 35 | * @{ 36 | */ 37 | 38 | /** @addtogroup PWR 39 | * @{ 40 | */ 41 | 42 | /** @defgroup PWR_Exported_Types 43 | * @{ 44 | */ 45 | 46 | /** 47 | * @} 48 | */ 49 | 50 | /** @defgroup PWR_Exported_Constants 51 | * @{ 52 | */ 53 | 54 | /** @defgroup PVD_detection_level 55 | * @{ 56 | */ 57 | 58 | #define PWR_PVDLevel_2V2 ((uint32_t)0x00000000) 59 | #define PWR_PVDLevel_2V3 ((uint32_t)0x00000020) 60 | #define PWR_PVDLevel_2V4 ((uint32_t)0x00000040) 61 | #define PWR_PVDLevel_2V5 ((uint32_t)0x00000060) 62 | #define PWR_PVDLevel_2V6 ((uint32_t)0x00000080) 63 | #define PWR_PVDLevel_2V7 ((uint32_t)0x000000A0) 64 | #define PWR_PVDLevel_2V8 ((uint32_t)0x000000C0) 65 | #define PWR_PVDLevel_2V9 ((uint32_t)0x000000E0) 66 | #define IS_PWR_PVD_LEVEL(LEVEL) (((LEVEL) == PWR_PVDLevel_2V2) || ((LEVEL) == PWR_PVDLevel_2V3)|| \ 67 | ((LEVEL) == PWR_PVDLevel_2V4) || ((LEVEL) == PWR_PVDLevel_2V5)|| \ 68 | ((LEVEL) == PWR_PVDLevel_2V6) || ((LEVEL) == PWR_PVDLevel_2V7)|| \ 69 | ((LEVEL) == PWR_PVDLevel_2V8) || ((LEVEL) == PWR_PVDLevel_2V9)) 70 | /** 71 | * @} 72 | */ 73 | 74 | /** @defgroup Regulator_state_is_STOP_mode 75 | * @{ 76 | */ 77 | 78 | #define PWR_Regulator_ON ((uint32_t)0x00000000) 79 | #define PWR_Regulator_LowPower ((uint32_t)0x00000001) 80 | #define IS_PWR_REGULATOR(REGULATOR) (((REGULATOR) == PWR_Regulator_ON) || \ 81 | ((REGULATOR) == PWR_Regulator_LowPower)) 82 | /** 83 | * @} 84 | */ 85 | 86 | /** @defgroup STOP_mode_entry 87 | * @{ 88 | */ 89 | 90 | #define PWR_STOPEntry_WFI ((uint8_t)0x01) 91 | #define PWR_STOPEntry_WFE ((uint8_t)0x02) 92 | #define IS_PWR_STOP_ENTRY(ENTRY) (((ENTRY) == PWR_STOPEntry_WFI) || ((ENTRY) == PWR_STOPEntry_WFE)) 93 | 94 | /** 95 | * @} 96 | */ 97 | 98 | /** @defgroup PWR_Flag 99 | * @{ 100 | */ 101 | 102 | #define PWR_FLAG_WU ((uint32_t)0x00000001) 103 | #define PWR_FLAG_SB ((uint32_t)0x00000002) 104 | #define PWR_FLAG_PVDO ((uint32_t)0x00000004) 105 | #define IS_PWR_GET_FLAG(FLAG) (((FLAG) == PWR_FLAG_WU) || ((FLAG) == PWR_FLAG_SB) || \ 106 | ((FLAG) == PWR_FLAG_PVDO)) 107 | 108 | #define IS_PWR_CLEAR_FLAG(FLAG) (((FLAG) == PWR_FLAG_WU) || ((FLAG) == PWR_FLAG_SB)) 109 | /** 110 | * @} 111 | */ 112 | 113 | /** 114 | * @} 115 | */ 116 | 117 | /** @defgroup PWR_Exported_Macros 118 | * @{ 119 | */ 120 | 121 | /** 122 | * @} 123 | */ 124 | 125 | /** @defgroup PWR_Exported_Functions 126 | * @{ 127 | */ 128 | 129 | void PWR_DeInit(void); 130 | void PWR_BackupAccessCmd(FunctionalState NewState); 131 | void PWR_PVDCmd(FunctionalState NewState); 132 | void PWR_PVDLevelConfig(uint32_t PWR_PVDLevel); 133 | void PWR_WakeUpPinCmd(FunctionalState NewState); 134 | void PWR_EnterSTOPMode(uint32_t PWR_Regulator, uint8_t PWR_STOPEntry); 135 | void PWR_EnterSTANDBYMode(void); 136 | FlagStatus PWR_GetFlagStatus(uint32_t PWR_FLAG); 137 | void PWR_ClearFlag(uint32_t PWR_FLAG); 138 | 139 | #ifdef __cplusplus 140 | } 141 | #endif 142 | 143 | #endif /* __STM32F10x_PWR_H */ 144 | /** 145 | * @} 146 | */ 147 | 148 | /** 149 | * @} 150 | */ 151 | 152 | /** 153 | * @} 154 | */ 155 | 156 | /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ 157 | -------------------------------------------------------------------------------- /stm_lib/inc/stm32f10x_rtc.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file stm32f10x_rtc.h 4 | * @author MCD Application Team 5 | * @version V3.5.0 6 | * @date 11-March-2011 7 | * @brief This file contains all the functions prototypes for the RTC firmware 8 | * library. 9 | ****************************************************************************** 10 | * @attention 11 | * 12 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 13 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE 14 | * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY 15 | * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING 16 | * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE 17 | * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 18 | * 19 | *

© COPYRIGHT 2011 STMicroelectronics

20 | ****************************************************************************** 21 | */ 22 | 23 | /* Define to prevent recursive inclusion -------------------------------------*/ 24 | #ifndef __STM32F10x_RTC_H 25 | #define __STM32F10x_RTC_H 26 | 27 | #ifdef __cplusplus 28 | extern "C" { 29 | #endif 30 | 31 | /* Includes ------------------------------------------------------------------*/ 32 | #include "stm32f10x.h" 33 | 34 | /** @addtogroup STM32F10x_StdPeriph_Driver 35 | * @{ 36 | */ 37 | 38 | /** @addtogroup RTC 39 | * @{ 40 | */ 41 | 42 | /** @defgroup RTC_Exported_Types 43 | * @{ 44 | */ 45 | 46 | /** 47 | * @} 48 | */ 49 | 50 | /** @defgroup RTC_Exported_Constants 51 | * @{ 52 | */ 53 | 54 | /** @defgroup RTC_interrupts_define 55 | * @{ 56 | */ 57 | 58 | #define RTC_IT_OW ((uint16_t)0x0004) /*!< Overflow interrupt */ 59 | #define RTC_IT_ALR ((uint16_t)0x0002) /*!< Alarm interrupt */ 60 | #define RTC_IT_SEC ((uint16_t)0x0001) /*!< Second interrupt */ 61 | #define IS_RTC_IT(IT) ((((IT) & (uint16_t)0xFFF8) == 0x00) && ((IT) != 0x00)) 62 | #define IS_RTC_GET_IT(IT) (((IT) == RTC_IT_OW) || ((IT) == RTC_IT_ALR) || \ 63 | ((IT) == RTC_IT_SEC)) 64 | /** 65 | * @} 66 | */ 67 | 68 | /** @defgroup RTC_interrupts_flags 69 | * @{ 70 | */ 71 | 72 | #define RTC_FLAG_RTOFF ((uint16_t)0x0020) /*!< RTC Operation OFF flag */ 73 | #define RTC_FLAG_RSF ((uint16_t)0x0008) /*!< Registers Synchronized flag */ 74 | #define RTC_FLAG_OW ((uint16_t)0x0004) /*!< Overflow flag */ 75 | #define RTC_FLAG_ALR ((uint16_t)0x0002) /*!< Alarm flag */ 76 | #define RTC_FLAG_SEC ((uint16_t)0x0001) /*!< Second flag */ 77 | #define IS_RTC_CLEAR_FLAG(FLAG) ((((FLAG) & (uint16_t)0xFFF0) == 0x00) && ((FLAG) != 0x00)) 78 | #define IS_RTC_GET_FLAG(FLAG) (((FLAG) == RTC_FLAG_RTOFF) || ((FLAG) == RTC_FLAG_RSF) || \ 79 | ((FLAG) == RTC_FLAG_OW) || ((FLAG) == RTC_FLAG_ALR) || \ 80 | ((FLAG) == RTC_FLAG_SEC)) 81 | #define IS_RTC_PRESCALER(PRESCALER) ((PRESCALER) <= 0xFFFFF) 82 | 83 | /** 84 | * @} 85 | */ 86 | 87 | /** 88 | * @} 89 | */ 90 | 91 | /** @defgroup RTC_Exported_Macros 92 | * @{ 93 | */ 94 | 95 | /** 96 | * @} 97 | */ 98 | 99 | /** @defgroup RTC_Exported_Functions 100 | * @{ 101 | */ 102 | 103 | void RTC_ITConfig(uint16_t RTC_IT, FunctionalState NewState); 104 | void RTC_EnterConfigMode(void); 105 | void RTC_ExitConfigMode(void); 106 | uint32_t RTC_GetCounter(void); 107 | void RTC_SetCounter(uint32_t CounterValue); 108 | void RTC_SetPrescaler(uint32_t PrescalerValue); 109 | void RTC_SetAlarm(uint32_t AlarmValue); 110 | uint32_t RTC_GetDivider(void); 111 | void RTC_WaitForLastTask(void); 112 | void RTC_WaitForSynchro(void); 113 | FlagStatus RTC_GetFlagStatus(uint16_t RTC_FLAG); 114 | void RTC_ClearFlag(uint16_t RTC_FLAG); 115 | ITStatus RTC_GetITStatus(uint16_t RTC_IT); 116 | void RTC_ClearITPendingBit(uint16_t RTC_IT); 117 | 118 | #ifdef __cplusplus 119 | } 120 | #endif 121 | 122 | #endif /* __STM32F10x_RTC_H */ 123 | /** 124 | * @} 125 | */ 126 | 127 | /** 128 | * @} 129 | */ 130 | 131 | /** 132 | * @} 133 | */ 134 | 135 | /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ 136 | -------------------------------------------------------------------------------- /stm_lib/src/stm32f10x_dbgmcu.c: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file stm32f10x_dbgmcu.c 4 | * @author MCD Application Team 5 | * @version V3.5.0 6 | * @date 11-March-2011 7 | * @brief This file provides all the DBGMCU firmware functions. 8 | ****************************************************************************** 9 | * @attention 10 | * 11 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 12 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE 13 | * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY 14 | * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING 15 | * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE 16 | * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 17 | * 18 | *

© COPYRIGHT 2011 STMicroelectronics

19 | ****************************************************************************** 20 | */ 21 | 22 | /* Includes ------------------------------------------------------------------*/ 23 | #include "stm32f10x_dbgmcu.h" 24 | 25 | /** @addtogroup STM32F10x_StdPeriph_Driver 26 | * @{ 27 | */ 28 | 29 | /** @defgroup DBGMCU 30 | * @brief DBGMCU driver modules 31 | * @{ 32 | */ 33 | 34 | /** @defgroup DBGMCU_Private_TypesDefinitions 35 | * @{ 36 | */ 37 | 38 | /** 39 | * @} 40 | */ 41 | 42 | /** @defgroup DBGMCU_Private_Defines 43 | * @{ 44 | */ 45 | 46 | #define IDCODE_DEVID_MASK ((uint32_t)0x00000FFF) 47 | /** 48 | * @} 49 | */ 50 | 51 | /** @defgroup DBGMCU_Private_Macros 52 | * @{ 53 | */ 54 | 55 | /** 56 | * @} 57 | */ 58 | 59 | /** @defgroup DBGMCU_Private_Variables 60 | * @{ 61 | */ 62 | 63 | /** 64 | * @} 65 | */ 66 | 67 | /** @defgroup DBGMCU_Private_FunctionPrototypes 68 | * @{ 69 | */ 70 | 71 | /** 72 | * @} 73 | */ 74 | 75 | /** @defgroup DBGMCU_Private_Functions 76 | * @{ 77 | */ 78 | 79 | /** 80 | * @brief Returns the device revision identifier. 81 | * @param None 82 | * @retval Device revision identifier 83 | */ 84 | uint32_t DBGMCU_GetREVID(void) 85 | { 86 | return(DBGMCU->IDCODE >> 16); 87 | } 88 | 89 | /** 90 | * @brief Returns the device identifier. 91 | * @param None 92 | * @retval Device identifier 93 | */ 94 | uint32_t DBGMCU_GetDEVID(void) 95 | { 96 | return(DBGMCU->IDCODE & IDCODE_DEVID_MASK); 97 | } 98 | 99 | /** 100 | * @brief Configures the specified peripheral and low power mode behavior 101 | * when the MCU under Debug mode. 102 | * @param DBGMCU_Periph: specifies the peripheral and low power mode. 103 | * This parameter can be any combination of the following values: 104 | * @arg DBGMCU_SLEEP: Keep debugger connection during SLEEP mode 105 | * @arg DBGMCU_STOP: Keep debugger connection during STOP mode 106 | * @arg DBGMCU_STANDBY: Keep debugger connection during STANDBY mode 107 | * @arg DBGMCU_IWDG_STOP: Debug IWDG stopped when Core is halted 108 | * @arg DBGMCU_WWDG_STOP: Debug WWDG stopped when Core is halted 109 | * @arg DBGMCU_TIM1_STOP: TIM1 counter stopped when Core is halted 110 | * @arg DBGMCU_TIM2_STOP: TIM2 counter stopped when Core is halted 111 | * @arg DBGMCU_TIM3_STOP: TIM3 counter stopped when Core is halted 112 | * @arg DBGMCU_TIM4_STOP: TIM4 counter stopped when Core is halted 113 | * @arg DBGMCU_CAN1_STOP: Debug CAN2 stopped when Core is halted 114 | * @arg DBGMCU_I2C1_SMBUS_TIMEOUT: I2C1 SMBUS timeout mode stopped when Core is halted 115 | * @arg DBGMCU_I2C2_SMBUS_TIMEOUT: I2C2 SMBUS timeout mode stopped when Core is halted 116 | * @arg DBGMCU_TIM5_STOP: TIM5 counter stopped when Core is halted 117 | * @arg DBGMCU_TIM6_STOP: TIM6 counter stopped when Core is halted 118 | * @arg DBGMCU_TIM7_STOP: TIM7 counter stopped when Core is halted 119 | * @arg DBGMCU_TIM8_STOP: TIM8 counter stopped when Core is halted 120 | * @arg DBGMCU_CAN2_STOP: Debug CAN2 stopped when Core is halted 121 | * @arg DBGMCU_TIM15_STOP: TIM15 counter stopped when Core is halted 122 | * @arg DBGMCU_TIM16_STOP: TIM16 counter stopped when Core is halted 123 | * @arg DBGMCU_TIM17_STOP: TIM17 counter stopped when Core is halted 124 | * @arg DBGMCU_TIM9_STOP: TIM9 counter stopped when Core is halted 125 | * @arg DBGMCU_TIM10_STOP: TIM10 counter stopped when Core is halted 126 | * @arg DBGMCU_TIM11_STOP: TIM11 counter stopped when Core is halted 127 | * @arg DBGMCU_TIM12_STOP: TIM12 counter stopped when Core is halted 128 | * @arg DBGMCU_TIM13_STOP: TIM13 counter stopped when Core is halted 129 | * @arg DBGMCU_TIM14_STOP: TIM14 counter stopped when Core is halted 130 | * @param NewState: new state of the specified peripheral in Debug mode. 131 | * This parameter can be: ENABLE or DISABLE. 132 | * @retval None 133 | */ 134 | void DBGMCU_Config(uint32_t DBGMCU_Periph, FunctionalState NewState) 135 | { 136 | /* Check the parameters */ 137 | assert_param(IS_DBGMCU_PERIPH(DBGMCU_Periph)); 138 | assert_param(IS_FUNCTIONAL_STATE(NewState)); 139 | 140 | if (NewState != DISABLE) 141 | { 142 | DBGMCU->CR |= DBGMCU_Periph; 143 | } 144 | else 145 | { 146 | DBGMCU->CR &= ~DBGMCU_Periph; 147 | } 148 | } 149 | 150 | /** 151 | * @} 152 | */ 153 | 154 | /** 155 | * @} 156 | */ 157 | 158 | /** 159 | * @} 160 | */ 161 | 162 | /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ 163 | -------------------------------------------------------------------------------- /stm_lib/src/stm32f10x_flash.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LeftRadio/neil-scope3/cf86cfada2b9b32ed0eeb5054fca2bd611318e7f/stm_lib/src/stm32f10x_flash.c -------------------------------------------------------------------------------- /stm_lib/src/stm32f10x_i2c.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LeftRadio/neil-scope3/cf86cfada2b9b32ed0eeb5054fca2bd611318e7f/stm_lib/src/stm32f10x_i2c.c -------------------------------------------------------------------------------- /stm_lib/src/stm32f10x_usart.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LeftRadio/neil-scope3/cf86cfada2b9b32ed0eeb5054fca2bd611318e7f/stm_lib/src/stm32f10x_usart.c -------------------------------------------------------------------------------- /support/Measurments.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file Measurments.h 4 | * @author Left Radio 5 | * @version 1.5.6 6 | * @date 7 | * @brief NeilScope3 Measurments header 8 | ****************************************************************************** 9 | **/ 10 | 11 | #ifndef __MEASURMENTS_H 12 | #define __MEASURMENTS_H 13 | 14 | /* Includes ------------------------------------------------------------------*/ 15 | #include "fft.h" 16 | 17 | /* Exported typedef ----------------------------------------------------------*/ 18 | typedef struct 19 | { 20 | void (*MeasurmentsFunc)(void); 21 | const uint8_t indx; 22 | } MeasMode_TypeDef; 23 | 24 | /* Exported define -----------------------------------------------------------*/ 25 | #define CHA_SW_Ypos 75 26 | 27 | #define LeftLineMeas 305 28 | #define YPOS_DIST 14 29 | 30 | #define mFRTH_YPOS mTHRD_YPOS + YPOS_DIST 31 | #define mTHRD_YPOS mSECND_YPOS + YPOS_DIST 32 | #define mSECND_YPOS mFRST_YPOS + YPOS_DIST 33 | #define mFRST_YPOS mBASE_YPOS + YPOS_DIST 34 | #define mBASE_YPOS 75 35 | 36 | #define MEAS_PARAM_MAX 5 37 | 38 | 39 | /* Exported variables --------------------------------------------------------*/ 40 | extern uint16_t measCursor1, measCursor2, Ypos; 41 | extern uint8_t fft_Mag[1 << NS_P]; 42 | 43 | extern const MeasMode_TypeDef MeasurmentsMode[3]; 44 | extern MeasMode_TypeDef *mModeActive; 45 | 46 | extern Boolean gShowFFTFreq, gShowFFTFreq_Init; 47 | 48 | /* Private function prototypes -----------------------------------------------*/ 49 | /* Exported function ---------------------------------------------------------*/ 50 | void All_Measurments_Menu_1(void); 51 | void All_Measurments_Menu_2(void); 52 | void All_Measurments_Menu_3(void); 53 | 54 | void Init_Meas_Values(void); 55 | 56 | void F_Meas(float *MeasParam, uint8_t Freq); 57 | 58 | void Reset_Calc_Show_Freq(void); 59 | void Calc_Show_Freq(void); 60 | 61 | float cnvrtToVolts(float Value, char *result); 62 | float cnvrtToTime(float Value, char *result); 63 | float cnvrtToFrequency(double Value, char *result); 64 | 65 | 66 | 67 | #endif /* __MEASURMENTS_H */ 68 | /********************************************************************************************************* 69 | END FILE 70 | *********************************************************************************************************/ 71 | -------------------------------------------------------------------------------- /support/Sweep.c: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file Sweep.c 4 | * @author Neil Lab :: Left Radio 5 | * @version v1.0.0 6 | * @date 7 | * @brief 8 | ****************************************************************************** 9 | **/ 10 | 11 | /* Includes ------------------------------------------------------------------*/ 12 | #include "main.h" 13 | #include "Sweep.h" 14 | #include "User_Interface.h" 15 | #include "Synchronization.h" 16 | #include "EPM570.h" 17 | 18 | /* Private typedef -----------------------------------------------------------*/ 19 | /* Private define ------------------------------------------------------------*/ 20 | /* Private macro -------------------------------------------------------------*/ 21 | /* Private variables ---------------------------------------------------------*/ 22 | const uint32_t sweep_coff[] = { 23 | 1, 2, 4, 8, 20, 40, 80, 200, 400, 800, 2000, 4000, 24 | 8000, 20000, 40000, 80000, 200000, 400000, 800000, 2000000, 4000000 25 | }; 26 | 27 | const uint8_t IntrlSweepScaleCoff[4] = { 1, 1, 2, 5 }; 28 | const uint8_t SweepScaleCoff[4] = { 1, 2, 5, 10 }; 29 | uint8_t SweepIndex = 0, ScaleIndex = 0; 30 | uint8_t *SweepScale = (uint8_t*)&SweepScaleCoff[0]; 31 | 32 | extern btnINFO btnSWEEP; 33 | 34 | /* Extern function -----------------------------------------------------------*/ 35 | /* Private function prototypes -----------------------------------------------*/ 36 | /* Private functions ---------------------------------------------------------*/ 37 | 38 | /** 39 | * @brief Function_Name 40 | * @param None 41 | * @retval None 42 | */ 43 | void Sweep_UpdateState(void) 44 | { 45 | /* Select sweep scale and scale index */ 46 | if(gOSC_MODE.Interleave == TRUE) SweepScale = (uint8_t*)&IntrlSweepScaleCoff[ScaleIndex]; 47 | else SweepScale = (uint8_t*)&SweepScaleCoff[ScaleIndex]; 48 | 49 | /* Set new number points and sweep values */ 50 | gOSC_MODE.oscNumPoints = (gSamplesWin.WindowWidh * gSamplesWin.WindowsNum) / (*SweepScale); 51 | gSamplesWin.Sweep = sweep_coff[SweepIndex] - 1; 52 | 53 | /* */ 54 | EPM570_Set_Decimation(gSamplesWin.Sweep); 55 | gSyncState.foops->SetTrigg_X(trigPosX_cursor.Position - leftLimit); 56 | } 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | /********************************************************************************************************* 66 | END FILE 67 | *********************************************************************************************************/ 68 | -------------------------------------------------------------------------------- /support/Sweep.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file Sweep.h 4 | * @author Neil Lab :: Left Radio 5 | * @version v1.0.0 6 | * @date 7 | * @brief header 8 | ****************************************************************************** 9 | **/ 10 | 11 | /* Define to prevent recursive inclusion -------------------------------------*/ 12 | #ifndef __SWEEP_H 13 | #define __SWEEP_H 14 | 15 | /* Includes ------------------------------------------------------------------*/ 16 | /* Exported define -----------------------------------------------------------*/ 17 | /* Exported macro ------------------------------------------------------------*/ 18 | /* Exported typedef ----------------------------------------------------------*/ 19 | /* Exported variables --------------------------------------------------------*/ 20 | extern const uint32_t sweep_coff[]; 21 | 22 | extern uint8_t SweepIndex, ScaleIndex; 23 | extern uint8_t *SweepScale; 24 | extern const uint8_t SweepScaleCoff[4]; 25 | extern const uint8_t IntrlSweepScaleCoff[4]; 26 | 27 | /* Exported function ---------------------------------------------------------*/ 28 | void Sweep_UpdateState(void); 29 | 30 | 31 | 32 | 33 | 34 | #endif /* __SWEEP_H */ 35 | /********************************************************************************************************* 36 | END FILE 37 | *********************************************************************************************************/ 38 | -------------------------------------------------------------------------------- /support/Synchronization.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LeftRadio/neil-scope3/cf86cfada2b9b32ed0eeb5054fca2bd611318e7f/support/Synchronization.c -------------------------------------------------------------------------------- /support/Synchronization.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file Synchronization.h 4 | * @author Neil Lab :: Left Radio 5 | * @version v1.0.0 6 | * @date 7 | * @brief header 8 | ****************************************************************************** 9 | **/ 10 | 11 | /* Define to prevent recursive inclusion -------------------------------------*/ 12 | #ifndef __SYNCHRONIZATION_H 13 | #define __SYNCHRONIZATION_H 14 | 15 | /* Includes ------------------------------------------------------------------*/ 16 | /* Exported define -----------------------------------------------------------*/ 17 | /* Exported macro ------------------------------------------------------------*/ 18 | /* Exported typedef ----------------------------------------------------------*/ 19 | 20 | typedef struct 21 | { 22 | void (*StateUpdate)(void); 23 | void (*StateReset)(void); 24 | uint32_t (*Calc_WriteNumPoints)(uint32_t NumPoints, uint8_t PreTiggCoeff, uint8_t PostTrigCoeff); 25 | uint32_t (*Calc_ReadNumPoints)(uint32_t WinRegVal, uint8_t PostTrigCoeff); 26 | void (*SetTrigg_X)(uint32_t NewPosition); 27 | void (*PreTrigger_Delay)(void); 28 | } Foops_TypeDef; 29 | 30 | typedef struct 31 | { 32 | Channel_ID_TypeDef Sourse; 33 | SyncMode_TypeDef Mode; 34 | SyncAType_TypeDef Type; 35 | uint32_t preTriggerTime_us; 36 | uint32_t Cursor_X; 37 | const Foops_TypeDef* foops; 38 | 39 | } SyncGlobalState_TypeDef; 40 | 41 | 42 | /* Exported variables --------------------------------------------------------*/ 43 | extern volatile SyncGlobalState_TypeDef gSyncState; 44 | 45 | /* Exported function ---------------------------------------------------------*/ 46 | 47 | 48 | 49 | 50 | 51 | 52 | #endif /* __SYNCHRONIZATION_H */ 53 | /********************************************************************************************************* 54 | END FILE 55 | *********************************************************************************************************/ 56 | -------------------------------------------------------------------------------- /syscalls/syscalls.c: -------------------------------------------------------------------------------- 1 | /**************************************************************************//***** 2 | * @file stdio.c 3 | * @brief Implementation of newlib syscall 4 | ********************************************************************************/ 5 | 6 | #include 7 | #include 8 | #include 9 | #include 10 | 11 | #undef errno 12 | extern int errno; 13 | extern int _end; 14 | 15 | /*This function is used for handle heap option*/ 16 | __attribute__ ((used)) 17 | caddr_t _sbrk ( int incr ) 18 | { 19 | static unsigned char *heap = NULL; 20 | unsigned char *prev_heap; 21 | 22 | if (heap == NULL) { 23 | heap = (unsigned char *)&_end; 24 | } 25 | prev_heap = heap; 26 | 27 | heap += incr; 28 | 29 | return (caddr_t) prev_heap; 30 | } 31 | 32 | __attribute__ ((used)) 33 | int link(char *old, char *new) 34 | { 35 | return -1; 36 | } 37 | 38 | __attribute__ ((used)) 39 | int _close(int file) 40 | { 41 | return -1; 42 | } 43 | 44 | __attribute__ ((used)) 45 | int _fstat(int file, struct stat *st) 46 | { 47 | st->st_mode = S_IFCHR; 48 | return 0; 49 | } 50 | 51 | __attribute__ ((used)) 52 | int _isatty(int file) 53 | { 54 | return 1; 55 | } 56 | 57 | __attribute__ ((used)) 58 | int _lseek(int file, int ptr, int dir) 59 | { 60 | return 0; 61 | } 62 | 63 | /*Low layer read(input) function*/ 64 | __attribute__ ((used)) 65 | int _read(int file, char *ptr, int len) 66 | { 67 | 68 | #if 0 69 | //user code example 70 | int i; 71 | (void)file; 72 | 73 | for(i = 0; i < len; i++) 74 | { 75 | // UART_GetChar is user's basic input function 76 | *ptr++ = UART_GetChar(); 77 | } 78 | 79 | #endif 80 | 81 | return len; 82 | } 83 | 84 | 85 | /*Low layer write(output) function*/ 86 | __attribute__ ((used)) 87 | int _write(int file, char *ptr, int len) 88 | { 89 | 90 | #if 0 91 | //user code example 92 | 93 | int i; 94 | (void)file; 95 | 96 | for(i = 0; i < len; i++) 97 | { 98 | // UART_PutChar is user's basic output function 99 | UART_PutChar(*ptr++); 100 | } 101 | #endif 102 | 103 | return len; 104 | } 105 | 106 | __attribute__ ((used)) 107 | void abort(void) 108 | { 109 | /* Abort called */ 110 | while(1); 111 | } 112 | 113 | /* --------------------------------- End Of File ------------------------------ */ 114 | --------------------------------------------------------------------------------