C SPI Driver for SI4010

Job ID: 40313623

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

I’m using a Silicon Labs SI4010-C2 and need a compact, well-commented C driver that lets the MCU talk to a zb25vq80 SPI flash. The immediate goal is straightforward data transfer: pull /CS low, clock out the command and 24-bit address, then return the requested bytes. No write or erase features are required right now—just reliable READ support so I can stream configuration data from flash at power-up.

Scope
• Create a standalone C source + header pair that drops into the Silicon Labs IDE project I already have.
• Handle GPIO setup for the chip-select line, keeping timing within the device’s spec.
• Implement at least one public function, e.g.
uint8_t flash_read(uint32_t addr, uint8_t *buf, uint16_t len);
The function should assert /CS, send 0x03 + address, read len bytes, de-assert /CS.
• Follow zb25vq80 timing (tCSS, tCSH, max SPI 104 MHz) and the SI4010 SPI peripheral rules.
• Compile cleanly with the default SI4010 toolchain (no warnings).
• Include a quick test routine that reads 256 bytes from address 0x000000 and places them in RAM so I can verify on a logic analyser.

Acceptance
I will flash the produced hex, probe /CS, MOSI, MISO, SCK on my scope, and confirm the byte stream matches the datasheet. Once the read test passes and the code is commented clearly enough for me to extend later, the job is done.