ISISpace EPS firmware development for the OBC. This repo will be archived and integrated with the main OBC firmware upon completion.
- The Software ICD suggests that "waiting 20ms after transmitting" is enough to ensure you'll get a good response, but that polling is another option. This is a lie; polling appears to be the only option, as the reception is unreliable no matter how long you wait.
- For I2C on the STM32, you must left-shift the address by 1, compared to what's in the Software ICD.
- From the start, write out the TX and RX bytestreams to a debug UART when working with I2C.
- The no_operation command doesn't appear to update the result register, and thus the RC (CC+1) byte in the response still shows the previous command's execution when using the no_operation command.
- The watchdog timer must be serviced as part of the "MVP" implementation.
- Sometimes the OBC enters a state where all I2C tx commands fail (
tx_status != HAL_OK). Resetting the STM32 fixes it. This issue must be investigated more.