Skip to content

Commit 4900877

Browse files
committed
Merge branch 'revision-cmd'
2 parents ccdd91d + 08a7b11 commit 4900877

File tree

5 files changed

+176
-41
lines changed

5 files changed

+176
-41
lines changed

NANOSDR_STM32_F303/board.h

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444

4545
/* on-board */
4646

47+
#define GPIOA_PUSH_BUTTON 0
4748
#define GPIOA_USART2_TX 2
4849
#define GPIOA_USART2_RX 3
4950
#define GPIOA_DAC1 4
@@ -58,6 +59,8 @@
5859
#define GPIOA_JTMS 13
5960
#define GPIOA_JTCK 14
6061

62+
#define GPIOB_ENC_PHASEA 1
63+
#define GPIOB_ENC_PHASEB 2
6164
#define GPIOB_SPI3_SCK 3
6265
#define GPIOB_SPI3_MISO 4
6366
#define GPIOB_SPI3_MOSI 5
@@ -115,7 +118,7 @@
115118
* PA14 - SWCLK (alternate 0).
116119
*/
117120
#define VAL_GPIOA_MODER (PIN_MODE_INPUT(0U) | \
118-
PIN_MODE_INPUT(1U) | \
121+
PIN_MODE_OUTPUT(1U) | \
119122
PIN_MODE_ALTERNATE(GPIOA_USART2_TX) | \
120123
PIN_MODE_ALTERNATE(GPIOA_USART2_RX) | \
121124
PIN_MODE_INPUT(4U) | \
@@ -146,8 +149,8 @@
146149
PIN_OTYPE_PUSHPULL(GPIOA_JTMS) | \
147150
PIN_OTYPE_PUSHPULL(GPIOA_JTCK) | \
148151
PIN_OTYPE_PUSHPULL(15))
149-
#define VAL_GPIOA_OSPEEDR (PIN_OSPEED_100M(0) | \
150-
PIN_OSPEED_100M(1) | \
152+
#define VAL_GPIOA_OSPEEDR (PIN_OSPEED_2M(0) | \
153+
PIN_OSPEED_2M(1) | \
151154
PIN_OSPEED_50M(GPIOA_USART2_TX) | \
152155
PIN_OSPEED_50M(GPIOA_USART2_RX) | \
153156
PIN_OSPEED_100M(4) | \
@@ -162,8 +165,8 @@
162165
PIN_OSPEED_100M(GPIOA_JTMS) | \
163166
PIN_OSPEED_100M(GPIOA_JTCK) | \
164167
PIN_OSPEED_100M(15))
165-
#define VAL_GPIOA_PUPDR (PIN_PUPDR_PULLDOWN(0) | \
166-
PIN_PUPDR_PULLDOWN(1) | \
168+
#define VAL_GPIOA_PUPDR (PIN_PUPDR_PULLDOWN(0) | \
169+
PIN_PUPDR_FLOATING(1) | \
167170
PIN_PUPDR_FLOATING(GPIOA_USART2_TX) | \
168171
PIN_PUPDR_FLOATING(GPIOA_USART2_RX) | \
169172
PIN_PUPDR_PULLUP(4) | \
@@ -224,7 +227,7 @@
224227
* PB14 - I2S2_MISO (alternate 5).
225228
* PB15 - I2S2_MOSI (alternate 5).
226229
*/
227-
#define VAL_GPIOB_MODER (PIN_MODE_INPUT(0) | \
230+
#define VAL_GPIOB_MODER (PIN_MODE_OUTPUT(0) | \
228231
PIN_MODE_INPUT(1) | \
229232
PIN_MODE_INPUT(2) | \
230233
PIN_MODE_ALTERNATE(GPIOB_SPI3_SCK) | \
@@ -256,7 +259,7 @@
256259
PIN_OTYPE_PUSHPULL(GPIOB_I2S2_BCLK) | \
257260
PIN_OTYPE_PUSHPULL(GPIOB_I2S2_MISO) | \
258261
PIN_OTYPE_PUSHPULL(GPIOB_I2S2_MOSI))
259-
#define VAL_GPIOB_OSPEEDR (PIN_OSPEED_100M(0) | \
262+
#define VAL_GPIOB_OSPEEDR (PIN_OSPEED_2M(0) | \
260263
PIN_OSPEED_100M(1) | \
261264
PIN_OSPEED_100M(2) | \
262265
PIN_OSPEED_100M(3) | \
@@ -272,10 +275,10 @@
272275
PIN_OSPEED_100M(GPIOB_I2S2_BCLK) | \
273276
PIN_OSPEED_100M(GPIOB_I2S2_MISO) | \
274277
PIN_OSPEED_100M(GPIOB_I2S2_MOSI))
275-
#define VAL_GPIOB_PUPDR (PIN_PUPDR_PULLDOWN(0) | \
278+
#define VAL_GPIOB_PUPDR (PIN_PUPDR_FLOATING(0) | \
276279
PIN_PUPDR_PULLDOWN(1) | \
277280
PIN_PUPDR_PULLDOWN(2) | \
278-
PIN_PUPDR_PULLUP(3) | \
281+
PIN_PUPDR_PULLUP(3) | \
279282
PIN_PUPDR_PULLUP(4) | \
280283
PIN_PUPDR_PULLUP(5) | \
281284
PIN_PUPDR_PULLUP(6) | \

