From 7052e8c1116a2c4e59095733c53750f0cf395b64 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Sun, 23 Jun 2024 20:58:33 -0700 Subject: [PATCH] Why no math good --- ch32v/ch32v203-goertzel/Makefile | 15 + ch32v/ch32v203-goertzel/adcgoertzel.c | 388 +++++++++++++++++++++ ch32v/ch32v203-goertzel/funconfig.h | 10 + ch32v/ch32v203-goertzel/ttest/Makefile | 17 + ch32v/ch32v203-goertzel/ttest/demo_run.ods | Bin 0 -> 108872 bytes ch32v/ch32v203-goertzel/ttest/ttest.c | 110 ++++++ 6 files changed, 540 insertions(+) create mode 100644 ch32v/ch32v203-goertzel/Makefile create mode 100644 ch32v/ch32v203-goertzel/adcgoertzel.c create mode 100644 ch32v/ch32v203-goertzel/funconfig.h create mode 100644 ch32v/ch32v203-goertzel/ttest/Makefile create mode 100644 ch32v/ch32v203-goertzel/ttest/demo_run.ods create mode 100644 ch32v/ch32v203-goertzel/ttest/ttest.c diff --git a/ch32v/ch32v203-goertzel/Makefile b/ch32v/ch32v203-goertzel/Makefile new file mode 100644 index 0000000..6cb6078 --- /dev/null +++ b/ch32v/ch32v203-goertzel/Makefile @@ -0,0 +1,15 @@ +all : flash + +TARGET:=adcgoertzel +TARGET_MCU:=CH32V203G6U6 +TARGET_MCU_PACKAGE:=CH32V203G6U6 +CH32V003FUN:=../ch32v003fun/ch32v003fun + +EXTRA_CFLAGS:=-Wno-unused-function -I../../lib -I../ch32v203-fft/lib + +include ../ch32v003fun/ch32v003fun/ch32v003fun.mk + +flash : cv_flash +clean : cv_clean + rm -rf rf_data_gen chirpbuff.dat chirpbuff.h chirpbuffinfo.h + diff --git a/ch32v/ch32v203-goertzel/adcgoertzel.c b/ch32v/ch32v203-goertzel/adcgoertzel.c new file mode 100644 index 0000000..267a65b --- /dev/null +++ b/ch32v/ch32v203-goertzel/adcgoertzel.c @@ -0,0 +1,388 @@ +/** + +MIT-like-non-ai-license + +Copyright (c) 2024 Charles Lohr "CNLohr" + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the two following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +In addition the following restrictions apply: + +1. The Software and any modifications made to it may not be used for the +purpose of training or improving machine learning algorithms, including but not +limited to artificial intelligence, natural language processing, or data +mining. This condition applies to any derivatives, modifications, or updates +based on the Software code. Any usage of the Software in an AI-training dataset +is considered a breach of this License. + +2. The Software may not be included in any dataset used for training or +improving machine learning algorithms, including but not limited to artificial +intelligence, natural language processing, or data mining. + + +3. Any person or organization found to be in violation of these restrictions +will be subject to legal action and may be held liable for any damages +resulting from such use. + +If any term is unenforcable, other terms remain in-force. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +**/ + +// NOT LORA!!! -- but experimenting with the possibility of rx. + +// SETUP INSTRUCTIONS: +// (1) `make` in the optionbytes folder to configure `RESET` correctly. +// (2) Create a tone (if using the funprog, ../ch32v003fun/minichlink/minichlink -X ECLK 1:235:189:9:3 for 27.48387097MHz +// (2) or, for 24.387096762MHz - ../ch32v003fun/minichlink/minichlink -X ECLK 1:150:49:8:3 + +/* More notes + + * Minimum sample time with DMA = fCPU / 28 (5.14MHz) + +*/ + + +#include "ch32v003fun.h" +#include +#include + +#define SH1107_128x128 + +#include "ssd1306_i2c.h" +#include "ssd1306.h" + + +#define PWM_PERIOD (31-1) //For 27.0MHz, use 36MHz if quadrature -- It appears to be good for *244 in the table? WHY 26MHz???!?!!? + +#define ADC_BUFFSIZE 512 +volatile uint16_t adc_buffer[ADC_BUFFSIZE]; + +void SetupADC() +{ + // XXX TODO -look into PGA + // XXX TODO - Look into tag-teaming the ADCs + + // PDA is analog input chl 7 + GPIOA->CFGLR &= ~(0xf<<(4*7)); // CNF = 00: Analog, MODE = 00: Input + + // ADC CLK is chained off of APB2. + + // Reset the ADC to init all regs + RCC->APB2PRSTR |= RCC_APB2Periph_ADC1; + RCC->APB2PRSTR &= ~RCC_APB2Periph_ADC1; + + // ADCCLK = 12 MHz => RCC_ADCPRE divide by 4 + RCC->CFGR0 &= ~RCC_ADCPRE; // Clear out the bis in case they were set + RCC->CFGR0 |= RCC_ADCPRE_DIV2; // Fastest possible (divide-by-2) NOTE: This is OUTSIDE the specified value in the datasheet. + + // Set up single conversion on chl 7 + ADC1->RSQR1 = 0; + ADC1->RSQR2 = 0; + ADC1->RSQR3 = 7; // 0-9 for 8 ext inputs and two internals + + // Not using injection group. + + // Sampling time for channels. Careful: This has PID tuning implications. + // Note that with 3 and 3,the full loop (and injection) runs at 138kHz. + ADC1->SAMPTR2 = (0<<(3*7)); + + // Turn on ADC and set rule group to sw trig + // 0 = Use TRGO event for Timer 1 to fire ADC rule. + ADC1->CTLR2 = ADC_ADON | ADC_EXTTRIG | ADC_DMA; + + // Reset calibration + ADC1->CTLR2 |= ADC_RSTCAL; + while(ADC1->CTLR2 & ADC_RSTCAL); + + // Calibrate ADC + ADC1->CTLR2 |= ADC_CAL; + while(ADC1->CTLR2 & ADC_CAL); + + // ADC_SCAN: Allow scanning. + ADC1->CTLR1 = /*ADC_Pga_64 | */ADC_SCAN; + + + // Turn on DMA + RCC->AHBPCENR |= RCC_AHBPeriph_DMA1; + + //DMA1_Channel1 is for ADC + DMA1_Channel1->PADDR = (uint32_t)&ADC1->RDATAR; + DMA1_Channel1->MADDR = (uint32_t)adc_buffer; + DMA1_Channel1->CNTR = ADC_BUFFSIZE; + DMA1_Channel1->CFGR = + DMA_M2M_Disable | + DMA_Priority_VeryHigh | + DMA_MemoryDataSize_HalfWord | + DMA_PeripheralDataSize_HalfWord | + DMA_MemoryInc_Enable | + DMA_Mode_Circular | + DMA_DIR_PeripheralSRC; + +// NVIC_SetPriority( DMA1_Channel1_IRQn, 0<<4 ); //We don't need to tweak priority. + NVIC_EnableIRQ( DMA1_Channel1_IRQn ); + DMA1_Channel1->CFGR |= DMA_CFGR1_EN | DMA_IT_TC | DMA_IT_HT; // Transmission Complete + Half Empty Interrupts. + + + + + // Turn on DMA channel 1 + DMA1_Channel1->CFGR |= DMA_CFGR1_EN; + + // Enable continuous conversion and DMA + ADC1->CTLR2 |= ADC_DMA; // | ADC_CONT; + + // start conversion + ADC1->CTLR2 |= ADC_SWSTART;// | ADC_CONT; + +} + +static void SetupTimer1() +{ + // Enable Timer 1 + RCC->APB2PRSTR |= RCC_APB2Periph_TIM1; + RCC->APB2PRSTR &= ~RCC_APB2Periph_TIM1; + + TIM1->PSC = 0; // Prescalar to 0x0000 (so, 48MHz base clock) + TIM1->ATRLR = PWM_PERIOD; + +#ifdef PWM_OUTPUT + // PA10 = T1CH3. + GPIOA->CFGHR &= ~(0xf<<(4*2)); + GPIOA->CFGHR |= (GPIO_Speed_10MHz | GPIO_CNF_OUT_PP_AF)<<(4*2); + + TIM1->CCER = TIM_CC3E | TIM_CC3P; + TIM1->CHCTLR2 = TIM_OC3M_2 | TIM_OC3M_1; + TIM1->CH3CVR = 5; // Actual duty cycle (Off to begin with) +#endif + + TIM1->CCER = TIM_CC1E; + TIM1->CHCTLR1 = TIM_OC1M_2 | TIM_OC1M_1; + TIM1->CH1CVR = 1; + + // Setup TRGO to trigger for ADC (NOTE: Not on the 203! TIM1_TRGO is only connected to injection) + //TIM1->CTLR2 = TIM_MMS_1; + + // Enable TIM1 outputs + TIM1->BDTR = TIM_MOE; + TIM1->CTLR1 = TIM_CEN; +} + + +void InnerLoop() __attribute__((noreturn)); + + +uint32_t tc; + + +volatile uint16_t * adc_tail = adc_buffer; + + +const uint32_t g_goertzel_omega_per_sample = 41016; // 51/128 * 3.14159 * 65536 +const uint32_t g_goertzel_coefficient = 106228;//2 * cos( g_goertzel_omega_per_sample / 65536 * 180 / 3.141592) * 65536; +const uint32_t g_goertzel_coefficient_s = 76781;//2 * sin( g_goertzel_omega_per_sample / 65536 * 180 / 3.141592 ) * 65536; + +uint32_t g_goertzel_samples; +uint32_t g_goertzel_outs; +int32_t g_goertzelp, g_goertzelp2; +int32_t g_goertzelp_store, g_goertzelp2_store; + +void DMA1_Channel1_IRQHandler( void ) __attribute__((interrupt)); +void DMA1_Channel1_IRQHandler( void ) +{ + //GPIOD->BSHR = 1; // Turn on GPIOD0 for profiling + + // Timer goes backwards when we are moving forwards. + volatile uint16_t * adc_buffer_end = 0; + volatile uint16_t * adc_buffer_top = adc_buffer + ADC_BUFFSIZE; + + int32_t goertzel_coefficient = g_goertzel_coefficient; + int32_t goertzelp2 = g_goertzelp2; + int32_t goertzelp = g_goertzelp; + uint32_t goertzel_samples = g_goertzel_samples; + // Backup flags. + volatile int intfr = DMA1->INTFR; + do + { + // Clear all possible flags. + DMA1->INTFCR = DMA1_IT_GL1; + + int tpl = ADC_BUFFSIZE - DMA1_Channel1->CNTR; // Warning, sometimes this is == to the base, or == 0 (i.e. might be 256, if top is 255) + tpl += ADC_BUFFSIZE; + tpl = (tpl & (ADC_BUFFSIZE-1)); + if( tpl == ADC_BUFFSIZE ) tpl = 0; + + adc_buffer_end = adc_buffer + ( ( tpl / 4) * 4 ); + + while( adc_tail != adc_buffer_end ) + { + + int32_t t; // 1/2 of 4096, to try to keep our numbers reasonable. + + // Here is where the magic happens. + int32_t goertzel; + + #define ITERATION(x) \ + t = (adc_tail[x] - 2048)<<8; \ + goertzel = t + ( ( (int64_t)(goertzel_coefficient) * goertzelp ) >> 32 ) - goertzelp2; \ + goertzelp2 = goertzelp; \ + goertzelp = goertzel; \ + + ITERATION( 0 ); + ITERATION( 1 ); + ITERATION( 2 ); + ITERATION( 3 ); + + adc_tail+=4; + goertzel_samples+=4; + if( adc_tail == adc_buffer_top ) adc_tail = adc_buffer; + if( goertzel_samples == 128 ) + { + g_goertzelp_store = goertzelp; + g_goertzelp2_store = goertzelp2; + + goertzelp = 0; + goertzelp2 = 0; + + g_goertzel_outs++; + goertzel_samples = 0; + } + } + + + intfr = DMA1->INTFR; + } while( intfr & DMA1_IT_GL1 ); + + g_goertzelp2 = goertzelp2; + g_goertzelp = goertzelp; + g_goertzel_samples = goertzel_samples; + + //GPIOD->BSHR = 1<<16; // Turn off GPIOD0 for profiling +} + + + +void InnerLoop() +{ + while(1){ + + int k; + int adcz = adc_buffer[0]; + for( k = 0; k < 128; k++ ) + { + int y = adc_buffer[k]-adcz + 64; + if( y < 0 ) y = 0; + if( y > 127 ) y = 127; + ssd1306_drawPixel( k, y, 1 ); + } + + ssd1306_refresh(); + ssd1306_setbuf(0); + + printf( "%3d %6d %6d\n", g_goertzel_outs,g_goertzelp2_store, g_goertzelp_store ); +// Delay_Ms(940); + } + +} + +int main() +{ + SystemInit(); + + SysTick->CTLR = (1<<2) | 1; // HCLK + Delay_Ms(100); + + + printf( "System On\n" ); + + RCC->CTLR |= RCC_HSEON; + while( ! ( RCC->CTLR & RCC_HSERDY ) ); + + RCC->CFGR0 = (RCC->CFGR0 & ~RCC_SW) | RCC_SW_HSE; + + RCC->CTLR &= ~RCC_PLLON; + + // Switch PLL to HSE. + RCC->CFGR0 |= RCC_PLLSRC; + + // x18; 8MHz x 18 = 144 MHz + RCC->CFGR0 &= ~RCC_PPRE2; // No divisor on APB1/2 + RCC->CFGR0 &= ~RCC_PPRE1; + RCC->CFGR0 |= RCC_PLLMULL_0 | RCC_PLLMULL_1 | RCC_PLLMULL_2 | RCC_PLLMULL_3; + + RCC->CTLR |= RCC_PLLON; + + // Switch to PLL + RCC->CFGR0 = (RCC->CFGR0 & ~RCC_SW) | RCC_SW_PLL; + + // Disable HSI + RCC->CTLR &= ~(RCC_HSION); + + Delay_Ms(10); + + + printf( "CTLR: %08x / CFGR0: %08x\n", (RCC->CTLR), (RCC->CFGR0) ); + RCC->AHBPCENR |= 3; //DMA2EN | DMA1EN + RCC->APB2PCENR |= RCC_APB2Periph_TIM1 | RCC_APB2Periph_ADC1 | RCC_APB2Periph_ADC2 | 0x07; // Enable all GPIO + RCC->APB1PCENR |= RCC_APB1Periph_TIM2; + + SetupADC(); + + printf( "Setting up OLED.\n" ); + ssd1306_i2c_setup(); + uint8_t ret = ssd1306_i2c_init(); + ssd1306_init(); + ssd1306_setbuf(0); + +#if 0 + int i = 0; + int k = 0; + int frame = 0; + while( 1) + { +// ssd1306_drawLine( (frame)%128, (0)%128, (0)%128, (127-frame)%128, 1 ); + ssd1306_drawstr( frame%128, frame%128, "hello", 1 ); + + ssd1306_refresh(); + ssd1306_setbuf(0); + frame++; + } + + while(1); +#endif + +#if 0 + // turn on the op-amp + EXTEN->EXTEN_CTR |= EXTEN_OPA_EN; + + // select op-amp pos pin: 0 = PA2, 1 = PD7 + EXTEN->EXTEN_CTR |= EXTEN_OPA_PSEL; + + // select op-amp neg pin: 0 = PA1, 1 = PD0 + EXTEN->EXTEN_CTR |= EXTEN_OPA_NSEL; +#endif + + + printf( "ADC Setup\n" ); + + SetupTimer1(); + + printf( "Timer 1 setup\n" ); + + InnerLoop(); +} diff --git a/ch32v/ch32v203-goertzel/funconfig.h b/ch32v/ch32v203-goertzel/funconfig.h new file mode 100644 index 0000000..eb91275 --- /dev/null +++ b/ch32v/ch32v203-goertzel/funconfig.h @@ -0,0 +1,10 @@ +#ifndef _FUNCONFIG_H +#define _FUNCONFIG_H + +#define FUNCONF_USE_DEBUGPRINTF 1 +#define FUNCONF_USE_UARTPRINTF 0 +#define FUNCONF_USE_HSE 1 +#define FUNCONF_SYSTICK_USE_HCLK 1 + +#endif + diff --git a/ch32v/ch32v203-goertzel/ttest/Makefile b/ch32v/ch32v203-goertzel/ttest/Makefile new file mode 100644 index 0000000..c835885 --- /dev/null +++ b/ch32v/ch32v203-goertzel/ttest/Makefile @@ -0,0 +1,17 @@ +all : test floattest + +floattest : floattestt + ./floattestt + +floattestt : floattestt.c + gcc -o $@ $^ -lm -g + + +test : ttest + ./ttest + +ttest : ttest.c + gcc -o $@ $^ -lm -g + +clean : + rm -rf *.o ttest *~ floattestt diff --git a/ch32v/ch32v203-goertzel/ttest/demo_run.ods b/ch32v/ch32v203-goertzel/ttest/demo_run.ods new file mode 100644 index 0000000000000000000000000000000000000000..a70914f9523a28b124fc572e74221243139b4587 GIT binary patch literal 108872 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 K{ +#include +#include + +uint32_t g_goertzel_omega_per_sample; +uint32_t g_goertzel_coefficient; +int32_t g_goertzel_coefficient_s; +uint32_t g_goertzel_samples; +uint32_t g_goertzel_outs; +int32_t g_goertzelp, g_goertzelp2; +int32_t g_goertzelp_store, g_goertzelp2_store; + +int main() +{ + + g_goertzel_omega_per_sample = 4.0/128 * 3.1415926535*2.0*65536; + g_goertzel_coefficient = 2 * cos( g_goertzel_omega_per_sample / 65536.0 ) * 65536; + g_goertzel_coefficient_s = 2 * sin( g_goertzel_omega_per_sample / 65536.0 ) * 65536; + + + const double AomegaPerSample = g_goertzel_omega_per_sample/65536.0; + const int AnumSamples = 256; // enough to go from 0 to 2pi + double Acoeff = 2 * cos( AomegaPerSample ) * 65536; + double Acoeff_s = 2 * sin( AomegaPerSample ) * 65536; + double Asprev = AomegaPerSample * 65536; + double Asprev2 = 0; + +printf( "%d / %d / %d %f / %f / %f\n", g_goertzel_omega_per_sample, g_goertzel_coefficient, g_goertzel_coefficient_s, Acoeff, Acoeff_s, AomegaPerSample ); + + + g_goertzelp = g_goertzel_omega_per_sample; + + int32_t goertzel_coefficient = g_goertzel_coefficient; + int32_t goertzelp2 = g_goertzelp2; + int32_t goertzelp = g_goertzelp; + uint32_t goertzel_samples = g_goertzel_samples; + + uint32_t adc_tail; + + double As; + + int js = 0; + for( js = 0; js < 260/4; js++ ) + { + int32_t t; // 1/2 of 4096, to try to keep our numbers reasonable. + + // Here is where the magic happens. + int32_t goertzel; + + #define ITERATION(x) \ + t = sin( AomegaPerSample * (x+js*4) ) * 32768; \ +\ + /* Fixed */ \ + printf( ">> %d + %d((%d<<8*%d<<8)>>32) - %d -", t, ( ( ((int64_t)(goertzel_coefficient)<<8) * (int64_t)(goertzelp<<8) ) >> 32 ), goertzel_coefficient, goertzelp, goertzelp2 ); \ + goertzel = t + ( ( ((int64_t)(goertzel_coefficient)<<8) * (int64_t)(goertzelp<<8) ) >> 32 ) - goertzelp2; \ + goertzelp2 = goertzelp; \ + goertzelp = goertzel; \ +\ + /* Float */ \ + As = t + ( Acoeff * Asprev ) / 65536.0 - Asprev2; \ + Asprev2 = Asprev; \ + Asprev = As; \ +\ +/*printf( "%d,%d,%d,%d\n", ( ( (int64_t)(goertzel_coefficient) * (int64_t)goertzelp ) >> 32 ) , goertzel_coefficient, goertzelp, goertzelp2 ); */ \ +\ + {\ + int32_t rr = (((int64_t)(g_goertzel_coefficient << 15) * (int64_t)goertzelp)>>32) - (goertzelp2); \ + int32_t ri = (((int64_t)(g_goertzel_coefficient_s << 15) * (int64_t)goertzelp)>>32); \ + /*printf( "%3d %10d %10d %10d %10d / %9d %9d %9d * ", js*4+x, rr, ri, goertzelp, goertzelp2, goertzel_coefficient, g_goertzel_omega_per_sample, t );*/ \ + /*printf( "%4d %10d %10d (%10d %10d) ", js*4+x, goertzelp, goertzelp2, goertzel_coefficient, g_goertzel_coefficient_s );*/ \ + printf( "%4d %10d %10d (%10d [%d+%d*=%lld] %10d) ", js*4+x, goertzelp, goertzelp2, rr, t, g_goertzel_coefficient, ( ( (int64_t)(goertzel_coefficient<<8) * (int64_t)(goertzelp2<<8) ) >> 32 ), ri ); \ +\ + float Apower = Asprev*Asprev + Asprev2*Asprev2 - (Acoeff * Asprev * Asprev2); \ + double ArR = 0.5 * Acoeff * Asprev / 65536 - Asprev2; \ + double ArI = 0.5 * Acoeff_s * Asprev / 65536; \ + /*printf( "%14.3f, %14.3f (%14.3f %14.3f)\n", Asprev, Asprev2, Acoeff,Acoeff_s );*/ \ + printf( "%14.3f, %14.3f (%14.3f %14.3f %f)\n", Asprev, Asprev2, ArR, ArI, sqrt( ArR*ArR +ArI*ArI ) ); \ + } + + + ITERATION( 0 ); + ITERATION( 1 ); + ITERATION( 2 ); + ITERATION( 3 ); + + adc_tail+=4; + goertzel_samples+=4; +// if( adc_tail == adc_buffer_top ) adc_tail = adc_buffer; + +/* if( goertzel_samples == 128 ) + { + g_goertzelp_store = goertzelp; + g_goertzelp2_store = goertzelp2; + + goertzelp = 0; + goertzelp2 = 0; + + g_goertzel_outs++; + goertzel_samples = 0; + } +*/ + } + + + g_goertzelp2 = goertzelp2; + g_goertzelp = goertzelp; + g_goertzel_samples = goertzel_samples; + +} +