├── .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 | 
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 |
--------------------------------------------------------------------------------