main.c

Lines changed: 72 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
#include <stm32f303xc.h>
1515

1616

17-
1817
static struct {
1918
int32_t rms[2];
2019
int16_t ave[2];
@@ -169,7 +168,9 @@ config_t config = {
169168
{ 11330000, MOD_USB },
170169
{ 13273000, MOD_USB },
171170
{ 17904000, MOD_USB }
172-
}
171+
},
172+
.button_polarity = 0x01,
173+
.freq_inverse = -1
173174
};
174175

175176
struct {
@@ -441,7 +442,6 @@ static void cmd_stat(BaseSequentialStream *chp, int argc, char *argv[])
441442
#endif
442443
}
443444

444-
445445
static void cmd_power(BaseSequentialStream *chp, int argc, char *argv[])
446446
{
447447
(void)argc;
@@ -465,18 +465,22 @@ static void cmd_impedance(BaseSequentialStream *chp, int argc, char *argv[])
465465
static void cmd_gain(BaseSequentialStream *chp, int argc, char *argv[])
466466
{
467467
int gain;
468-
if (argc != 1 && argc != 2) {
469-
chprintf(chp, "usage: gain {pga gain(0-95)} {digital gain(-24-40)}\r\n");
468+
if (argc != 1 && argc != 2 && argc != 3) {
469+
chprintf(chp, "usage: gain {pga gain(0-95)} [digital gain(-24-40)] [adjust]\r\n");
470470
return;
471471
}
472472

473473
gain = atoi(argv[0]);
474-
tlv320aic3204_set_gain(gain);
474+
tlv320aic3204_set_gain(gain, gain);
475475
uistat.rfgain = gain;
476476

477-
if (argc == 2) {
477+
if (argc >= 2) {
478+
int adjust = 0;
478479
gain = atoi(argv[1]);
479-
tlv320aic3204_set_digital_gain(gain);
480+
if (argc == 3) {
481+
adjust = atoi(argv[2]);
482+
}
483+
tlv320aic3204_set_digital_gain(gain, gain + adjust);
480484
uistat.rfgain += gain;
481485
}
482486

@@ -495,6 +499,30 @@ static void cmd_phase(BaseSequentialStream *chp, int argc, char *argv[])
495499
tlv320aic3204_set_adc_phase_adjust(value);
496500
}
497501

502+
static void cmd_finegain(BaseSequentialStream *chp, int argc, char *argv[])
503+
{
504+
int g1 = 0, g2 = 0;
505+
if (argc != 1 && argc != 2) {
506+
chprintf(chp, "usage: gainadjust {gain1 gain2} (0 - -4)\r\n");
507+
return;
508+
}
509+
g1 = atoi(argv[0]);
510+
if (argc == 2) {
511+
g2 = atoi(argv[1]);
512+
}
513+
tlv320aic3204_set_adc_fine_gain_adjust(g1, g2);
514+
}
515+
516+
static void cmd_iqbal(BaseSequentialStream *chp, int argc, char *argv[])
517+
{
518+
if (argc != 1) {
519+
chprintf(chp, "usage: iqbal {coeff}\r\n");
520+
return;
521+
}
522+
double value = config.freq_inverse - (double)atoi(argv[0]) / 10000.0;
523+
tlv320aic3204_config_adc_filter2(value);
524+
}
525+
498526
static void cmd_volume(BaseSequentialStream *chp, int argc, char *argv[])
499527
{
500528
int gain;
@@ -750,6 +778,28 @@ static void cmd_channel(BaseSequentialStream *chp, int argc, char *argv[])
750778
}
751779
}
752780

781+
static void cmd_revision(BaseSequentialStream *chp, int argc, char *argv[])
782+
{
783+
if (argc == 0) {
784+
chprintf(chp, "usage: revision {rev}\r\n");
785+
return;
786+
}
787+
int rev = atoi(argv[0]);
788+
switch (rev) {
789+
case 0:
790+
config.freq_inverse = 1;
791+
config.button_polarity = 0x00;
792+
break;
793+
case 1:
794+
config.freq_inverse = -1;
795+
config.button_polarity = 0x01;
796+
break;
797+
default:
798+
chprintf(chp, "unknown revision\r\n");
799+
break;
800+
}
801+
}
802+
753803
static void cmd_save(BaseSequentialStream *chp, int argc, char *argv[])
754804
{
755805
(void)argc;
@@ -807,6 +857,7 @@ static const ShellCommand commands[] =
807857
{ "gain", cmd_gain },
808858
{ "volume", cmd_volume },
809859
{ "agc", cmd_agc },
860+
{ "iqbal", cmd_iqbal },
810861
{ "dcreject", cmd_dcreject },
811862
{ "imp", cmd_impedance },
812863
{ "mode", cmd_mode },
@@ -815,9 +866,11 @@ static const ShellCommand commands[] =
815866
{ "show", cmd_show },
816867
{ "power", cmd_power },
817868
{ "channel", cmd_channel },
869+
{ "revision", cmd_revision },
818870
{ "save", cmd_save },
819871
{ "clearconfig", cmd_clearconfig },
820872
{ "phase", cmd_phase },
873+
{ "finegain", cmd_finegain },
821874
{ NULL, NULL }
822875
};
823876

@@ -876,6 +929,12 @@ int __attribute__((noreturn)) main(void)
876929
/* restore config */
877930
config_recall();
878931

932+
if (config.button_polarity != 0) {
933+
// pullup for revision 1 board
934+
palSetGroupMode(GPIOA, 1, 0, PAL_MODE_INPUT_PULLUP);
935+
palSetGroupMode(GPIOB, 6, 0, PAL_MODE_INPUT_PULLUP);
936+
}
937+
879938
// copy uistat from uistat
880939
uistat = config.uistat;
881940

@@ -917,6 +976,7 @@ int __attribute__((noreturn)) main(void)
917976
* I2S Initialize
918977
*/
919978
tlv320aic3204_init();
979+
920980
i2sInit();
921981
i2sObjectInit(&I2SD2);
922982
i2sStart(&I2SD2, &i2sconfig);
@@ -942,7 +1002,6 @@ int __attribute__((noreturn)) main(void)
9421002
* Shell manager initialization.
9431003
*/
9441004
shellInit();
945-
tlv320aic3204_config_adc_filter(1); // enable DC reject
9461005

9471006
/*
9481007
* Creates the blinker thread.
@@ -952,7 +1011,10 @@ int __attribute__((noreturn)) main(void)
9521011
#if 1
9531012
ui_init();
9541013
#endif
955-
1014+
1015+
tlv320aic3204_config_adc_filter2(config.freq_inverse /* + 0.129 */); // enable DC reject
1016+
//tlv320aic3204_config_adc_filter(1); // enable DC reject
1017+
9561018
/*
9571019
* Creates the button thread.
9581020
*/

nanosdr.h

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,20 +41,22 @@ typedef struct {
4141
} tlv320aic3204_agc_config_t;
4242

4343
extern void tlv320aic3204_init(void);
44-
extern void tlv320aic3204_set_gain(int gain);
45-
extern void tlv320aic3204_set_digital_gain(int gain);
44+
extern void tlv320aic3204_set_gain(int g1, int g2);
45+
extern void tlv320aic3204_set_digital_gain(int g1, int g2);
4646
extern void tlv320aic3204_set_volume(int gain);
4747
extern void tlv320aic3204_agc_config(tlv320aic3204_agc_config_t *conf);
4848
extern void tlv320aic3204_set_fs(int fs);
4949
extern void tlv320aic3204_stop(void);
5050

5151
extern void tlv320aic3204_config_adc_filter(int enable);
52+
extern void tlv320aic3204_config_adc_filter2(double iqbal);
5253
extern void tlv320aic3204_set_impedance(int imp);
5354

5455
extern int tlv320aic3204_get_sticky_flag_register(void);
5556
extern int8_t tlv320aic3204_get_left_agc_gain(void);
5657
extern int8_t tlv320aic3204_get_right_agc_gain(void);
5758
extern void tlv320aic3204_set_adc_phase_adjust(int8_t adjust);
59+
extern void tlv320aic3204_set_adc_fine_gain_adjust(int8_t g1, int8_t g2);
5860

5961
extern void tlv320aic3204_beep(void);
6062

@@ -263,6 +265,8 @@ typedef struct {
263265
tlv320aic3204_agc_config_t agc;
264266
channel_t channels[CHANNEL_MAX];
265267
uistat_t uistat;
268+
int8_t freq_inverse;
269+
uint8_t button_polarity;
266270
int32_t checksum;
267271
} config_t;
268272

@@ -275,5 +279,4 @@ int config_recall(void);
275279

276280
void clear_all_config_prop_data(void);
277281

278-
279282
/*EOF*/

0 commit comments

Comments
 (0)