(I'm not with my board at the moment - if I need to share my code, I'll have to edit this post or post a new one at a later time)

I didn't realize how complicated I2S setup on the Pi is.

I've been trying to write C code for using the PCM interface on the Pi with DMA controllers. I have verified using a test program that my DMA functions work correctly, and I have set all the bits in the PCM registers as described by the BCM2835 manual.

However, I'm not getting any signal on the PCM_OUT pin during runtime, nor does it look like the DMA is reading any new data from the FIFO. Additionally, when I print the value of the PCM_CS register during runtime, I see that bits are getting un-set or re-set during runtime (such as disabling the DREQ bit), even when I'm not explicitly re-assigning the register in my code.

I'm not very familiar with kernels - are there processes on the Pi that by default are using the PCM interface, that could be interfering with my C program? Is there an easy way to find out? I've heard about having to possibly re-compile the kernel, but I'm not sure what that means or where to even start.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.