Saad Islam Tiwana
Published © GPL3+

Embedded Diaries: Hacking RPi camera for use with Zynq FPGA

Most image sensors' datasheets are not public. Join me in attempting to use a RPi (v2.1)camera with FPGA without looking at its datasheet.

IntermediateProtip2 hours4,382
Embedded Diaries: Hacking RPi camera for use with Zynq FPGA

Things used in this project

Hardware components

Zybo Z7: Zynq-7000 ARM/FPGA SoC Development Board
Digilent Zybo Z7: Zynq-7000 ARM/FPGA SoC Development Board
Zybo-Z7-20
×1
Raspberry Pi 4 Model B
Raspberry Pi 4 Model B
×1
Camera Module V2
Raspberry Pi Camera Module V2
×1
Saleae Logic Pro 16
×1
HDMI monitor - Generic
×1

Software apps and online services

Vitis Unified Software Platform
AMD Vitis Unified Software Platform
Vivado Design Suite HLx Editions
AMD Vivado Design Suite HLx Editions
Raspbian
Raspberry Pi Raspbian

Hand tools and fabrication machines

Soldering iron (generic)
Soldering iron (generic)

Story

Read more

Code

Rpi Cam v2.1 720p60 I2C raw dump

Arduino
Raw I2C dump from eavesdropping on I2C communications between Raspberry Pi 2 and v2.1 camera
write to 0x10 ack data: 0x00 0x00 
read to 0x10 ack data: 0x02 0x19
write to 0x10 ack data: 0x00 0x02 
read to 0x10 ack data: 0x10
write to 0x71 nak
read to 0x71 nak
write to 0x71 nak
read to 0x71 nak
write to 0x71 nak
read to 0x71 nak
write to 0x10 ack data: 0x01 0x03 0x01 
write to 0x10 nak
write to 0x10 ack data: 0x01 0x00 0x00 
write to 0x10 ack data: 0x66 0x20 0x01 0x01 
write to 0x10 ack data: 0x66 0x22 0x01 0x01 
write to 0x10 ack data: 0x30 0xEB 0x05 
write to 0x10 ack data: 0x30 0xEB 0x0C 
write to 0x10 ack data: 0x30 0x0A 0xFF 0xFF 
write to 0x10 ack data: 0x30 0xEB 0x05 
write to 0x10 ack data: 0x30 0xEB 0x09 
write to 0x10 ack data: 0x01 0x14 0x01 
write to 0x10 ack data: 0x01 0x28 0x00 
write to 0x10 ack data: 0x01 0x2A 0x18 0x00 
write to 0x10 ack data: 0x01 0x57 0x00 
write to 0x10 ack data: 0x01 0x5A 0x01 0x85 
write to 0x10 ack data: 0x01 0x60 0x01 0x89 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE8 
write to 0x10 ack data: 0x01 0x64 0x01 0x68 
write to 0x10 ack data: 0x01 0x66 0x0B 0x67 
write to 0x10 ack data: 0x01 0x68 0x02 0x00 
write to 0x10 ack data: 0x01 0x6A 0x07 0x9F 
write to 0x10 ack data: 0x01 0x6C 0x05 0x00 
write to 0x10 ack data: 0x01 0x6E 0x02 0xD0 
write to 0x10 ack data: 0x01 0x70 0x01 0x01 
write to 0x10 ack data: 0x01 0x74 0x03 0x03 
write to 0x10 ack data: 0x01 0x8C 0x0A 0x0A 
write to 0x10 ack data: 0x03 0x01 0x05 
write to 0x10 ack data: 0x03 0x03 0x01 0x03 
write to 0x10 ack data: 0x03 0x05 0x03 0x00 
write to 0x10 ack data: 0x03 0x07 0x39 
write to 0x10 ack data: 0x03 0x09 0x0A 
write to 0x10 ack data: 0x03 0x0B 0x01 0x00 
write to 0x10 ack data: 0x03 0x0D 0x72 
write to 0x10 ack data: 0x45 0x5E 0x00 
write to 0x10 ack data: 0x47 0x1E 0x4B 
write to 0x10 ack data: 0x47 0x67 0x0F 
write to 0x10 ack data: 0x47 0x50 0x14 
write to 0x10 ack data: 0x45 0x40 0x00 
write to 0x10 ack data: 0x47 0xB4 0x14 
write to 0x10 ack data: 0x47 0x13 0x30 
write to 0x10 ack data: 0x47 0x8B 0x10 
write to 0x10 ack data: 0x47 0x8F 0x10 
write to 0x10 ack data: 0x47 0x93 0x10 
write to 0x10 ack data: 0x47 0x97 0x0E 
write to 0x10 ack data: 0x47 0x9B 0x0E 
write to 0x10 ack data: 0x01 0x72 0x03 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x00 
write to 0x10 ack data: 0x01 0x57 0x00 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x00 0x01 
write to 0x10 ack data: 0x01 0x57 0x00 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x00 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x00 0xB0 
write to 0x10 ack data: 0x01 0x57 0x00 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x00 0xAA 
write to 0x10 ack data: 0x01 0x57 0x00 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x00 0xA6 
write to 0x10 ack data: 0x01 0x57 0x00 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x00 0xA2 
write to 0x10 ack data: 0x01 0x57 0x00 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x00 0x9E 
write to 0x10 ack data: 0x01 0x57 0x00 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x00 0x9A 
write to 0x10 ack data: 0x01 0x57 0x00 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x00 0x97 
write to 0x10 ack data: 0x01 0x57 0x00 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x00 0x94 
write to 0x10 ack data: 0x01 0x57 0x00 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x00 0x91 
write to 0x10 ack data: 0x01 0x57 0x00 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x00 0x8A 
write to 0x10 ack data: 0x01 0x57 0x00 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x00 0x8E 
write to 0x10 ack data: 0x01 0x57 0x00 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x00 0x95 
write to 0x10 ack data: 0x01 0x57 0x00 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x00 0xA2 
write to 0x10 ack data: 0x01 0x57 0x00 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x00 0xB1 
write to 0x10 ack data: 0x01 0x57 0x00 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x00 0xCA 
write to 0x10 ack data: 0x01 0x57 0x00 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x00 0xF5 
write to 0x10 ack data: 0x01 0x57 0x00 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x01 0x2B 
write to 0x10 ack data: 0x01 0x57 0x00 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x01 0x62 
write to 0x10 ack data: 0x01 0x57 0x00 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x01 0x95 
write to 0x10 ack data: 0x01 0x57 0x00 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x01 0xC5 
write to 0x10 ack data: 0x01 0x57 0x00 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x02 0x21 
write to 0x10 ack data: 0x01 0x57 0x00 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x02 0x81 
write to 0x10 ack data: 0x01 0x57 0x00 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x02 0xC3 
write to 0x10 ack data: 0x01 0x57 0x00 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x02 0xF4 
write to 0x10 ack data: 0x01 0x57 0x00 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x14 
write to 0x10 ack data: 0x01 0x57 0x00 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x34 
write to 0x10 ack data: 0x01 0x57 0x00 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x01 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x0F 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x1B 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x27 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x32 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x3C 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x45 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x4C 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x53 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x57 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x5C 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x60 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x66 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x6C 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x71 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x78 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x7E 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x83 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x89 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x8D 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x91 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x94 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x97 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x9A 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x9E 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0xA1 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0xA3 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0xA5 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0xA7 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0xA9 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0xAB 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0xAD 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0xAF 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0xB2 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0xB5 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0xB7 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0xB9 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0xBB 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0xBC 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0xBD 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0xBF 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0xC0 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0xC1 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0xC2 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0xC3 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0xC2 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0xBF 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0xBC 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0xB8 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0xB5 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0xB1 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0xAE 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0xAC 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0xA9 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0xA7 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0xA5 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0xA3 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0xA0 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x9E 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x9B 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x98 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x95 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x92 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x8F 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x8D 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x8A 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x87 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x82 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x80 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x7C 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x79 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x76 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x73 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x77 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x72 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x6F 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x6A 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x66 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x62 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x5E 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x5B 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x57 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x53 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x4E 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x4A 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x46 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x43 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x3E 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x3A 
write to 0x10 ack data: 0x01 0x60 0x03 0x55 
write to 0x10 ack data: 0x01 0x62 0x0D 0xE7 
write to 0x10 ack data: 0x01 0x5A 0x03 0x51 
write to 0x10 ack data: 0x01 0x57 0x35 

Github link

Credits

Saad Islam Tiwana

Saad Islam Tiwana

8 projects • 34 followers
Practising EE, mostly working with Embedded systems. Special interest in Machine vision, AI and all things flying.

Comments