i2s: add support apll clock

using apll_param to setup APLL

new apll calculation method, much faster

validate freq calculation

Ensure that the i2s frequency is greater than the hardware limit

Add description of how to calculate apll clock, support apll for other 16-bits audio, check rev0 chip

correct space
This commit is contained in:
Tuan PM
2017-08-16 16:31:11 +08:00
parent de750e9921
commit 9d39881981
4 changed files with 183 additions and 15 deletions

View File

@@ -10,6 +10,8 @@ The I2S peripheral supports DMA meaning it can stream sample data without requir
I2S output can also be routed directly to the Digital/Analog Converter output channels (GPIO 25 & GPIO 26) to produce analog output directly, rather than via an external I2S codec.
.. note:: For high accuracy clock applications, APLL clock source can be used with `.use_apll = 1` and ESP32 will automatic caculate APLL parameter.
Application Example
-------------------
@@ -34,7 +36,9 @@ Short example of I2S configuration:
.communication_format = I2S_COMM_FORMAT_I2S | I2S_COMM_FORMAT_I2S_MSB,
.intr_alloc_flags = ESP_INTR_FLAG_LEVEL1, // high interrupt priority
.dma_buf_count = 8,
.dma_buf_len = 64
.dma_buf_len = 64,
.use_apll = 0,
.apll_param = I2S_APLL_NONE
};
static const i2s_pin_config_t pin_config = {