diff --git a/Makefile b/Makefile index 155f6f6..47254be 100644 --- a/Makefile +++ b/Makefile @@ -120,7 +120,7 @@ CSRC = $(STARTUPSRC) \ $(STREAMSSRC) \ $(SHELLSRC) \ usbcfg.c \ - main.c si5351.c tlv320aic3204.c dsp.c plot.c ui.c ili9341.c numfont20x24.c Font8x8.c flash.c adc.c + main.c si5351.c tlv320aic3204.c dsp.c plot.c ui.c ili9341.c numfont20x22.c Font8x8.c flash.c adc.c # $(TESTSRC) \ diff --git a/fft.h b/fft.h index 0250671..9f8c44c 100644 --- a/fft.h +++ b/fft.h @@ -33,39 +33,6 @@ static uint16_t reverse_bits(uint16_t x, int n) { return result; } -static const float sin_table[] = { - /* - * float has about 7.2 digits of precision - for (uint8_t i = 0; i < FFT_SIZE - (FFT_SIZE / 4); i++) { - printf("% .8f,%c", sin(2 * M_PI * i / FFT_SIZE), i % 8 == 7 ? '\n' : ' '); - } - */ - 0.00000000, 0.02454123, 0.04906767, 0.07356456, 0.09801714, 0.12241068, 0.14673047, 0.17096189, - 0.19509032, 0.21910124, 0.24298018, 0.26671276, 0.29028468, 0.31368174, 0.33688985, 0.35989504, - 0.38268343, 0.40524131, 0.42755509, 0.44961133, 0.47139674, 0.49289819, 0.51410274, 0.53499762, - 0.55557023, 0.57580819, 0.59569930, 0.61523159, 0.63439328, 0.65317284, 0.67155895, 0.68954054, - 0.70710678, 0.72424708, 0.74095113, 0.75720885, 0.77301045, 0.78834643, 0.80320753, 0.81758481, - 0.83146961, 0.84485357, 0.85772861, 0.87008699, 0.88192126, 0.89322430, 0.90398929, 0.91420976, - 0.92387953, 0.93299280, 0.94154407, 0.94952818, 0.95694034, 0.96377607, 0.97003125, 0.97570213, - 0.98078528, 0.98527764, 0.98917651, 0.99247953, 0.99518473, 0.99729046, 0.99879546, 0.99969882, - 1.00000000, 0.99969882, 0.99879546, 0.99729046, 0.99518473, 0.99247953, 0.98917651, 0.98527764, - 0.98078528, 0.97570213, 0.97003125, 0.96377607, 0.95694034, 0.94952818, 0.94154407, 0.93299280, - 0.92387953, 0.91420976, 0.90398929, 0.89322430, 0.88192126, 0.87008699, 0.85772861, 0.84485357, - 0.83146961, 0.81758481, 0.80320753, 0.78834643, 0.77301045, 0.75720885, 0.74095113, 0.72424708, - 0.70710678, 0.68954054, 0.67155895, 0.65317284, 0.63439328, 0.61523159, 0.59569930, 0.57580819, - 0.55557023, 0.53499762, 0.51410274, 0.49289819, 0.47139674, 0.44961133, 0.42755509, 0.40524131, - 0.38268343, 0.35989504, 0.33688985, 0.31368174, 0.29028468, 0.26671276, 0.24298018, 0.21910124, - 0.19509032, 0.17096189, 0.14673047, 0.12241068, 0.09801714, 0.07356456, 0.04906767, 0.02454123, - 0.00000000, -0.02454123, -0.04906767, -0.07356456, -0.09801714, -0.12241068, -0.14673047, -0.17096189, - -0.19509032, -0.21910124, -0.24298018, -0.26671276, -0.29028468, -0.31368174, -0.33688985, -0.35989504, - -0.38268343, -0.40524131, -0.42755509, -0.44961133, -0.47139674, -0.49289819, -0.51410274, -0.53499762, - -0.55557023, -0.57580819, -0.59569930, -0.61523159, -0.63439328, -0.65317284, -0.67155895, -0.68954054, - -0.70710678, -0.72424708, -0.74095113, -0.75720885, -0.77301045, -0.78834643, -0.80320753, -0.81758481, - -0.83146961, -0.84485357, -0.85772861, -0.87008699, -0.88192126, -0.89322430, -0.90398929, -0.91420976, - -0.92387953, -0.93299280, -0.94154407, -0.94952818, -0.95694034, -0.96377607, -0.97003125, -0.97570213, - -0.98078528, -0.98527764, -0.98917651, -0.99247953, -0.99518473, -0.99729046, -0.99879546, -0.99969882, -}; - /*** * dir = forward: 0, inverse: 1 * https://www.nayuki.io/res/free-small-fft-in-multiple-languages/fft.c @@ -73,7 +40,6 @@ static const float sin_table[] = { static void fft256(float array[][2], const uint8_t dir) { const uint16_t n = 256; const uint8_t levels = 8; // log2(n) - const float* const cos_table = &sin_table[64]; const uint8_t real = dir & 1; const uint8_t imag = ~real & 1; @@ -97,8 +63,8 @@ static void fft256(float array[][2], const uint8_t dir) { for (uint16_t i = 0; i < n; i += size) { for (uint16_t j = i, k = 0; j < i + halfsize; j++, k += tablestep) { uint16_t l = j + halfsize; - float tpre = array[l][real] * cos_table[k] + array[l][imag] * sin_table[k]; - float tpim = -array[l][real] * sin_table[k] + array[l][imag] * cos_table[k] ; + float tpre = array[l][real] * cos(2 * M_PI * k / 256) + array[l][imag] * sin(2 * M_PI * k / 256); + float tpim = -array[l][real] * sin(2 * M_PI * k / 256) + array[l][imag] * cos(2 * M_PI * k / 256); array[l][real] = array[j][real] - tpre; array[l][imag] = array[j][imag] - tpim; array[j][real] += tpre; diff --git a/ili9341.c b/ili9341.c index 464454f..ac4ed31 100644 --- a/ili9341.c +++ b/ili9341.c @@ -341,6 +341,7 @@ ili9341_drawchar_size(uint8_t ch, int x, int y, uint16_t fg, uint16_t bg, uint8_ { uint16_t *buf = spi_buffer; uint8_t bits; + int cline, ccol; ch = x8x8_map_char_table(ch); @@ -472,28 +473,33 @@ ili9341_line(int x0, int y0, int x1, int y1, uint16_t fg) } -const font_t NF20x24 = { 20, 24, 1, 24, (const uint32_t *)numfont20x24 }; -//const font_t NF32x24 = { 32, 24, 1, 24, (const uint32_t *)numfont32x24 }; -//const font_t NF32x48 = { 32, 48, 2, 24, (const uint32_t *)numfont32x24 }; +const font_t NF20x22 = { 20, 22, 1, 3*22, (const uint8_t *)numfont20x22 }; void ili9341_drawfont(uint8_t ch, const font_t *font, int x, int y, uint16_t fg, uint16_t bg) { uint16_t *buf = spi_buffer; - uint32_t bits; - const uint32_t *bitmap = &font->bitmap[font->slide * ch]; - int c, r, j; + const uint8_t *bitmap = &font->bitmap[font->slide * ch]; + int c, r; - for (c = 0; c < font->slide; c++) { - for (j = 0; j < font->scaley; j++) { - bits = bitmap[c]; - for (r = 0; r < font->width; r++) { - *buf++ = (0x80000000UL & bits) ? fg : bg; - bits <<= 1; + for (c = 0; c < font->height; c++) + { + uint8_t bits = *bitmap++; + uint8_t m = 0x80; + for (r = 0; r < font->width; r++) + { + *buf++ = (bits & m) ? fg : bg; + m >>= 1; + + if (m == 0) + { + bits = *bitmap++; + m = 0x80; } } } - ili9341_bulk(x, y, font->width, font->height); + + ili9341_bulk(x, y, font->width, font->height); } #if 0 @@ -530,8 +536,8 @@ ili9341_test(int mode) #endif #if 1 case 3: - for (i = 0; i < 10; i++) - ili9341_drawfont(i, &NF20x24, i*20, 120, colormap[i%6], 0x0000); + for (i = 0; i < 10; i++) + ili9341_drawfont(i, &NF20x22, i*20, 120, colormap[i%6], 0x0000); break; #endif #if 0 diff --git a/main.c b/main.c index 76a5ff6..b0aa87e 100644 --- a/main.c +++ b/main.c @@ -32,7 +32,7 @@ #include #include -#define ENABLED_DUMP +//#define ENABLED_DUMP static void apply_error_term_at(int i); static void apply_edelay_at(int i); @@ -662,7 +662,7 @@ bool sweep(bool break_on_operation) for (i = 0; i < sweep_points; i++) { int delay = set_frequency(frequencies[i]); - tlv320aic3204_select_in3(); // CH0:REFLECT + tlv320aic3204_select(0); // CH0:REFLECT wait_dsp(delay); // blink LED while scanning @@ -671,7 +671,7 @@ bool sweep(bool break_on_operation) /* calculate reflection coeficient */ (*sample_func)(measured[0][i]); - tlv320aic3204_select_in1(); // CH1:TRANSMISSION + tlv320aic3204_select(1); // CH1:TRANSMISSION wait_dsp(delay + DELAY_CHANNEL_CHANGE); /* calculate transmission coeficient */ @@ -1908,10 +1908,7 @@ static void cmd_port(BaseSequentialStream *chp, int argc, char *argv[]) return; } port = atoi(argv[0]); - if (port) - tlv320aic3204_select_in1(); - else - tlv320aic3204_select_in3(); // default + tlv320aic3204_select(port); } static void cmd_stat(BaseSequentialStream *chp, int argc, char *argv[]) diff --git a/nanovna.h b/nanovna.h index 0bf5fc7..d34dd21 100644 --- a/nanovna.h +++ b/nanovna.h @@ -115,23 +115,10 @@ int si5351_set_frequency_with_offset(uint32_t freq, int offset, uint8_t drive_st /* * tlv320aic3204.c */ -typedef struct { - int target_level; - int gain_hysteresis; - int attack; - int attack_scale; - int decay; - int decay_scale; -} tlv320aic3204_agc_config_t; extern void tlv320aic3204_init(void); extern void tlv320aic3204_set_gain(int lgain, int rgain); -extern void tlv320aic3204_set_digital_gain(int gain); -extern void tlv320aic3204_set_volume(int gain); -extern void tlv320aic3204_agc_config(tlv320aic3204_agc_config_t *conf); -extern void tlv320aic3204_select_in1(void); -extern void tlv320aic3204_select_in3(void); -extern void tlv320aic3204_adc_filter_enable(int enable); +extern void tlv320aic3204_select(int channel); /* @@ -155,7 +142,7 @@ extern int area_height; extern const uint8_t x8x8_bits[][8]; extern const uint8_t x8x8_len[]; -extern const uint32_t numfont20x24[][24]; +extern const uint8_t numfont20x22[][22 * 3]; #define S_DIAMOND "\001" #define S_MULTIL "\002" @@ -279,10 +266,10 @@ typedef struct { uint16_t height; uint16_t scaley; uint16_t slide; - const uint32_t *bitmap; + const uint8_t *bitmap; } font_t; -extern const font_t NF20x24; +extern const font_t NF20x22; extern uint16_t spi_buffer[1024]; diff --git a/numfont20x22.c b/numfont20x22.c new file mode 100644 index 0000000..a84d4dd --- /dev/null +++ b/numfont20x22.c @@ -0,0 +1,624 @@ +/* + * Copyright (c) 2014-2019, TAKAHASHI Tomohiro (TTRFTECH) edy555@gmail.com + * All rights reserved. + * + * This is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * The software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#include + +const uint8_t numfont20x22[][22 * 3] = { + { // 0 + 0b00000111, 0b11111100, 0b00001000, + 0b00011111, 0b11111111, 0b00000000, + 0b00111111, 0b11111111, 0b10000000, + 0b01111111, 0b11111111, 0b11000000, + 0b01111110, 0b00001111, 0b11000000, + 0b11111100, 0b00000111, 0b11100000, + 0b11111000, 0b00000011, 0b11100000, + 0b11111000, 0b00000011, 0b11100000, + + 0b11111000, 0b00000011, 0b11100000, + 0b11111000, 0b00000011, 0b11100000, + 0b11111000, 0b00000011, 0b11100000, + 0b11111000, 0b00000011, 0b11100000, + 0b11111000, 0b00000011, 0b11100000, + 0b11111000, 0b00000011, 0b11100000, + 0b11111000, 0b00000011, 0b11100000, + 0b11111000, 0b00000011, 0b11100000, + + 0b11111100, 0b00000111, 0b11100000, + 0b01111110, 0b00001111, 0b11000000, + 0b01111111, 0b11111111, 0b11000000, + 0b00111111, 0b11111111, 0b10000000, + 0b00011111, 0b11111111, 0b00000000, + 0b00000111, 0b11111100, 0b00001000, + }, + { // 1 + 0b00000000, 0b01111100, 0b00001000, + 0b00000000, 0b11111100, 0b00000000, + 0b00000000, 0b11111100, 0b00000000, + 0b00000001, 0b11111100, 0b00000000, + 0b00000111, 0b11111100, 0b00000000, + 0b00011111, 0b11111100, 0b00000000, + 0b00011111, 0b11111100, 0b00000000, + 0b00011111, 0b11111100, 0b00000000, + + 0b00011111, 0b01111100, 0b00000000, + 0b00011111, 0b01111100, 0b00000000, + 0b00000000, 0b01111100, 0b00000000, + 0b00000000, 0b01111100, 0b00000000, + 0b00000000, 0b01111100, 0b00000000, + 0b00000000, 0b01111100, 0b00000000, + 0b00000000, 0b01111100, 0b00000000, + 0b00000000, 0b01111100, 0b00000000, + + 0b00000000, 0b01111100, 0b00000000, + 0b00000000, 0b01111100, 0b00000000, + 0b00000000, 0b01111100, 0b00000000, + 0b00000000, 0b01111100, 0b00000000, + 0b00000000, 0b01111100, 0b00000000, + 0b00000000, 0b01111100, 0b00000000, + }, + { // 2 + 0b00000011, 0b11111000, 0b00001000, + 0b00001111, 0b11111110, 0b00000000, + 0b00111111, 0b11111111, 0b10000000, + 0b01111111, 0b11111111, 0b11000000, + 0b01111110, 0b00001111, 0b11000000, + 0b11111100, 0b00000111, 0b11100000, + 0b11111000, 0b00000011, 0b11100000, + 0b11111000, 0b00000111, 0b11100000, + + 0b00000000, 0b00001111, 0b11100000, + 0b00000000, 0b00111111, 0b11000000, + 0b00000000, 0b11111111, 0b10000000, + 0b00000011, 0b11111110, 0b00000000, + 0b00001111, 0b11111000, 0b00000000, + 0b00011111, 0b11100000, 0b00000000, + 0b00111111, 0b10000000, 0b00000000, + 0b01111111, 0b00000000, 0b00000000, + + 0b11111110, 0b00000000, 0b00000000, + 0b11111100, 0b00000000, 0b00000000, + 0b11111111, 0b11111111, 0b11100000, + 0b11111111, 0b11111111, 0b11100000, + 0b11111111, 0b11111111, 0b11100000, + 0b11111111, 0b11111111, 0b11100000, + }, + { // 3 + 0b00000011, 0b11111000, 0b00001000, + 0b00001111, 0b11111110, 0b00000000, + 0b00111111, 0b11111111, 0b10000000, + 0b01111111, 0b11111111, 0b11000000, + 0b01111110, 0b00001111, 0b11000000, + 0b11111100, 0b00000111, 0b11100000, + 0b11111000, 0b00000011, 0b11100000, + 0b11111000, 0b00000111, 0b11100000, + + 0b00000000, 0b00001111, 0b11000000, + 0b00000000, 0b11111111, 0b11000000, + 0b00000000, 0b11111111, 0b00000000, + 0b00000000, 0b11111111, 0b00000000, + 0b00000000, 0b11111111, 0b10000000, + 0b00000000, 0b00001111, 0b11000000, + 0b11111000, 0b00000011, 0b11100000, + 0b11111000, 0b00000011, 0b11100000, + + 0b11111000, 0b00000011, 0b11100000, + 0b11111110, 0b00000111, 0b11100000, + 0b01111111, 0b11111111, 0b11000000, + 0b00111111, 0b11111111, 0b10000000, + 0b00001111, 0b11111111, 0b00000000, + 0b00000001, 0b11111000, 0b00001000, + }, + { // 4 + 0b00000000, 0b00001111, 0b00001000, + 0b00000000, 0b00011111, 0b00000000, + 0b00000000, 0b00111111, 0b00000000, + 0b00000000, 0b01111111, 0b00000000, + 0b00000000, 0b11111111, 0b00000000, + 0b00000001, 0b11111111, 0b00000000, + 0b00000011, 0b11111111, 0b00000000, + 0b00000111, 0b11111111, 0b00000000, + + 0b00001111, 0b11011111, 0b00000000, + 0b00011111, 0b10011111, 0b00000000, + 0b00111111, 0b00011111, 0b00000000, + 0b01111110, 0b00011111, 0b00000000, + 0b11111100, 0b00011111, 0b00000000, + 0b11111000, 0b00011111, 0b00000000, + 0b11111111, 0b11111111, 0b11100000, + 0b11111111, 0b11111111, 0b11100000, + + 0b11111111, 0b11111111, 0b11100000, + 0b11111111, 0b11111111, 0b11100000, + 0b00000000, 0b00011111, 0b00000000, + 0b00000000, 0b00011111, 0b00000000, + 0b00000000, 0b00011111, 0b00000000, + 0b00000000, 0b00011111, 0b00000000, + }, + { // 5 + 0b11111111, 0b11111111, 0b11101000, + 0b11111111, 0b11111111, 0b11100000, + 0b11111111, 0b11111111, 0b11100000, + 0b11111111, 0b11111111, 0b11100000, + 0b11110000, 0b00000000, 0b00000000, + 0b11110000, 0b00000000, 0b00000000, + 0b11110000, 0b00000000, 0b00000000, + 0b11110011, 0b11111000, 0b00000000, + + 0b11111111, 0b11111111, 0b00000000, + 0b11111111, 0b11111111, 0b10000000, + 0b11111111, 0b11111111, 0b11000000, + 0b11111110, 0b00001111, 0b11000000, + 0b00000000, 0b00000111, 0b11100000, + 0b00000000, 0b00000011, 0b11100000, + 0b00000000, 0b00000011, 0b11100000, + 0b11111000, 0b00000011, 0b11100000, + + 0b11111000, 0b00000111, 0b11100000, + 0b11111110, 0b00011111, 0b11100000, + 0b01111111, 0b11111111, 0b11000000, + 0b00111111, 0b11111111, 0b10000000, + 0b00001111, 0b11111111, 0b00000000, + 0b00000001, 0b11111000, 0b00001000, + }, + { // 6 + 0b00000011, 0b11111110, 0b00001000, + 0b00011111, 0b11111111, 0b10000000, + 0b00111111, 0b11111111, 0b11000000, + 0b01111111, 0b11111111, 0b11000000, + 0b01111110, 0b00000111, 0b11000000, + 0b11111100, 0b00000000, 0b00000000, + 0b11111000, 0b00000000, 0b00000000, + 0b11111000, 0b00000000, 0b00000000, + + 0b11111011, 0b11111000, 0b00000000, + 0b11111111, 0b11111111, 0b00000000, + 0b11111111, 0b11111111, 0b10000000, + 0b11111111, 0b11111111, 0b11000000, + 0b11111110, 0b00011111, 0b11000000, + 0b11111100, 0b00000111, 0b11100000, + 0b11111000, 0b00000011, 0b11100000, + 0b11111000, 0b00000011, 0b11100000, + + 0b11111100, 0b00000111, 0b11100000, + 0b11111110, 0b00001111, 0b11100000, + 0b01111111, 0b11111111, 0b11000000, + 0b00111111, 0b11111111, 0b10000000, + 0b00001111, 0b11111111, 0b00000000, + 0b00000001, 0b11111000, 0b00001000, + }, + { // 7 + 0b11111111, 0b11111111, 0b11101000, + 0b11111111, 0b11111111, 0b11100000, + 0b11111111, 0b11111111, 0b11100000, + 0b11111111, 0b11111111, 0b11100000, + 0b00000000, 0b00000111, 0b11100000, + 0b00000000, 0b00001111, 0b11000000, + 0b00000000, 0b00011111, 0b10000000, + 0b00000000, 0b00111111, 0b00000000, + + 0b00000000, 0b01111110, 0b00000000, + 0b00000000, 0b01111100, 0b00000000, + 0b00000000, 0b11111100, 0b00000000, + 0b00000000, 0b11111000, 0b00000000, + 0b00000001, 0b11111000, 0b00000000, + 0b00000001, 0b11110000, 0b00000000, + 0b00000001, 0b11110000, 0b00000000, + 0b00000011, 0b11110000, 0b00000000, + + 0b00000011, 0b11100000, 0b00000000, + 0b00000011, 0b11100000, 0b00000000, + 0b00000011, 0b11100000, 0b00000000, + 0b00000011, 0b11100000, 0b00000000, + 0b00000011, 0b11100000, 0b00000000, + 0b00000011, 0b11100000, 0b00000000, + }, + { // 8 + 0b00000011, 0b11111000, 0b00001000, + 0b00001111, 0b11111110, 0b00000000, + 0b00111111, 0b11111111, 0b10000000, + 0b01111111, 0b11111111, 0b11000000, + 0b01111110, 0b00001111, 0b11000000, + 0b11111100, 0b00000111, 0b11100000, + 0b11111000, 0b00000011, 0b11100000, + 0b01111100, 0b00000111, 0b11000000, + + 0b01111110, 0b00001111, 0b11000000, + 0b00111111, 0b11111111, 0b10000000, + 0b00011111, 0b11111111, 0b00000000, + 0b00011111, 0b11111111, 0b00000000, + 0b00111111, 0b11111111, 0b10000000, + 0b01111110, 0b00001111, 0b11000000, + 0b11111100, 0b00000111, 0b11100000, + 0b11111000, 0b00000011, 0b11100000, + + 0b11111000, 0b00000011, 0b11100000, + 0b11111100, 0b00000111, 0b11100000, + 0b01111111, 0b11111111, 0b11000000, + 0b00111111, 0b11111111, 0b10000000, + 0b00011111, 0b11111111, 0b00000000, + 0b00000111, 0b11111100, 0b00001000, + }, + { // 9 + 0b00000011, 0b11111000, 0b00001000, + 0b00001111, 0b11111110, 0b00000000, + 0b00111111, 0b11111111, 0b10000000, + 0b01111111, 0b11111111, 0b11000000, + 0b01111110, 0b00001111, 0b11000000, + 0b11111100, 0b00000111, 0b11100000, + 0b11111000, 0b00000011, 0b11100000, + 0b11111000, 0b00000011, 0b11100000, + + 0b11111100, 0b00000011, 0b11100000, + 0b11111110, 0b00000111, 0b11100000, + 0b01111111, 0b11111111, 0b11100000, + 0b00111111, 0b11111111, 0b11100000, + 0b00001111, 0b11111111, 0b11100000, + 0b00000011, 0b11111111, 0b11100000, + 0b00000000, 0b00000011, 0b11100000, + 0b00000000, 0b00000011, 0b11100000, + + 0b11111000, 0b00000111, 0b11100000, + 0b11111100, 0b00001111, 0b11000000, + 0b11111111, 0b11111111, 0b11000000, + 0b01111111, 0b11111111, 0b10000000, + 0b00111111, 0b11111111, 0b00000000, + 0b00001111, 0b11111100, 0b00001000, + }, + { // . (period) = \001 + 0b00000000, 0b00000000, 0b00001000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + + 0b00000000, 0b00000000, 0b00000000, + 0b00000001, 0b11000000, 0b00000000, + 0b00000011, 0b11100000, 0b00000000, + 0b00000011, 0b11100000, 0b00000000, + 0b00000001, 0b11000000, 0b00000000, + 0b00000000, 0b00000000, 0b00001000, + }, + { // - (minus) = \002 + 0b00000000, 0b00000000, 0b00001000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00111111, 0b11111111, 0b11000000, + 0b00111111, 0b11111111, 0b11000000, + 0b00111111, 0b11111111, 0b11000000, + 0b00111111, 0b11111111, 0b11000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00001000, + }, + { // x1 + 0b00000000, 0b00000000, 0b00001000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000001, 0b11100000, + 0b00000000, 0b00000011, 0b11100000, + 0b00000000, 0b00000111, 0b11100000, + + 0b00000000, 0b00001111, 0b11100000, + 0b00000000, 0b00001111, 0b11100000, + 0b00000000, 0b00000011, 0b11100000, + 0b00000000, 0b00000011, 0b11100000, + 0b00110000, 0b01100011, 0b11100000, + 0b11111000, 0b11110011, 0b11100000, + 0b01111101, 0b11100011, 0b11100000, + 0b00011111, 0b11000011, 0b11100000, + + 0b00001111, 0b10000011, 0b11100000, + 0b00001111, 0b10000011, 0b11100000, + 0b00011111, 0b11000011, 0b11100000, + 0b00111101, 0b11100011, 0b11100000, + 0b01111000, 0b11110011, 0b11100000, + 0b00110000, 0b01100011, 0b11101000, + }, + { // k + 0b01111100, 0b00000000, 0b00001000, + 0b01111100, 0b00000000, 0b00000000, + 0b01111100, 0b00000000, 0b00000000, + 0b01111100, 0b00000000, 0b00000000, + 0b01111100, 0b00000000, 0b00000000, + 0b01111100, 0b00000000, 0b00000000, + 0b01111100, 0b00011111, 0b10000000, + 0b01111100, 0b00111111, 0b00000000, + + 0b01111100, 0b01111110, 0b00000000, + 0b01111100, 0b11111100, 0b00000000, + 0b01111101, 0b11111000, 0b00000000, + 0b01111111, 0b11110000, 0b00000000, + 0b01111111, 0b11100000, 0b00000000, + 0b01111111, 0b11000000, 0b00000000, + 0b01111111, 0b11000000, 0b00000000, + 0b01111111, 0b11100000, 0b00000000, + + 0b01111111, 0b11110000, 0b00000000, + 0b01111101, 0b11111000, 0b00000000, + 0b01111100, 0b11111100, 0b00000000, + 0b01111100, 0b01111110, 0b00000000, + 0b01111100, 0b00111111, 0b00000000, + 0b01111100, 0b00011111, 0b10001000, + }, + { // M + 0b11111000, 0b00000011, 0b11101000, + 0b11111000, 0b00000011, 0b11100000, + 0b11111100, 0b00000111, 0b11100000, + 0b11111100, 0b00000111, 0b11100000, + 0b11111110, 0b00001111, 0b11100000, + 0b11111110, 0b00001111, 0b11100000, + 0b11111111, 0b00011111, 0b11100000, + 0b11111111, 0b00011111, 0b11100000, + + 0b11111111, 0b10111111, 0b11100000, + 0b11111111, 0b10111111, 0b11100000, + 0b11111111, 0b11111111, 0b11100000, + 0b11111111, 0b11111111, 0b11100000, + 0b11111111, 0b11111111, 0b11100000, + 0b11111111, 0b11111111, 0b11100000, + 0b11111011, 0b11111011, 0b11100000, + 0b11111011, 0b11111011, 0b11100000, + + 0b11111001, 0b11110011, 0b11100000, + 0b11111001, 0b11110011, 0b11100000, + 0b11111000, 0b11100011, 0b11100000, + 0b11111000, 0b11100011, 0b11100000, + 0b11111000, 0b00000011, 0b11100000, + 0b11111000, 0b00000011, 0b11101000, + }, + { // G + 0b00000111, 0b11111100, 0b00001000, + 0b00011111, 0b11111111, 0b00000000, + 0b00111111, 0b11111111, 0b10000000, + 0b01111111, 0b11111111, 0b11000000, + 0b01111110, 0b00001111, 0b11000000, + 0b11111100, 0b00000111, 0b11100000, + 0b11111000, 0b00000011, 0b11100000, + 0b11111000, 0b00000011, 0b11100000, + + 0b11111000, 0b00000000, 0b00000000, + 0b11111000, 0b00000000, 0b00000000, + 0b11111000, 0b00000000, 0b00000000, + 0b11111000, 0b00000000, 0b00000000, + 0b11111000, 0b00011111, 0b11100000, + 0b11111000, 0b00011111, 0b11100000, + 0b11111000, 0b00011111, 0b11100000, + 0b11111000, 0b00011111, 0b11100000, + + 0b11111100, 0b00000111, 0b11100000, + 0b01111110, 0b00001111, 0b11100000, + 0b01111111, 0b11111111, 0b11100000, + 0b00111111, 0b11111111, 0b11100000, + 0b00011111, 0b11111111, 0b11100000, + 0b00000111, 0b11111011, 0b11101000, + + }, + { // BS + 0b00000000, 0b00000000, 0b00001000, + 0b00000000, 0b00100000, 0b00000000, + 0b00000000, 0b01100000, 0b00000000, + 0b00000000, 0b11100000, 0b00000000, + 0b00000001, 0b11100000, 0b00000000, + 0b00000011, 0b11100000, 0b00000000, + 0b00000111, 0b11111111, 0b11100000, + 0b00001111, 0b11111111, 0b11100000, + + 0b00011111, 0b11111111, 0b11100000, + 0b00111111, 0b11111111, 0b11100000, + 0b01111111, 0b11111111, 0b11100000, + 0b11111111, 0b11111111, 0b11100000, + 0b01111111, 0b11111111, 0b11100000, + 0b00111111, 0b11111111, 0b11100000, + 0b00011111, 0b11111111, 0b11100000, + 0b00001111, 0b11111111, 0b11100000, + + 0b00000111, 0b11111111, 0b11100000, + 0b00000011, 0b11100000, 0b00000000, + 0b00000001, 0b11100000, 0b00000000, + 0b00000000, 0b11100000, 0b00000000, + 0b00000000, 0b01100000, 0b00000000, + 0b00000000, 0b00100000, 0b00001000, + }, + { // infinity = \003 + 0b00000000, 0b00000000, 0b00001000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000111, 0b10001111, 0b00000000, + 0b00001111, 0b11011111, 0b10000000, + 0b00011111, 0b11011111, 0b11000000, + + 0b00111000, 0b11110001, 0b11000000, + 0b01111000, 0b11100001, 0b11100000, + 0b01110000, 0b01100000, 0b11100000, + 0b01110000, 0b01100000, 0b11100000, + 0b01110000, 0b01100000, 0b11100000, + 0b01110000, 0b01100000, 0b11100000, + 0b01111000, 0b01110001, 0b11100000, + 0b00111000, 0b11110001, 0b11000000, + + 0b00111111, 0b10111111, 0b11000000, + 0b00011111, 0b10111111, 0b10000000, + 0b00001111, 0b00011110, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00001000, + }, + { // dB = \004 + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000011, 0b10111111, 0b00000000, + + 0b00000011, 0b10111111, 0b10000000, + 0b00000011, 0b10111111, 0b11000000, + 0b00000011, 0b10111001, 0b11100000, + 0b00000011, 0b10111000, 0b11100000, + 0b00111111, 0b10111001, 0b11100000, + 0b01111111, 0b10111111, 0b11100000, + 0b11111111, 0b10111111, 0b10000000, + 0b11110011, 0b10111111, 0b11000000, + + 0b11100011, 0b10111001, 0b11100000, + 0b11100011, 0b10111000, 0b11100000, + 0b11110011, 0b10111001, 0b11100000, + 0b01111111, 0b10111111, 0b11100000, + 0b01111111, 0b10111111, 0b11000000, + 0b00111101, 0b10111111, 0b00001000, + }, + { // plus/minus = \005 + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00011000, 0b00000000, + + 0b00011100, 0b00011000, 0b00000000, + 0b00011100, 0b00011000, 0b00000000, + 0b00011100, 0b00110000, 0b00000000, + 0b11111111, 0b10110111, 0b11110000, + 0b11111111, 0b10110111, 0b11110000, + 0b11111111, 0b10110111, 0b11110000, + 0b00011100, 0b00110000, 0b00000000, + 0b00011100, 0b01100000, 0b00000000, + + 0b00011100, 0b01100000, 0b00000000, + 0b00000000, 0b01100000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00001000, + }, + { // keypad = \007 + 0b00000000, 0b00000000, 0b00000000, + 0b00111101, 0b11101111, 0b00000000, + 0b00111101, 0b11101111, 0b00000000, + 0b00111101, 0b11101111, 0b00000000, + 0b00111101, 0b11101111, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00111101, 0b11101111, 0b00000000, + 0b00111101, 0b11101111, 0b00000000, + + 0b00111101, 0b11101111, 0b00000000, + 0b00111101, 0b11101111, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00111101, 0b11101111, 0b00000000, + 0b00111101, 0b11101111, 0b00000000, + 0b00111101, 0b11101111, 0b00000000, + 0b00111101, 0b11101111, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + + 0b00111101, 0b11101111, 0b00000000, + 0b00111101, 0b11101111, 0b00000000, + 0b00111101, 0b11101111, 0b00000000, + 0b00111101, 0b11101111, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00001000, + }, + { // nano + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + + 0b01111001, 0b11111100, 0b00000000, + 0b01111111, 0b11111111, 0b00000000, + 0b01111111, 0b11111111, 0b10000000, + 0b01111111, 0b11111111, 0b10000000, + 0b01111110, 0b00001111, 0b11000000, + 0b01111100, 0b00000111, 0b11000000, + 0b01111000, 0b00000011, 0b11000000, + 0b01111000, 0b00000011, 0b11000000, + + 0b01111000, 0b00000011, 0b11000000, + 0b01111000, 0b00000011, 0b11000000, + 0b01111000, 0b00000011, 0b11000000, + 0b01111000, 0b00000011, 0b11000000, + 0b01111000, 0b00000011, 0b11000000, + 0b01111000, 0b00000011, 0b11001000, + }, + { // pico + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00000000, 0b00000000, 0b00000000, + 0b00111101, 0b11111100, 0b00000000, + 0b00111111, 0b11111111, 0b00000000, + + 0b00111111, 0b11111111, 0b10000000, + 0b00111111, 0b11111111, 0b11000000, + 0b00111111, 0b00000111, 0b11000000, + 0b00111110, 0b00000011, 0b11000000, + 0b00111110, 0b00000011, 0b11000000, + 0b00111110, 0b00000011, 0b11000000, + 0b00111111, 0b00000111, 0b11000000, + 0b00111111, 0b11111111, 0b11000000, + 0b00111111, 0b11111111, 0b10000000, + + 0b00111111, 0b11111111, 0b00000000, + 0b00111101, 0b11111100, 0b00000000, + 0b00111100, 0b00000000, 0b00000000, + 0b00111100, 0b00000000, 0b00000000, + 0b00111100, 0b00000000, 0b00001000, + }, +}; + diff --git a/numfont20x24.c b/numfont20x24.c deleted file mode 100644 index f6b2525..0000000 --- a/numfont20x24.c +++ /dev/null @@ -1,669 +0,0 @@ -/* - * Copyright (c) 2014-2019, TAKAHASHI Tomohiro (TTRFTECH) edy555@gmail.com - * All rights reserved. - * - * This is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * The software is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#include - -const uint32_t numfont20x24[][24] = { - { // 0 - 0b00000111111111000000100000000000, - 0b00011111111111110000000000000000, - 0b00111111111111111000000000000000, - 0b01111111111111111100000000000000, - 0b01111110000011111100000000000000, - 0b11111100000001111110000000000000, - 0b11111000000000111110000000000000, - 0b11111000000000111110000000000000, - - 0b11111000000000111110000000000000, - 0b11111000000000111110000000000000, - 0b11111000000000111110000000000000, - 0b11111000000000111110000000000000, - 0b11111000000000111110000000000000, - 0b11111000000000111110000000000000, - 0b11111000000000111110000000000000, - 0b11111000000000111110000000000000, - - 0b11111100000001111110000000000000, - 0b01111110000011111100000000000000, - 0b01111111111111111100000000000000, - 0b00111111111111111000000000000000, - 0b00011111111111110000000000000000, - 0b00000111111111000000100000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000 - }, - { // 1 - 0b00000000011111000000100000000000, - 0b00000000111111000000000000000000, - 0b00000000111111000000000000000000, - 0b00000001111111000000000000000000, - 0b00000111111111000000000000000000, - 0b00011111111111000000000000000000, - 0b00011111111111000000000000000000, - 0b00011111111111000000000000000000, - - 0b00011111011111000000000000000000, - 0b00011111011111000000000000000000, - 0b00000000011111000000000000000000, - 0b00000000011111000000000000000000, - 0b00000000011111000000000000000000, - 0b00000000011111000000000000000000, - 0b00000000011111000000000000000000, - 0b00000000011111000000000000000000, - - 0b00000000011111000000000000000000, - 0b00000000011111000000000000000000, - 0b00000000011111000000000000000000, - 0b00000000011111000000000000000000, - 0b00000000011111000000000000000000, - 0b00000000011111000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000 - }, - { // 2 - 0b00000011111110000000100000000000, - 0b00001111111111100000000000000000, - 0b00111111111111111000000000000000, - 0b01111111111111111100000000000000, - 0b01111110000011111100000000000000, - 0b11111100000001111110000000000000, - 0b11111000000000111110000000000000, - 0b11111000000001111110000000000000, - - 0b00000000000011111110000000000000, - 0b00000000001111111100000000000000, - 0b00000000111111111000000000000000, - 0b00000011111111100000000000000000, - 0b00001111111110000000000000000000, - 0b00011111111000000000000000000000, - 0b00111111100000000000000000000000, - 0b01111111000000000000000000000000, - - 0b11111110000000000000000000000000, - 0b11111100000000000000000000000000, - 0b11111111111111111110000000000000, - 0b11111111111111111110000000000000, - 0b11111111111111111110000000000000, - 0b11111111111111111110000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000 - }, - { // 3 - 0b00000011111110000000100000000000, - 0b00001111111111100000000000000000, - 0b00111111111111111000000000000000, - 0b01111111111111111100000000000000, - 0b01111110000011111100000000000000, - 0b11111100000001111110000000000000, - 0b11111000000000111110000000000000, - 0b11111000000001111110000000000000, - - 0b00000000000011111100000000000000, - 0b00000000111111111100000000000000, - 0b00000000111111110000000000000000, - 0b00000000111111110000000000000000, - 0b00000000111111111000000000000000, - 0b00000000000011111100000000000000, - 0b11111000000000111110000000000000, - 0b11111000000000111110000000000000, - - 0b11111000000000111110000000000000, - 0b11111110000001111110000000000000, - 0b01111111111111111100000000000000, - 0b00111111111111111000000000000000, - 0b00001111111111110000000000000000, - 0b00000001111110000000100000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000 - }, - { // 4 - 0b00000000000011110000100000000000, - 0b00000000000111110000000000000000, - 0b00000000001111110000000000000000, - 0b00000000011111110000000000000000, - 0b00000000111111110000000000000000, - 0b00000001111111110000000000000000, - 0b00000011111111110000000000000000, - 0b00000111111111110000000000000000, - - 0b00001111110111110000000000000000, - 0b00011111100111110000000000000000, - 0b00111111000111110000000000000000, - 0b01111110000111110000000000000000, - 0b11111100000111110000000000000000, - 0b11111000000111110000000000000000, - 0b11111111111111111110000000000000, - 0b11111111111111111110000000000000, - - 0b11111111111111111110000000000000, - 0b11111111111111111110000000000000, - 0b00000000000111110000000000000000, - 0b00000000000111110000000000000000, - 0b00000000000111110000000000000000, - 0b00000000000111110000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000 - }, - { // 5 - 0b11111111111111111110100000000000, - 0b11111111111111111110000000000000, - 0b11111111111111111110000000000000, - 0b11111111111111111110000000000000, - 0b11110000000000000000000000000000, - 0b11110000000000000000000000000000, - 0b11110000000000000000000000000000, - 0b11110011111110000000000000000000, - - 0b11111111111111110000000000000000, - 0b11111111111111111000000000000000, - 0b11111111111111111100000000000000, - 0b11111110000011111100000000000000, - 0b00000000000001111110000000000000, - 0b00000000000000111110000000000000, - 0b00000000000000111110000000000000, - 0b11111000000000111110000000000000, - - 0b11111000000001111110000000000000, - 0b11111110000111111110000000000000, - 0b01111111111111111100000000000000, - 0b00111111111111111000000000000000, - 0b00001111111111110000000000000000, - 0b00000001111110000000100000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000 - }, - { // 6 - 0b00000011111111100000100000000000, - 0b00011111111111111000000000000000, - 0b00111111111111111100000000000000, - 0b01111111111111111100000000000000, - 0b01111110000001111100000000000000, - 0b11111100000000000000000000000000, - 0b11111000000000000000000000000000, - 0b11111000000000000000000000000000, - - 0b11111011111110000000000000000000, - 0b11111111111111110000000000000000, - 0b11111111111111111000000000000000, - 0b11111111111111111100000000000000, - 0b11111110000111111100000000000000, - 0b11111100000001111110000000000000, - 0b11111000000000111110000000000000, - 0b11111000000000111110000000000000, - - 0b11111100000001111110000000000000, - 0b11111110000011111110000000000000, - 0b01111111111111111100000000000000, - 0b00111111111111111000000000000000, - 0b00001111111111110000000000000000, - 0b00000001111110000000100000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000 - }, - { // 7 - 0b11111111111111111110100000000000, - 0b11111111111111111110000000000000, - 0b11111111111111111110000000000000, - 0b11111111111111111110000000000000, - 0b00000000000001111110000000000000, - 0b00000000000011111100000000000000, - 0b00000000000111111000000000000000, - 0b00000000001111110000000000000000, - - 0b00000000011111100000000000000000, - 0b00000000011111000000000000000000, - 0b00000000111111000000000000000000, - 0b00000000111110000000000000000000, - 0b00000001111110000000000000000000, - 0b00000001111100000000000000000000, - 0b00000001111100000000000000000000, - 0b00000011111100000000000000000000, - - 0b00000011111000000000000000000000, - 0b00000011111000000000000000000000, - 0b00000011111000000000000000000000, - 0b00000011111000000000000000000000, - 0b00000011111000000000000000000000, - 0b00000011111000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000 - }, - { // 8 - 0b00000011111110000000100000000000, - 0b00001111111111100000000000000000, - 0b00111111111111111000000000000000, - 0b01111111111111111100000000000000, - 0b01111110000011111100000000000000, - 0b11111100000001111110000000000000, - 0b11111000000000111110000000000000, - 0b01111100000001111100000000000000, - - 0b01111110000011111100000000000000, - 0b00111111111111111000000000000000, - 0b00011111111111110000000000000000, - 0b00011111111111110000000000000000, - 0b00111111111111111000000000000000, - 0b01111110000011111100000000000000, - 0b11111100000001111110000000000000, - 0b11111000000000111110000000000000, - - 0b11111000000000111110000000000000, - 0b11111100000001111110000000000000, - 0b01111111111111111100000000000000, - 0b00111111111111111000000000000000, - 0b00011111111111110000000000000000, - 0b00000111111111000000100000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000 - }, - { // 9 - 0b00000011111110000000100000000000, - 0b00001111111111100000000000000000, - 0b00111111111111111000000000000000, - 0b01111111111111111100000000000000, - 0b01111110000011111100000000000000, - 0b11111100000001111110000000000000, - 0b11111000000000111110000000000000, - 0b11111000000000111110000000000000, - - 0b11111100000000111110000000000000, - 0b11111110000001111110000000000000, - 0b01111111111111111110000000000000, - 0b00111111111111111110000000000000, - 0b00001111111111111110000000000000, - 0b00000011111111111110000000000000, - 0b00000000000000111110000000000000, - 0b00000000000000111110000000000000, - - 0b11111000000001111110000000000000, - 0b11111100000011111100000000000000, - 0b11111111111111111100000000000000, - 0b01111111111111111000000000000000, - 0b00111111111111110000000000000000, - 0b00001111111111000000100000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000 - }, - { // . (period) = \001 - 0b00000000000000000000100000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - - 0b00000000000000000000000000000000, - 0b00000001110000000000000000000000, - 0b00000011111000000000000000000000, - 0b00000011111000000000000000000000, - 0b00000001110000000000000000000000, - 0b00000000000000000000100000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000 - }, - { // - (minus) = \002 - 0b00000000000000000000100000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00111111111111111100000000000000, - 0b00111111111111111100000000000000, - 0b00111111111111111100000000000000, - 0b00111111111111111100000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000100000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000 - }, - { // x1 - 0b00000000000000000000100000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000011110000000000000, - 0b00000000000000111110000000000000, - 0b00000000000001111110000000000000, - - 0b00000000000011111110000000000000, - 0b00000000000011111110000000000000, - 0b00000000000000111110000000000000, - 0b00000000000000111110000000000000, - 0b00110000011000111110000000000000, - 0b11111000111100111110000000000000, - 0b01111101111000111110000000000000, - 0b00011111110000111110000000000000, - - 0b00001111100000111110000000000000, - 0b00001111100000111110000000000000, - 0b00011111110000111110000000000000, - 0b00111101111000111110000000000000, - 0b01111000111100111110000000000000, - 0b00110000011000111110100000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000 - }, - { // k - 0b01111100000000000000100000000000, - 0b01111100000000000000000000000000, - 0b01111100000000000000000000000000, - 0b01111100000000000000000000000000, - 0b01111100000000000000000000000000, - 0b01111100000000000000000000000000, - 0b01111100000111111000000000000000, - 0b01111100001111110000000000000000, - - 0b01111100011111100000000000000000, - 0b01111100111111000000000000000000, - 0b01111101111110000000000000000000, - 0b01111111111100000000000000000000, - 0b01111111111000000000000000000000, - 0b01111111110000000000000000000000, - 0b01111111110000000000000000000000, - 0b01111111111000000000000000000000, - - 0b01111111111100000000000000000000, - 0b01111101111110000000000000000000, - 0b01111100111111000000000000000000, - 0b01111100011111100000000000000000, - 0b01111100001111110000000000000000, - 0b01111100000111111000100000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000 - }, - { // M - 0b11111000000000111110100000000000, - 0b11111000000000111110000000000000, - 0b11111100000001111110000000000000, - 0b11111100000001111110000000000000, - 0b11111110000011111110000000000000, - 0b11111110000011111110000000000000, - 0b11111111000111111110000000000000, - 0b11111111000111111110000000000000, - - 0b11111111101111111110000000000000, - 0b11111111101111111110000000000000, - 0b11111111111111111110000000000000, - 0b11111111111111111110000000000000, - 0b11111111111111111110000000000000, - 0b11111111111111111110000000000000, - 0b11111011111110111110000000000000, - 0b11111011111110111110000000000000, - - 0b11111001111100111110000000000000, - 0b11111001111100111110000000000000, - 0b11111000111000111110000000000000, - 0b11111000111000111110000000000000, - 0b11111000000000111110000000000000, - 0b11111000000000111110100000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000 - }, - { // G - 0b00000111111111000000100000000000, - 0b00011111111111110000000000000000, - 0b00111111111111111000000000000000, - 0b01111111111111111100000000000000, - 0b01111110000011111100000000000000, - 0b11111100000001111110000000000000, - 0b11111000000000111110000000000000, - 0b11111000000000111110000000000000, - - 0b11111000000000000000000000000000, - 0b11111000000000000000000000000000, - 0b11111000000000000000000000000000, - 0b11111000000000000000000000000000, - 0b11111000000111111110000000000000, - 0b11111000000111111110000000000000, - 0b11111000000111111110000000000000, - 0b11111000000111111110000000000000, - - 0b11111100000001111110000000000000, - 0b01111110000011111110000000000000, - 0b01111111111111111110000000000000, - 0b00111111111111111110000000000000, - 0b00011111111111111110000000000000, - 0b00000111111110111110100000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000 - }, - { // BS - 0b00000000000000000000100000000000, - 0b00000000001000000000000000000000, - 0b00000000011000000000000000000000, - 0b00000000111000000000000000000000, - 0b00000001111000000000000000000000, - 0b00000011111000000000000000000000, - 0b00000111111111111110000000000000, - 0b00001111111111111110000000000000, - - 0b00011111111111111110000000000000, - 0b00111111111111111110000000000000, - 0b01111111111111111110000000000000, - 0b11111111111111111110000000000000, - 0b01111111111111111110000000000000, - 0b00111111111111111110000000000000, - 0b00011111111111111110000000000000, - 0b00001111111111111110000000000000, - - 0b00000111111111111110000000000000, - 0b00000011111000000000000000000000, - 0b00000001111000000000000000000000, - 0b00000000111000000000000000000000, - 0b00000000011000000000000000000000, - 0b00000000001000000000100000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - }, - { // infinity = \003 - 0b00000000000000000000100000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000111100011110000000000000000, - 0b00001111110111111000000000000000, - 0b00011111110111111100000000000000, - - 0b00111000111100011100000000000000, - 0b01111000111000011110000000000000, - 0b01110000011000001110000000000000, - 0b01110000011000001110000000000000, - 0b01110000011000001110000000000000, - 0b01110000011000001110000000000000, - 0b01111000011100011110000000000000, - 0b00111000111100011100000000000000, - - 0b00111111101111111100000000000000, - 0b00011111101111111000000000000000, - 0b00001111000111100000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000100000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000 - }, - { // dB = \004 - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000011101111110000000000000000, - - 0b00000011101111111000000000000000, - 0b00000011101111111100000000000000, - 0b00000011101110011110000000000000, - 0b00000011101110001110000000000000, - 0b00111111101110011110000000000000, - 0b01111111101111111110000000000000, - 0b11111111101111111000000000000000, - 0b11110011101111111100000000000000, - - 0b11100011101110011110000000000000, - 0b11100011101110001110000000000000, - 0b11110011101110011110000000000000, - 0b01111111101111111110000000000000, - 0b01111111101111111100000000000000, - 0b00111101101111110000100000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000 - }, - { // plus/minus = \005 - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000110000000000000000000, - - 0b00011100000110000000000000000000, - 0b00011100000110000000000000000000, - 0b00011100001100000000000000000000, - 0b11111111101101111111000000000000, - 0b11111111101101111111000000000000, - 0b11111111101101111111000000000000, - 0b00011100001100000000000000000000, - 0b00011100011000000000000000000000, - - 0b00011100011000000000000000000000, - 0b00000000011000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000100000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000 - }, - { // keypad = \007 - 0b00000000000000000000000000000000, - 0b00111101111011110000000000000000, - 0b00111101111011110000000000000000, - 0b00111101111011110000000000000000, - 0b00111101111011110000000000000000, - 0b00000000000000000000000000000000, - 0b00111101111011110000000000000000, - 0b00111101111011110000000000000000, - - 0b00111101111011110000000000000000, - 0b00111101111011110000000000000000, - 0b00000000000000000000000000000000, - 0b00111101111011110000000000000000, - 0b00111101111011110000000000000000, - 0b00111101111011110000000000000000, - 0b00111101111011110000000000000000, - 0b00000000000000000000000000000000, - - 0b00111101111011110000000000000000, - 0b00111101111011110000000000000000, - 0b00111101111011110000000000000000, - 0b00111101111011110000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000100000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000 - }, - { // nano - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - - 0b01111001111111000000000000000000, - 0b01111111111111110000000000000000, - 0b01111111111111111000000000000000, - 0b01111111111111111000000000000000, - 0b01111110000011111100000000000000, - 0b01111100000001111100000000000000, - 0b01111000000000111100000000000000, - 0b01111000000000111100000000000000, - - 0b01111000000000111100000000000000, - 0b01111000000000111100000000000000, - 0b01111000000000111100000000000000, - 0b01111000000000111100000000000000, - 0b01111000000000111100000000000000, - 0b01111000000000111100100000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000 - }, - { // pico - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000, - 0b00111101111111000000000000000000, - 0b00111111111111110000000000000000, - - 0b00111111111111111000000000000000, - 0b00111111111111111100000000000000, - 0b00111111000001111100000000000000, - 0b00111110000000111100000000000000, - 0b00111110000000111100000000000000, - 0b00111110000000111100000000000000, - 0b00111111000001111100000000000000, - 0b00111111111111111100000000000000, - 0b00111111111111111000000000000000, - - 0b00111111111111110000000000000000, - 0b00111101111111000000000000000000, - 0b00111100000000000000000000000000, - 0b00111100000000000000000000000000, - 0b00111100000000000000100000000000, - 0b00000000000000000000000000000000, - 0b00000000000000000000000000000000 - }, -}; - diff --git a/plot.c b/plot.c index 5119c06..6e85cef 100644 --- a/plot.c +++ b/plot.c @@ -442,7 +442,7 @@ float phase(float *v) /* * calculate groupdelay */ -float groupdelay(float *w, float *v, float deltaf) +float groupdelay(float *v, float *w, float deltaf) { #if 1 // atan(w)-atan(v) = atan((w-v)/(1+wv)) @@ -1441,7 +1441,6 @@ cell_drawchar_8x8(int w, int h, uint8_t ch, int x, int y, uint16_t fg, uint8_t v if (invert) bits = ~bits; - for (r = 0; r < charwidthpx; r++) { if ( (x+r) >= 0 && (x+r) < w && (0x80 & bits) ) diff --git a/python/requirements.txt b/python/requirements.txt index 9e06290..bc7e1ef 100644 --- a/python/requirements.txt +++ b/python/requirements.txt @@ -2,3 +2,4 @@ matplotlib scipy scikit-rf pillow +pyserial diff --git a/tlv320aic3204.c b/tlv320aic3204.c index 204610c..cb86ad5 100644 --- a/tlv320aic3204.c +++ b/tlv320aic3204.c @@ -25,325 +25,133 @@ #define wait_ms(ms) chThdSleepMilliseconds(ms) -void tlv320aic3204_config_adc_filter(void); +static const uint8_t conf_data_pll[] = { + // len, ( reg, data ), + 2, 0x00, 0x00, /* Initialize to Page 0 */ + 2, 0x01, 0x01, /* Initialize the device through software reset */ + 2, 0x04, 0x43, /* PLL Clock High, MCLK, PLL */ +#ifdef REFCLK_8000KHZ + /* 8.000MHz*10.7520 = 86.016MHz, 86.016MHz/(2*7*128) = 48kHz */ + 2, 0x05, 0x91, /* Power up PLL, P=1,R=1 */ + 2, 0x06, 0x0a, /* J=10 */ + 2, 0x07, 29, /* D=7520 = (29<<8) + 96 */ + 2, 0x08, 96, +#endif + 0 // sentinel +}; -static void I2CWrite(int addr, uint8_t d0, uint8_t d1) +// default fs=48kHz +static const uint8_t conf_data_clk[] = { + 2, 0x0b, 0x82, /* Power up the NDAC divider with value 2 */ + 2, 0x0c, 0x87, /* Power up the MDAC divider with value 7 */ + 2, 0x0d, 0x00, /* Program the OSR of DAC to 128 */ + 2, 0x0e, 0x80, + 2, 0x3c, 0x08, /* Set the DAC Mode to PRB_P8 */ + //2, 0x3c, 25, /* Set the DAC Mode to PRB_P25 */ + 2, 0x1b, 0x0c, /* Set the BCLK,WCLK as output */ + 2, 0x1e, 0x80 + 28, /* Enable the BCLKN divider with value 28 */ + 2, 0x25, 0xee, /* DAC power up */ + + 2, 0x12, 0x82, /* Power up the NADC divider with value 2 */ + 2, 0x13, 0x87, /* Power up the MADC divider with value 7 */ + 2, 0x14, 0x80, /* Program the OSR of ADC to 128 */ + 2, 0x3d, 0x01, /* Select ADC PRB_R1 */ + 0 // sentinel +}; + +static const uint8_t conf_data_routing[] = { + 2, 0x00, 0x01, /* Select Page 1 */ + 2, 0x01, 0x08, /* Disable Internal Crude AVdd in presence of external AVdd supply or before powering up internal AVdd LDO*/ + 2, 0x02, 0x01, /* Enable Master Analog Power Control */ + 2, 0x7b, 0x01, /* Set the REF charging time to 40ms */ + 2, 0x14, 0x25, /* HP soft stepping settings for optimal pop performance at power up Rpop used is 6k with N = 6 and soft step = 20usec. This should work with 47uF coupling capacitor. Can try N=5,6 or 7 time constants as well. Trade-off delay vs “pop” sound. */ + 2, 0x0a, 0x33, /* Set the Input Common Mode to 0.9V and Output Common Mode for Headphone to 1.65V */ + + 2, 0x3d, 0x00, /* Select ADC PTM_R4 */ + 2, 0x47, 0x32, /* Set MicPGA startup delay to 3.1ms */ + 2, 0x7b, 0x01, /* Set the REF charging time to 40ms */ + 2, 0x34, 0x10, /* Route IN2L to LEFT_P with 10K */ + 2, 0x36, 0x10, /* Route IN2R to LEFT_N with 10K */ + 2, 0x37, 0x04, /* Route IN3R to RIGHT_P with 10K */ + 2, 0x39, 0x04, /* Route IN3L to RIGHT_N with 10K */ + 2, 0x3b, 0, /* Unmute Left MICPGA, Gain selection of 32dB to make channel gain 0dB */ + 2, 0x3c, 0, /* Unmute Right MICPGA, Gain selection of 32dB to make channel gain 0dB */ + 0 // sentinel +}; + +const uint8_t conf_data_unmute[] = { + 2, 0x00, 0x00, /* Select Page 0 */ + 2, 0x51, 0xc0, /* Power up Left and Right ADC Channels */ + 2, 0x52, 0x00, /* Unmute Left and Right ADC Digital Volume Control */ + 0 // sentinel +}; + +static void +tlv320aic3204_bulk_write(const uint8_t *buf, int len) { - uint8_t buf[] = { d0, d1 }; - i2cAcquireBus(&I2CD1); - (void)i2cMasterTransmitTimeout(&I2CD1, addr, buf, 2, NULL, 0, 1000); - i2cReleaseBus(&I2CD1); + int addr = AIC3204_ADDR; + i2cAcquireBus(&I2CD1); + (void)i2cMasterTransmitTimeout(&I2CD1, addr, buf, len, NULL, 0, 1000); + i2cReleaseBus(&I2CD1); +} + +#if 0 +static int +tlv320aic3204_read(uint8_t d0) +{ + int addr = AIC3204_ADDR; + uint8_t buf[] = { d0 }; + i2cAcquireBus(&I2CD1); + i2cMasterTransmitTimeout(&I2CD1, addr, buf, 1, buf, 1, 1000); + i2cReleaseBus(&I2CD1); + return buf[0]; +} +#endif + +static void +tlv320aic3204_config(const uint8_t *data) +{ + const uint8_t *p = data; + while (*p) { + uint8_t len = *p++; + tlv320aic3204_bulk_write(p, len); + p += len; + } } void tlv320aic3204_init(void) { - I2CWrite(AIC3204_ADDR, 0x00, 0x00); /* Initialize to Page 0 */ - I2CWrite(AIC3204_ADDR, 0x01, 0x01); /* Initialize the device through software reset */ - I2CWrite(AIC3204_ADDR, 0x04, 0x43); /* PLL Clock High, MCLK, PLL */ -#ifdef REFCLK_8000KHZ - /* 8.000MHz*10.7520 = 86.016MHz, 86.016MHz/(2*7*128) = 48kHz */ - I2CWrite(AIC3204_ADDR, 0x05, 0x91); /* Power up PLL, P=1,R=1 */ - I2CWrite(AIC3204_ADDR, 0x06, 0x0a); /* J=10 */ - I2CWrite(AIC3204_ADDR, 0x07, 29); /* D=7520 = (29<<8) + 96 */ - I2CWrite(AIC3204_ADDR, 0x08, 96); -#endif -#ifdef REFCLK_12000KHZ - /* 12.000MHz*7.1680 = 86.016MHz, 86.016MHz/(2*7*128) = 48kHz */ - I2CWrite(AIC3204_ADDR, 0x05, 0x91); /* Power up PLL, P=1,R=1 */ - I2CWrite(AIC3204_ADDR, 0x06, 0x07); /* J=7 */ - I2CWrite(AIC3204_ADDR, 0x07, 6); /* D=1680 = (6<<8) + 144 */ - I2CWrite(AIC3204_ADDR, 0x08, 144); -#endif -#ifdef REFCLK_19200KHZ - /* 19.200MHz*4.48 = 86.016MHz, 86.016MHz/(2*7*128) = 48kHz */ - I2CWrite(AIC3204_ADDR, 0x05, 0x91); /* Power up PLL, P=1,R=1 */ - I2CWrite(AIC3204_ADDR, 0x06, 0x04); /* J=4 */ - I2CWrite(AIC3204_ADDR, 0x07, 18); /* D=4800 = (18<<8) + 192 */ - I2CWrite(AIC3204_ADDR, 0x08, 192); -#endif - I2CWrite(AIC3204_ADDR, 0x0b, 0x82); /* Power up the NDAC divider with value 2 */ - I2CWrite(AIC3204_ADDR, 0x0c, 0x87); /* Power up the MDAC divider with value 7 */ - I2CWrite(AIC3204_ADDR, 0x0d, 0x00); /* Program the OSR of DAC to 128 */ - I2CWrite(AIC3204_ADDR, 0x0e, 0x80); - I2CWrite(AIC3204_ADDR, 0x3c, 0x08); /* Set the DAC Mode to PRB_P8 */ - I2CWrite(AIC3204_ADDR, 0x1b, 0x0c); /* Set the BCLK,WCLK as output */ - I2CWrite(AIC3204_ADDR, 0x1e, 0x80 + 28); /* Enable the BCLKN divider with value 28 */ - I2CWrite(AIC3204_ADDR, 0x25, 0xee); /* DAC power up */ - I2CWrite(AIC3204_ADDR, 0x00, 0x01); /* Select Page 1 */ - I2CWrite(AIC3204_ADDR, 0x01, 0x08); /* Disable Internal Crude AVdd in presence of external AVdd supply or before powering up internal AVdd LDO*/ - I2CWrite(AIC3204_ADDR, 0x02, 0x01); /* Enable Master Analog Power Control */ - I2CWrite(AIC3204_ADDR, 0x7b, 0x01); /* Set the REF charging time to 40ms */ -// I2CWrite(AIC3204_ADDR, 0x0a, 0x00); /* Set the Input Common Mode to 0.9V and Output Common Mode for Headphone to Input Common Mode */ - I2CWrite(AIC3204_ADDR, 0x0a, 0x33); /* Set the Input Common Mode to 0.9V and Output Common Mode for Headphone to 1.65V */ - - I2CWrite(AIC3204_ADDR, 0x00, 0x00); /* Select Page 0 */ - I2CWrite(AIC3204_ADDR, 0x12, 0x87); /* Power up the NADC divider with value 7 */ - I2CWrite(AIC3204_ADDR, 0x13, 0x82); /* Power up the MADC divider with value 2 */ - I2CWrite(AIC3204_ADDR, 0x14, 0x80); /* Program the OSR of ADC to 128 */ - I2CWrite(AIC3204_ADDR, 0x3d, 0x01); /* Select ADC PRB_R1 */ - - I2CWrite(AIC3204_ADDR, 0x00, 0x01); /* Select Page 1 */ - I2CWrite(AIC3204_ADDR, 0x3d, 0x00); /* Select ADC PTM_R4 */ - I2CWrite(AIC3204_ADDR, 0x47, 0x32); /* Set MicPGA startup delay to 3.1ms */ - I2CWrite(AIC3204_ADDR, 0x7b, 0x01); /* Set the REF charging time to 40ms */ - I2CWrite(AIC3204_ADDR, 0x34, 0x10); /* Route IN2L to LEFT_P with 10K input impedance */ - I2CWrite(AIC3204_ADDR, 0x36, 0x10); /* Route IN2R to LEFT_N with 10K input impedance */ - I2CWrite(AIC3204_ADDR, 0x37, 0x04); /* Route IN3R to RIGHT_P with input impedance of 10K */ - I2CWrite(AIC3204_ADDR, 0x39, 0x04); /* Route IN3L to RIGHT_N with impedance of 10K */ - I2CWrite(AIC3204_ADDR, 0x3b, 0); /* Unmute Left MICPGA, Gain selection of 32dB to make channel gain 0dB */ - I2CWrite(AIC3204_ADDR, 0x3c, 0); /* Unmute Right MICPGA, Gain selection of 32dB to make channel gain 0dB */ - - wait_ms(40); - I2CWrite(AIC3204_ADDR, 0x00, 0x00); /* Select Page 0 */ - I2CWrite(AIC3204_ADDR, 0x51, 0xc0); /* Power up Left and Right ADC Channels */ - I2CWrite(AIC3204_ADDR, 0x52, 0x00); /* Unmute Left and Right ADC Digital Volume Control */ - - //tlv320aic3204_config_adc_filter(); - //tlv320aic3204_adc_filter_enable(TRUE); + tlv320aic3204_config(conf_data_pll); + tlv320aic3204_config(conf_data_clk); + tlv320aic3204_config(conf_data_routing); + wait_ms(40); + tlv320aic3204_config(conf_data_unmute); } -void tlv320aic3204_select_in3(void) +void tlv320aic3204_select(int channel) { - I2CWrite(AIC3204_ADDR, 0x00, 0x01); /* Select Page 1 */ - I2CWrite(AIC3204_ADDR, 0x37, 0x04); /* Route IN3R to RIGHT_P with input impedance of 10K */ - I2CWrite(AIC3204_ADDR, 0x39, 0x04); /* Route IN3L to RIGHT_N with input impedance of 10K */ - I2CWrite(AIC3204_ADDR, 0x00, 0x00); /* Select Page 0 */ + const uint8_t ch3[] = { + 2, 0x00, 0x01, /* Select Page 1 */ + 2, 0x37, 0x04, /* Route IN3R to RIGHT_P with input impedance of 10K */ + 2, 0x39, 0x04, /* Route IN3L to RIGHT_N with input impedance of 10K */ + 0 // sentinel + }; + const uint8_t ch1[] = { + 2, 0x00, 0x01, /* Select Page 1 */ + 2, 0x37, 0x40, /* Route IN1R to RIGHT_P with input impedance of 10K */ + 2, 0x39, 0x10, /* Route IN1L to RIGHT_N with input impedance of 10K */ + 0 // sentinel + }; + tlv320aic3204_config(channel ? ch1 : ch3); } -void tlv320aic3204_select_in1(void) -{ - I2CWrite(AIC3204_ADDR, 0x00, 0x01); /* Select Page 1 */ - I2CWrite(AIC3204_ADDR, 0x37, 0x40); /* Route IN1R to RIGHT_P with input impedance of 10K */ - I2CWrite(AIC3204_ADDR, 0x39, 0x10); /* Route IN1L to RIGHT_N with input impedance of 10K */ - I2CWrite(AIC3204_ADDR, 0x00, 0x00); /* Select Page 0 */ -} - -void tlv320aic3204_adc_filter_enable(int enable) -{ - if (enable) - I2CWrite(AIC3204_ADDR, 0x3d, 0x02); /* Select ADC PRB_R2 */ - else - I2CWrite(AIC3204_ADDR, 0x3d, 0x01); /* Select ADC PRB_R1 */ -} - -#if 0 -/* bb, aa = signal.ellip(5, 0.1, 100, (4800.0/24000, 5200.0/24000), 'bandpass') */ -const uint8_t adc_filter_config[] = { - /* len, page, reg, data.... */ - - /* left channel C7 - C31 */ - 92, 8, 36, - /* Pg8 Reg36-127 */ - 0x0b, 0xb3, 0xea, 0x00, - 0xf5, 0xeb, 0x1c, 0x00, - 0x0b, 0xb3, 0xea, 0x00, - 0x63, 0x04, 0xf8, 0x00, - 0x82, 0xf3, 0x20, 0x00, - 0x0b, 0xb3, 0xea, 0x00, - 0xf8, 0xac, 0x58, 0x00, - 0x0b, 0xb3, 0xea, 0x00, - 0x64, 0x26, 0x9e, 0x00, - 0x83, 0x9c, 0x9a, 0x00, - 0x0b, 0xb3, 0xea, 0x00, - 0xf5, 0x92, 0x43, 0x00, - 0x0b, 0xb3, 0xea, 0x00, - 0x65, 0xcc, 0x37, 0x00, - 0x82, 0xd1, 0x6e, 0x00, - 0x0b, 0xb3, 0xea, 0x00, - 0xf7, 0xd5, 0x05, 0x00, - 0x0b, 0xb3, 0xea, 0x00, - 0x67, 0x48, 0x63, 0x00, - 0x81, 0x0a, 0xab, 0x00, - 0x0b, 0xb3, 0xea, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0xf4, 0x4c, 0x16, 0x00, - 8, 9, 8, - /* Pg9 Reg 8-15 */ - 0x62, 0xdd, 0xc7, 0x00, - 0x81, 0x1e, 0xf9, 0x00, - - /* right channel C39 - C63 */ - 84, 9, 44, - /* Pg9 Reg 44-127 */ - 0x0b, 0xb3, 0xea, 0x00, - 0xf5, 0xeb, 0x1c, 0x00, - 0x0b, 0xb3, 0xea, 0x00, - 0x63, 0x04, 0xf8, 0x00, - 0x82, 0xf3, 0x20, 0x00, - 0x0b, 0xb3, 0xea, 0x00, - 0xf8, 0xac, 0x58, 0x00, - 0x0b, 0xb3, 0xea, 0x00, - 0x64, 0x26, 0x9e, 0x00, - 0x83, 0x9c, 0x9a, 0x00, - 0x0b, 0xb3, 0xea, 0x00, - 0xf5, 0x92, 0x43, 0x00, - 0x0b, 0xb3, 0xea, 0x00, - 0x65, 0xcc, 0x37, 0x00, - 0x82, 0xd1, 0x6e, 0x00, - 0x0b, 0xb3, 0xea, 0x00, - 0xf7, 0xd5, 0x05, 0x00, - 0x0b, 0xb3, 0xea, 0x00, - 0x67, 0x48, 0x63, 0x00, - 0x81, 0x0a, 0xab, 0x00, - 0x0b, 0xb3, 0xea, 0x00, - - 16, 10, 8, - /* Pg10 Reg 8-23 */ - 0x00, 0x00, 0x00, 0x00, - 0xf4, 0x4c, 0x16, 0x00, - 0x62, 0xdd, 0xc7, 0x00, - 0x81, 0x1e, 0xf9, 0x00, - 0 /* sentinel */ -}; -#elif 0 -/* bb, aa = signal.ellip(2, 0.1, 100, (4500.0/24000, 5500.0/24000), 'bandpass') */ -const uint8_t adc_filter_config[] = { - /* len, page, reg, data.... */ - /* left channel C7 - C31 */ - 40, 8, 36, - /* Pg8 Reg36-127 */ - 0x02, 0x65, 0xce, 0x00, - 0x02, 0x65, 0x1b, 0x00, - 0x02, 0x65, 0xce, 0x00, - 0x65, 0x27, 0x96, 0x00, - 0x90, 0x4b, 0xd5, 0x00, - 0x52, 0x46, 0xbb, 0x00, - 0xad, 0xb9, 0x96, 0x00, - 0x52, 0x46, 0xbb, 0x00, - 0x56, 0x5f, 0xd2, 0x00, - 0x94, 0x52, 0x41, 0x00, - /* right channel C39 - C63 */ - 40, 9, 44, - /* Pg9 Reg 44-127 */ - 0x02, 0x65, 0xce, 0x00, - 0x02, 0x65, 0x1b, 0x00, - 0x02, 0x65, 0xce, 0x00, - 0x65, 0x27, 0x96, 0x00, - 0x90, 0x4b, 0xd5, 0x00, - 0x52, 0x46, 0xbb, 0x00, - 0xad, 0xb9, 0x96, 0x00, - 0x52, 0x46, 0xbb, 0x00, - 0x56, 0x5f, 0xd2, 0x00, - 0x94, 0x52, 0x41, 0x00, - 0 /* sentinel */ -}; -#else -/* bb, aa = signal.bessel(2, (4500.0/24000, 5500.0/24000), 'bandpass') */ -const uint8_t adc_filter_config[] = { - /* len, page, reg, data.... */ - /* left channel C7 - C31 */ - 40, 8, 36, - /* Pg8 Reg36-127 */ - 0x02, 0x9b, 0xed, 0x00, - 0x02, 0x9b, 0xed, 0x00, - 0x02, 0x9b, 0xed, 0x00, - 0x5d, 0x91, 0x0f, 0x00, - 0x8e, 0x4b, 0x9a, 0x00, - 0x18, 0x22, 0x1d, 0x00, - 0xe7, 0xdd, 0xe3, 0x00, - 0x18, 0x22, 0x1d, 0x00, - 0x62, 0xd9, 0x9b, 0x00, - 0x8d, 0x2c, 0xda, 0x00, - - /* right channel C39 - C63 */ - 40, 9, 44, - /* Pg9 Reg 44-127 */ - 0x02, 0x9b, 0xed, 0x00, - 0x02, 0x9b, 0xed, 0x00, - 0x02, 0x9b, 0xed, 0x00, - 0x5d, 0x91, 0x0f, 0x00, - 0x8e, 0x4b, 0x9a, 0x00, - 0x18, 0x22, 0x1d, 0x00, - 0xe7, 0xdd, 0xe3, 0x00, - 0x18, 0x22, 0x1d, 0x00, - 0x62, 0xd9, 0x9b, 0x00, - 0x8d, 0x2c, 0xda, 0x00, - 0 /* sentinel */ -}; -#endif - - -void tlv320aic3204_config_adc_filter(void) -{ - const uint8_t *p = adc_filter_config; - - while (*p != 0) { - uint8_t len = *p++; - uint8_t page = *p++; - uint8_t reg = *p++; - I2CWrite(AIC3204_ADDR, 0x00, page); - while (len-- > 0) - I2CWrite(AIC3204_ADDR, reg++, *p++); - } - I2CWrite(AIC3204_ADDR, 0x00, 0x00); /* page 0 */ -} - - void tlv320aic3204_set_gain(int lgain, int rgain) { - if (lgain < 0) - lgain = 0; - if (lgain > 95) - lgain = 95; - if (rgain < 0) - rgain = 0; - if (rgain > 95) - rgain = 95; - - I2CWrite(AIC3204_ADDR, 0x00, 0x01); /* Select Page 1 */ - I2CWrite(AIC3204_ADDR, 0x3b, lgain); /* Unmute Left MICPGA, set gain */ - I2CWrite(AIC3204_ADDR, 0x3c, rgain); /* Unmute Right MICPGA, set gain */ - I2CWrite(AIC3204_ADDR, 0x00, 0x00); /* Select Page 0 */ -} - -void tlv320aic3204_set_digital_gain(int gain) -{ - if (gain < -24) - gain = -24; - if (gain > 40) - gain = 40; - - I2CWrite(AIC3204_ADDR, 0x00, 0x00); /* Select Page 0 */ - I2CWrite(AIC3204_ADDR, 0x53, gain & 0x7f); /* Left ADC Channel Volume */ - I2CWrite(AIC3204_ADDR, 0x54, gain & 0x7f); /* Right ADC Channel Volume */ -} - -void tlv320aic3204_set_volume(int gain) -{ - if (gain > 29) - gain = 29; - else if (gain < -6) - gain = 0x40; - else - gain &= 0x3f; - - I2CWrite(AIC3204_ADDR, 0x00, 0x01); /* Select Page 1 */ - I2CWrite(AIC3204_ADDR, 0x10, gain); /* Unmute Left MICPGA, set gain */ - I2CWrite(AIC3204_ADDR, 0x11, gain); /* Unmute Right MICPGA, set gain */ - I2CWrite(AIC3204_ADDR, 0x00, 0x00); /* Select Page 0 */ -} - -void tlv320aic3204_agc_config(tlv320aic3204_agc_config_t *conf) -{ - int ctrl = 0; - if (conf == NULL) { - ctrl = 0; - } else { - ctrl = 0x80 - | ((conf->target_level & 0x7) << 4) - | (conf->gain_hysteresis & 0x3); - } - I2CWrite(AIC3204_ADDR, 0x00, 0x00); /* Select Page 0 */ - I2CWrite(AIC3204_ADDR, 0x56, ctrl); /* Left AGC Control Register */ - I2CWrite(AIC3204_ADDR, 0x5e, ctrl); /* Right AGC Control Register */ - if (ctrl == 0) - return; - - ctrl = ((conf->attack & 0x1f) << 3) | (conf->attack_scale & 0x7); - I2CWrite(AIC3204_ADDR, 0x59, ctrl); /* Left AGC Attack Time */ - I2CWrite(AIC3204_ADDR, 0x61, ctrl); /* Right AGC Attack Time */ - - ctrl = ((conf->decay & 0x1f) << 3) | (conf->decay_scale & 0x7); - I2CWrite(AIC3204_ADDR, 0x5a, ctrl); /* Left AGC Decay Time */ - I2CWrite(AIC3204_ADDR, 0x62, ctrl); /* Right AGC Decay Time */ + uint8_t data[] = { + 2, 0x00, 0x01, /* Select Page 1 */ + 2, 0x3b, lgain, /* Unmute Left MICPGA, set gain */ + 2, 0x3c, rgain, /* Unmute Right MICPGA, set gain */ + 0 // sentinel + }; + tlv320aic3204_config(data); } diff --git a/ui.c b/ui.c index 6d18589..899e051 100644 --- a/ui.c +++ b/ui.c @@ -1257,7 +1257,7 @@ draw_keypad(void) if (i == selection) bg = config.menu_active_color; ili9341_fill(keypads[i].x, keypads[i].y, 44, 44, bg); - ili9341_drawfont(keypads[i].c, &NF20x24, keypads[i].x+12, keypads[i].y+10, 0x0000, bg); + ili9341_drawfont(keypads[i].c, &NF20x22, keypads[i].x+12, keypads[i].y+10, 0x0000, bg); i++; } } @@ -1267,7 +1267,7 @@ draw_numeric_area_frame(void) { ili9341_fill(0, 208, 320, 32, 0xffff); ili9341_drawstring_8x8_var(keypad_mode_label[keypad_mode], 10, 220, 0x0000, 0xffff); - ili9341_drawfont(KP_KEYPAD, &NF20x24, 300, 216, 0x0000, 0xffff); + ili9341_drawfont(KP_KEYPAD, &NF20x22, 300, 216, 0x0000, 0xffff); } void @@ -1298,9 +1298,9 @@ draw_numeric_input(const char *buf) } if (c >= 0) - ili9341_drawfont(c, &NF20x24, x, 208+4, fg, bg); + ili9341_drawfont(c, &NF20x22, x, 208+4, fg, bg); else if (focused) - ili9341_drawfont(0, &NF20x24, x, 208+4, fg, bg); + ili9341_drawfont(0, &NF20x22, x, 208+4, fg, bg); else ili9341_fill(x, 208+4, 20, 24, bg);