Statistics: Posted by ESP_Faye — Fri Sep 25, 2015 6:44 pm
Code:
#define BASEFREQ (12000000L)
#define ABS(x) (((x)>0)?(x):(-(x)))
//Set the I2S sample rate, in HZ
void i2sSetRate(int rate) {
//Find closest divider
int bestbck=0, bestfreq=0;
int tstfreq;
int i;
//Calculate the base divider for 16 bits of data
int div=(BASEFREQ/(rate*24)); //24Bit 位宽
//The base divider can be off by as much as <1 Compensate by trying to make the amount of bytes in the
//i2s cycle more than 16. Do this by trying the amounts from 16 to 32 and keeping the one that fits best.
for (i=16; i<32; i++) {
tstfreq=BASEFREQ/(div*i*2);
// printf("Best (%d,%d) cur (%d,%d) div %d\n", bestbck, bestfreq, i, tstfreq, ABS(rate-tstfreq));
if (ABS(rate-tstfreq)<ABS(rate-bestfreq)) {
bestbck=i;
bestfreq=tstfreq;
}
}
// printf("ReqRate %d Div %d Bck %d Frq %d\n", rate, div, bestbck, BASEFREQ/(div*bestbck*2));
os_printf("bestbck = %d, div = %d\n\r",bestbck,div);
#if 1
//Master mode
CLEAR_PERI_REG_MASK(I2SCONF, I2S_TRANS_SLAVE_MOD|
(I2S_BITS_MOD<<I2S_BITS_MOD_S)|
(I2S_BCK_DIV_NUM <<I2S_BCK_DIV_NUM_S)|
(I2S_CLKM_DIV_NUM<<I2S_CLKM_DIV_NUM_S));
SET_PERI_REG_MASK(I2SCONF, I2S_RIGHT_FIRST|I2S_MSB_RIGHT|I2S_RECE_SLAVE_MOD|
I2S_RECE_MSB_SHIFT|I2S_TRANS_MSB_SHIFT|
(((bestbck-1)&I2S_BCK_DIV_NUM )<<I2S_BCK_DIV_NUM_S)|
(((div-1)&I2S_CLKM_DIV_NUM)<<I2S_CLKM_DIV_NUM_S)|
(8<<I2S_BITS_MOD_S));
#else
//Slave mode
CLEAR_PERI_REG_MASK(I2SCONF, I2S_RECE_SLAVE_MOD|
(I2S_BITS_MOD<<I2S_BITS_MOD_S)|
(I2S_BCK_DIV_NUM <<I2S_BCK_DIV_NUM_S)|
(I2S_CLKM_DIV_NUM<<I2S_CLKM_DIV_NUM_S));
SET_PERI_REG_MASK(I2SCONF, I2S_RIGHT_FIRST|I2S_MSB_RIGHT|I2S_TRANS_SLAVE_MOD|
I2S_RECE_MSB_SHIFT|I2S_TRANS_MSB_SHIFT|
(((bestbck-1)&I2S_BCK_DIV_NUM )<<I2S_BCK_DIV_NUM_S)|
(((div-1)&I2S_CLKM_DIV_NUM)<<I2S_CLKM_DIV_NUM_S));
#endif
}
Statistics: Posted by danshi126 — Thu Sep 24, 2015 9:40 pm
Code:
#define ETS_SLC_INUM 1
#define ETS_SLC_INTR_ATTACH(func, arg)\
ets_isr_attach(ETS_SLC_INUM, (func), (void *)(arg))
#define ETS_SLC_INTR_ENABLE() \
ETS_INTR_ENABLE(ETS_SLC_INUM)
Statistics: Posted by ESP_Faye — Thu Sep 24, 2015 7:18 pm
Statistics: Posted by danshi126 — Tue Sep 22, 2015 9:30 pm
Statistics: Posted by ESP_Faye — Mon Sep 21, 2015 6:37 pm
Statistics: Posted by danshi126 — Sat Sep 19, 2015 5:55 pm
Statistics: Posted by danshi126 — Thu Aug 27, 2015 5:22 pm
Statistics: Posted by Helios — Wed Aug 26, 2015 6:12 pm