Last week I have written code on the discovery board to control the I2C and I2S interface, as well as DMA. I was able to stream audio from the internal flash memory through I2S to the built-in DAC (controlled through I2C), and hear the sound output from the 3.5mm jack. The whole streaming is done by DMA and I can customize the DMA callback function to adjust buffer pointer etc. so that the audio is streamed continuously.
This week, I configured all the pins and clocks and interface settings for our own board’s microcontroller; I and Adam tested Rev 1 together and were able to program and debug the board. I was able to toggle GPIO output, output master clock to the ADC, and control the Digipot through the I2C bus. Controlling (I2C) and streaming from (I2S) the ADC is yet to be tested when we have a functional ADC on board. We figured out a way to program and control the BM83 Bluetooth module very easily through Over-the-Air firmware updates in the available Android app, but we were only able to get BM83 powered on and connect to it; yet to fix an error in OTA programming.
Looking ahead, the priority is to make sure the sound signal path functions correctly. Specifically, I will focus on getting control over BM83 and connect it to a Bluetooth speaker, then stream audio from microcontroller flash through I2S to BM83 and then to the speaker. I will then rendezvous with Adam on the working ADC board and try getting audio input from the ADC (also through I2S). If these two parts work, then we can get audio in and out of our system which is a big step towards MVP.
My plan for next week is to get the BM83 part working.