This week I have worked for many hours to implement and test the SPI interface on the stm32 discovery board. I have setup an Arduino Uno to communicate with the stm32 board via SPI with stm32 being the master, and verified the stm32’s ability to send and receive individual bytes, both in synchronous mode and in interrupt mode. However, I did not have time to implement stream send and receive via DMA.
I have encountered an issue with corrupted LSB in interrupt receive mode, and struggled to debug for a very long time. With the help of my teammates I was able to narrow down the bug and found the solution (lower the APB clock speed and increase the GPIO speed) to this known issue online.
I was not able to test all of the peripherals and define the function prototypes of our system as planned. Implementing SPI takes a lot more time than we could afford, but it is also the most important and complicated protocol for the microcontroller. Protocols like I2C can build on the knowledge gained in implementing SPI, and the complicated UI interface is not absolutely necessary for the MVP. So I am still waiting to see how much I can do next week to decide whether we want to make major adjustments to our schedule and/or MVP.
Next week I plan to finish: implementing SPI with DMA and time division multiplexing, and I2C.