aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKattni <kattni@adafruit.com>2018-09-21 13:15:51 -0400
committerGitHub <noreply@github.com>2018-09-21 13:15:51 -0400
commit839b7912536d038a7825366b185a84f63ed67eb4 (patch)
tree758af65ba63b7d0c2eff1476ff0af2169991f66a
parent0015db1c4c64ec1efa3f41f657819c3c18587c7b (diff)
parenta9d094ab749dcddaa383705290439a0b2c930e8a (diff)
Merge pull request #1204 from tannewt/merge_3x4.0.0-alpha.1
Merge in AudioOut fix from 3.x
-rw-r--r--locale/circuitpython.pot15
-rw-r--r--locale/de_DE.po15
-rw-r--r--locale/en_US.po15
-rw-r--r--locale/es.po15
-rw-r--r--locale/fil.po15
-rw-r--r--locale/fr.po23
-rw-r--r--ports/atmel-samd/asf4_conf/samd21/peripheral_clk_config.h4
-rw-r--r--ports/atmel-samd/common-hal/audioio/AudioOut.c25
8 files changed, 85 insertions, 42 deletions
diff --git a/locale/circuitpython.pot b/locale/circuitpython.pot
index 2d52f5262..513ec8efd 100644
--- a/locale/circuitpython.pot
+++ b/locale/circuitpython.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-09-20 21:52-0400\n"
+"POT-Creation-Date: 2018-09-21 12:23-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -291,12 +291,12 @@ msgid "Too many channels in sample."
msgstr ""
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:305
-#: ports/atmel-samd/common-hal/audioio/AudioOut.c:326
+#: ports/atmel-samd/common-hal/audioio/AudioOut.c:339
msgid "No DMA channel found"
msgstr ""
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:308
-#: ports/atmel-samd/common-hal/audioio/AudioOut.c:328
+#: ports/atmel-samd/common-hal/audioio/AudioOut.c:341
msgid "Unable to allocate buffers for signed conversion"
msgstr ""
@@ -338,16 +338,21 @@ msgstr ""
msgid "Cannot output both channels on the same pin"
msgstr ""
-#: ports/atmel-samd/common-hal/audioio/AudioOut.c:173
+#: ports/atmel-samd/common-hal/audioio/AudioOut.c:176
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:189
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c:110
msgid "All timers in use"
msgstr ""
-#: ports/atmel-samd/common-hal/audioio/AudioOut.c:215
+#: ports/atmel-samd/common-hal/audioio/AudioOut.c:218
msgid "All event channels in use"
msgstr ""
+#: ports/atmel-samd/common-hal/audioio/AudioOut.c:297
+#, c-format
+msgid "Sample rate too high. It must be less than %d"
+msgstr ""
+
#: ports/atmel-samd/common-hal/busio/I2C.c:71
msgid "Not enough pins available"
msgstr ""
diff --git a/locale/de_DE.po b/locale/de_DE.po
index de47f8200..72f7b254d 100644
--- a/locale/de_DE.po
+++ b/locale/de_DE.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-09-20 21:52-0400\n"
+"POT-Creation-Date: 2018-09-21 12:23-0400\n"
"PO-Revision-Date: 2018-07-27 11:55-0700\n"
"Last-Translator: Sebastian Plamauer\n"
"Language-Team: \n"
@@ -300,12 +300,12 @@ msgid "Too many channels in sample."
msgstr "Zu viele Kanäle im sample"
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:305
-#: ports/atmel-samd/common-hal/audioio/AudioOut.c:326
+#: ports/atmel-samd/common-hal/audioio/AudioOut.c:339
msgid "No DMA channel found"
msgstr "Kein DMA Kanal gefunden"
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:308
-#: ports/atmel-samd/common-hal/audioio/AudioOut.c:328
+#: ports/atmel-samd/common-hal/audioio/AudioOut.c:341
msgid "Unable to allocate buffers for signed conversion"
msgstr "Konnte keine Buffer für Vorzeichenumwandlung allozieren"
@@ -347,16 +347,21 @@ msgstr "Ungültiger Pin für rechten Kanal"
msgid "Cannot output both channels on the same pin"
msgstr "Kann nicht beite Kanäle auf dem gleichen Pin ausgeben"
-#: ports/atmel-samd/common-hal/audioio/AudioOut.c:173
+#: ports/atmel-samd/common-hal/audioio/AudioOut.c:176
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:189
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c:110
msgid "All timers in use"
msgstr "Alle timer werden benutzt"
-#: ports/atmel-samd/common-hal/audioio/AudioOut.c:215
+#: ports/atmel-samd/common-hal/audioio/AudioOut.c:218
msgid "All event channels in use"
msgstr "Alle event Kanälre werden benutzt"
+#: ports/atmel-samd/common-hal/audioio/AudioOut.c:297
+#, c-format
+msgid "Sample rate too high. It must be less than %d"
+msgstr ""
+
#: ports/atmel-samd/common-hal/busio/I2C.c:71
msgid "Not enough pins available"
msgstr "Nicht genug Pins vorhanden"
diff --git a/locale/en_US.po b/locale/en_US.po
index 9f21e9fb5..63ae50ba5 100644
--- a/locale/en_US.po
+++ b/locale/en_US.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-09-20 21:52-0400\n"
+"POT-Creation-Date: 2018-09-21 12:23-0400\n"
"PO-Revision-Date: 2018-07-27 11:55-0700\n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -291,12 +291,12 @@ msgid "Too many channels in sample."
msgstr ""
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:305
-#: ports/atmel-samd/common-hal/audioio/AudioOut.c:326
+#: ports/atmel-samd/common-hal/audioio/AudioOut.c:339
msgid "No DMA channel found"
msgstr ""
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:308
-#: ports/atmel-samd/common-hal/audioio/AudioOut.c:328
+#: ports/atmel-samd/common-hal/audioio/AudioOut.c:341
msgid "Unable to allocate buffers for signed conversion"
msgstr ""
@@ -338,16 +338,21 @@ msgstr ""
msgid "Cannot output both channels on the same pin"
msgstr ""
-#: ports/atmel-samd/common-hal/audioio/AudioOut.c:173
+#: ports/atmel-samd/common-hal/audioio/AudioOut.c:176
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:189
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c:110
msgid "All timers in use"
msgstr ""
-#: ports/atmel-samd/common-hal/audioio/AudioOut.c:215
+#: ports/atmel-samd/common-hal/audioio/AudioOut.c:218
msgid "All event channels in use"
msgstr ""
+#: ports/atmel-samd/common-hal/audioio/AudioOut.c:297
+#, c-format
+msgid "Sample rate too high. It must be less than %d"
+msgstr ""
+
#: ports/atmel-samd/common-hal/busio/I2C.c:71
msgid "Not enough pins available"
msgstr ""
diff --git a/locale/es.po b/locale/es.po
index b76318872..6d7d38f05 100644
--- a/locale/es.po
+++ b/locale/es.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-09-20 21:52-0400\n"
+"POT-Creation-Date: 2018-09-21 12:23-0400\n"
"PO-Revision-Date: 2018-08-24 22:56-0500\n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -307,12 +307,12 @@ msgid "Too many channels in sample."
msgstr ""
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:305
-#: ports/atmel-samd/common-hal/audioio/AudioOut.c:326
+#: ports/atmel-samd/common-hal/audioio/AudioOut.c:339
msgid "No DMA channel found"
msgstr ""
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:308
-#: ports/atmel-samd/common-hal/audioio/AudioOut.c:328
+#: ports/atmel-samd/common-hal/audioio/AudioOut.c:341
msgid "Unable to allocate buffers for signed conversion"
msgstr "No se pudieron asignar buffers para la conversión con signo"
@@ -354,16 +354,21 @@ msgstr ""
msgid "Cannot output both channels on the same pin"
msgstr "No es posible utilizar el mismo pin para ambos canales"
-#: ports/atmel-samd/common-hal/audioio/AudioOut.c:173
+#: ports/atmel-samd/common-hal/audioio/AudioOut.c:176
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:189
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c:110
msgid "All timers in use"
msgstr "Todos los timers estan siendo utilizados"
-#: ports/atmel-samd/common-hal/audioio/AudioOut.c:215
+#: ports/atmel-samd/common-hal/audioio/AudioOut.c:218
msgid "All event channels in use"
msgstr "Todos los canales de eventos estan siendo utilizados"
+#: ports/atmel-samd/common-hal/audioio/AudioOut.c:297
+#, c-format
+msgid "Sample rate too high. It must be less than %d"
+msgstr ""
+
#: ports/atmel-samd/common-hal/busio/I2C.c:71
msgid "Not enough pins available"
msgstr "No hay suficientes pines disponibles"
diff --git a/locale/fil.po b/locale/fil.po
index 0531d57cd..ad6252a21 100644
--- a/locale/fil.po
+++ b/locale/fil.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-09-20 21:52-0400\n"
+"POT-Creation-Date: 2018-09-21 12:23-0400\n"
"PO-Revision-Date: 2018-08-30 23:04-0700\n"
"Last-Translator: Timothy <me@timothygarcia.ca>\n"
"Language-Team: fil\n"
@@ -303,12 +303,12 @@ msgid "Too many channels in sample."
msgstr "Sobra ang channels sa sample."
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:305
-#: ports/atmel-samd/common-hal/audioio/AudioOut.c:326
+#: ports/atmel-samd/common-hal/audioio/AudioOut.c:339
msgid "No DMA channel found"
msgstr "Walang DMA channel na mahanap"
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:308
-#: ports/atmel-samd/common-hal/audioio/AudioOut.c:328
+#: ports/atmel-samd/common-hal/audioio/AudioOut.c:341
msgid "Unable to allocate buffers for signed conversion"
msgstr "Hindi ma-allocate ang buffers para sa naka-sign na conversion"
@@ -350,16 +350,21 @@ msgstr "Mali ang pin para sa kanang channel"
msgid "Cannot output both channels on the same pin"
msgstr "Hindi maaaring output ang mga parehong channel sa parehong pin"
-#: ports/atmel-samd/common-hal/audioio/AudioOut.c:173
+#: ports/atmel-samd/common-hal/audioio/AudioOut.c:176
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:189
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c:110
msgid "All timers in use"
msgstr "Lahat ng timer ginagamit"
-#: ports/atmel-samd/common-hal/audioio/AudioOut.c:215
+#: ports/atmel-samd/common-hal/audioio/AudioOut.c:218
msgid "All event channels in use"
msgstr "Lahat ng event channels ginagamit"
+#: ports/atmel-samd/common-hal/audioio/AudioOut.c:297
+#, c-format
+msgid "Sample rate too high. It must be less than %d"
+msgstr ""
+
#: ports/atmel-samd/common-hal/busio/I2C.c:71
msgid "Not enough pins available"
msgstr "Hindi sapat ang magagamit na pins"
diff --git a/locale/fr.po b/locale/fr.po
index 9ed380d31..d6d7b6087 100644
--- a/locale/fr.po
+++ b/locale/fr.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-09-20 21:52-0400\n"
+"POT-Creation-Date: 2018-09-21 12:23-0400\n"
"PO-Revision-Date: 2018-08-14 11:01+0200\n"
"Last-Translator: Pierrick Couturier <arofarn@arofarn.info>\n"
"Language-Team: fr\n"
@@ -298,12 +298,12 @@ msgid "Too many channels in sample."
msgstr "Trop de canaux dans l'échantillon."
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:305
-#: ports/atmel-samd/common-hal/audioio/AudioOut.c:326
+#: ports/atmel-samd/common-hal/audioio/AudioOut.c:339
msgid "No DMA channel found"
msgstr "Aucun canal DMA trouvé"
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:308
-#: ports/atmel-samd/common-hal/audioio/AudioOut.c:328
+#: ports/atmel-samd/common-hal/audioio/AudioOut.c:341
msgid "Unable to allocate buffers for signed conversion"
msgstr "Impossible d'allouer des tampons pour une conversion signée"
@@ -345,16 +345,21 @@ msgstr "Broche invalide pour le canal droit"
msgid "Cannot output both channels on the same pin"
msgstr "On ne peut mettre les deux canaux sur la même broche"
-#: ports/atmel-samd/common-hal/audioio/AudioOut.c:173
+#: ports/atmel-samd/common-hal/audioio/AudioOut.c:176
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:189
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c:110
msgid "All timers in use"
msgstr "Tous les timers sont utilisés"
-#: ports/atmel-samd/common-hal/audioio/AudioOut.c:215
+#: ports/atmel-samd/common-hal/audioio/AudioOut.c:218
msgid "All event channels in use"
msgstr "Tous les canaux d'événements sont utilisés"
+#: ports/atmel-samd/common-hal/audioio/AudioOut.c:297
+#, c-format
+msgid "Sample rate too high. It must be less than %d"
+msgstr ""
+
#: ports/atmel-samd/common-hal/busio/I2C.c:71
msgid "Not enough pins available"
msgstr "Pas assez de broches disponibles"
@@ -2401,9 +2406,9 @@ msgid "too many arguments provided with the given format"
msgstr "trop d'arguments fournis avec ce format"
#, fuzzy
-#~ msgid "palette must be displayio.Palette"
-#~ msgstr "la palette doit être longue de 32 octets"
-
-#, fuzzy
#~ msgid "value_size must be power of two"
#~ msgstr "'len' doit être un multiple de 4"
+
+#, fuzzy
+#~ msgid "palette must be displayio.Palette"
+#~ msgstr "la palette doit être longue de 32 octets"
diff --git a/ports/atmel-samd/asf4_conf/samd21/peripheral_clk_config.h b/ports/atmel-samd/asf4_conf/samd21/peripheral_clk_config.h
index f47277602..2e1e238aa 100644
--- a/ports/atmel-samd/asf4_conf/samd21/peripheral_clk_config.h
+++ b/ports/atmel-samd/asf4_conf/samd21/peripheral_clk_config.h
@@ -385,7 +385,7 @@
// <i> Select the clock source for DAC.
#ifndef CONF_GCLK_DAC_SRC
-#define CONF_GCLK_DAC_SRC GCLK_CLKCTRL_GEN_GCLK1_Val
+#define CONF_GCLK_DAC_SRC GCLK_CLKCTRL_GEN_GCLK0_Val
#endif
/**
@@ -393,7 +393,7 @@
* \brief DAC's Clock frequency
*/
#ifndef CONF_GCLK_DAC_FREQUENCY
-#define CONF_GCLK_DAC_FREQUENCY 320000
+#define CONF_GCLK_DAC_FREQUENCY 48000000
#endif
// <y> USB Clock Source
diff --git a/ports/atmel-samd/common-hal/audioio/AudioOut.c b/ports/atmel-samd/common-hal/audioio/AudioOut.c
index 269acabf9..0592775a5 100644
--- a/ports/atmel-samd/common-hal/audioio/AudioOut.c
+++ b/ports/atmel-samd/common-hal/audioio/AudioOut.c
@@ -110,13 +110,14 @@ void common_hal_audioio_audioout_construct(audioio_audioout_obj_t* self,
_pm_enable_bus_clock(PM_BUS_APBC, DAC);
#endif
- // SAMD21: This clock should be <= 12 MHz, per datasheet section 47.6.3.
- // SAMD51: This clock should be <= 350kHz, per datasheet table 37-6.
+ // SAMD51: This clock should be <= 12 MHz, per datasheet section 47.6.3.
+ // SAMD21: This clock is 48mhz despite the datasheet saying it must only be <= 350kHz, per
+ // datasheet table 37-6. It's incorrect because the max output rate is 350ksps and is only
+ // achieved when the GCLK is more than 8mhz.
_gclk_enable_channel(DAC_GCLK_ID, CONF_GCLK_DAC_SRC);
-
- DAC->CTRLA.bit.SWRST = 1;
- while (DAC->CTRLA.bit.SWRST == 1) {}
+ DAC->CTRLA.bit.SWRST = 1;
+ while (DAC->CTRLA.bit.SWRST == 1) {}
bool channel0_enabled = true;
#ifdef SAMD51
@@ -127,9 +128,11 @@ void common_hal_audioio_audioout_construct(audioio_audioout_obj_t* self,
if (channel0_enabled) {
#ifdef SAMD21
DAC->EVCTRL.reg |= DAC_EVCTRL_STARTEI;
+ // We disable the voltage pump because we always run at 3.3v.
DAC->CTRLB.reg = DAC_CTRLB_REFSEL_AVCC |
DAC_CTRLB_LEFTADJ |
- DAC_CTRLB_EOEN;
+ DAC_CTRLB_EOEN |
+ DAC_CTRLB_VPD;
#endif
#ifdef SAMD51
DAC->EVCTRL.reg |= DAC_EVCTRL_STARTEI0;
@@ -283,6 +286,16 @@ void common_hal_audioio_audioout_play(audioio_audioout_obj_t* self,
common_hal_audioio_audioout_stop(self);
}
audio_dma_result result = AUDIO_DMA_OK;
+ uint32_t sample_rate = audiosample_sample_rate(sample);
+ #ifdef SAMD21
+ uint32_t max_sample_rate = 350000;
+ #endif
+ #ifdef SAMD51
+ uint32_t max_sample_rate = 1000000;
+ #endif
+ if (sample_rate > max_sample_rate) {
+ mp_raise_ValueError_varg(translate("Sample rate too high. It must be less than %d"), max_sample_rate);
+ }
#ifdef SAMD21
result = audio_dma_setup_playback(&self->left_dma, sample, loop, true, 0,
false /* output unsigned */,