STM32 I2C Driver Development

Job ID: 40590363

Budget: ₹12,500 – ₹37,500 INR

I need a clean, well-documented I2C driver written in C for my STM32 board. The driver must operate in both master and slave modes while staying strictly within the 100 kHz Standard-mode specification. Full read and write transactions are required in each role, including proper start/stop sequencing, ACK/NACK handling, and error recovery for bus faults or time-outs.

My current firmware is built with STM32CubeIDE, so the new module should compile there without warnings and slot neatly into the existing HAL-based project structure (pure LL implementations are also acceptable if you explain the integration steps).

Deliverables
• Source and header files with clear, line-level comments
• An initialization routine that lets me choose master or slave at runtime
• Blocking and non-blocking (interrupt or DMA) transfer functions for reads and writes
• A concise example project that exercises master-to-slave and slave-to-master loops at 100 kHz, showing data integrity in both directions
• A short README describing API usage, required clock settings, and any board-level wiring considerations

Acceptance criteria: the demo project must build in CubeIDE, run on my hardware, and pass a logic-analyzer capture showing correct waveforms for 10 consecutive read-then-write transactions in both roles.

If you have questions about the board revision or pinout, let me know early so we can keep the turnaround tight.