This week I was able to flash firmware updates to BM83 through OTA. I talked to the BM83 develop team over email and after rounds of debugging I could finally use their Android app as intended; I have also looked into many other programming and controlling options of BM83 along the way.
However, changing the operation modes in the firmware easily made BM83 stop connecting to the Android app, so I think the most reliable option is to have traditional UART update; I also found a GUI tool for sending/receiving UART commands/events to/from BM83, which I think should be our first step to connect BM83 to a speaker. Therefore, I purchased a USB-to-UART converter, so that I can largely follow the BM83 support documents in terms of how I program and config it.
While I am waiting for the converter to arrive, I tested our I2C control interface with the ADC. I can now read and write to the page select register in the ADC, which means that the hardware, I2C protocol and command formats are largely functional; by the time I post this I am still debugging writing and reading other control registers, but I believe it could be done soon.
Looking ahead, I will configure, pair, and connect BM83 to a Bluetooth speaker through the UART control interface with my computer (once the converter arrives). I will debug the ADC so that I can set its control registers, and then I will test its functions by feeding in a sine wave and check the output received by the microcontroller.
If these two things are done, I will officially be developing and testing our main audio path – streaming audio from the ADC input, through the microcontroller, to the BM83 module and then to the speaker.