mirror of
https://github.com/ttrftech/NanoVNA.git
synced 2025-12-06 03:31:59 +01:00
Merge branch 'master' of git://github.com/ttrftech/NanoVNA
This commit is contained in:
commit
6fc4548e1f
2
Makefile
2
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) \
|
||||
|
||||
|
|
|
|||
38
fft.h
38
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;
|
||||
|
|
|
|||
32
ili9341.c
32
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,27 +473,32 @@ 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);
|
||||
}
|
||||
|
||||
|
|
@ -531,7 +537,7 @@ ili9341_test(int mode)
|
|||
#if 1
|
||||
case 3:
|
||||
for (i = 0; i < 10; i++)
|
||||
ili9341_drawfont(i, &NF20x24, i*20, 120, colormap[i%6], 0x0000);
|
||||
ili9341_drawfont(i, &NF20x22, i*20, 120, colormap[i%6], 0x0000);
|
||||
break;
|
||||
#endif
|
||||
#if 0
|
||||
|
|
|
|||
11
main.c
11
main.c
|
|
@ -32,7 +32,7 @@
|
|||
#include <ctype.h>
|
||||
#include <math.h>
|
||||
|
||||
#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[])
|
||||
|
|
|
|||
21
nanovna.h
21
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];
|
||||
|
||||
|
|
|
|||
624
numfont20x22.c
Normal file
624
numfont20x22.c
Normal file
|
|
@ -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 <stdint.h>
|
||||
|
||||
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,
|
||||
},
|
||||
};
|
||||
|
||||
669
numfont20x24.c
669
numfont20x24.c
|
|
@ -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 <stdint.h>
|
||||
|
||||
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
|
||||
},
|
||||
};
|
||||
|
||||
3
plot.c
3
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) )
|
||||
|
|
|
|||
|
|
@ -2,3 +2,4 @@ matplotlib
|
|||
scipy
|
||||
scikit-rf
|
||||
pillow
|
||||
pyserial
|
||||
|
|
|
|||
414
tlv320aic3204.c
414
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 };
|
||||
int addr = AIC3204_ADDR;
|
||||
i2cAcquireBus(&I2CD1);
|
||||
(void)i2cMasterTransmitTimeout(&I2CD1, addr, buf, 2, NULL, 0, 1000);
|
||||
(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 */
|
||||
|
||||
tlv320aic3204_config(conf_data_pll);
|
||||
tlv320aic3204_config(conf_data_clk);
|
||||
tlv320aic3204_config(conf_data_routing);
|
||||
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_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 */
|
||||
}
|
||||
|
||||
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 */
|
||||
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
|
||||
};
|
||||
#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 */
|
||||
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
|
||||
};
|
||||
#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++);
|
||||
tlv320aic3204_config(channel ? ch1 : ch3);
|
||||
}
|
||||
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);
|
||||
}
|
||||
|
|
|
|||
8
ui.c
8
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);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue