Sound recording using I2S
Posted: Fri Sep 30, 2016 4:18 pm
Hello,
The problem regards to this platform:
VoCore1 + dock2.0. OpenWRT 15.05 (14.07 can't boot when compiled on my own, but there isn't significant difference between 14.07 and 15.05 so far I know)
I'm trying to record sound through I2S lines. I can see on oscilloscope and logic analyzer, that clocks and data signals are correct. I can even play data recorded by logic analyzer and the sound is good. But when it goes through I2S controller and DMA, the sound is corrupted. There is periodic clacking noise in whole record (and in the beginning there are some data drop-outs, but this isn't problem for me).
So far I tried to modify both Ralink GDMA and I2S drivers, change burst size, add write memory barrier (wmb() ) when writing to registers, set 'coherent' bit in DMA controller, tried to change clock frequency, ... but nothing helped. In order to determine whether problem is caused by DMA I also tried periodic reading data directly from I2S Read FIFO register with DMA disabled (I wrote my driver for this purpose)... but nothing solved the problem
Did someone encountered the same or similar problem?
Thanks
The problem regards to this platform:
VoCore1 + dock2.0. OpenWRT 15.05 (14.07 can't boot when compiled on my own, but there isn't significant difference between 14.07 and 15.05 so far I know)
I'm trying to record sound through I2S lines. I can see on oscilloscope and logic analyzer, that clocks and data signals are correct. I can even play data recorded by logic analyzer and the sound is good. But when it goes through I2S controller and DMA, the sound is corrupted. There is periodic clacking noise in whole record (and in the beginning there are some data drop-outs, but this isn't problem for me).
So far I tried to modify both Ralink GDMA and I2S drivers, change burst size, add write memory barrier (wmb() ) when writing to registers, set 'coherent' bit in DMA controller, tried to change clock frequency, ... but nothing helped. In order to determine whether problem is caused by DMA I also tried periodic reading data directly from I2S Read FIFO register with DMA disabled (I wrote my driver for this purpose)... but nothing solved the problem
Did someone encountered the same or similar problem?
Thanks