EPISODE · Dec 28, 2021 · 1 MIN
Adding floppy disk support to CircuitPython, step 2
from Adafruit Industries · host Adafruit Industries
OK now that we've gotten the motor up and running, and the drive selected in step 1 - we know our wiring is correct. step 2 is getting data out! unlike almost all protocols we're used to, there's no clock pin on floppy data. it comes out in MFM format (at least, this floppy disk format does) which means we get a series of ~500kHz open-drain pulses with short negative widths, and varying positive widths that indicate flux transitions. now the *proper* thing to do here is use a PLL to sync up with the pulses since the motor speed can vary a few %, then convert the pulse widths to bits of data. but we're gonna do it dirty to start, and just busy-poll the pin using a fast register gpio read and collect pulse widths, then maybe decode and bitpack them on the fly. not sure if this is workable yet, but it looks OK so far: just started collecting the data pulses and they seem to be binnable. part 1 is here: https://youtu.be/ceyM6vYpT74 #floppy #python #arduino Visit the Adafruit shop online - http://www.adafruit.com ----------------------------------------- LIVE CHAT IS HERE! http://adafru.it/discord Adafruit on Instagram: https://www.instagram.com/adafruit Subscribe to Adafruit on YouTube: http://adafru.it/subscribe New tutorials on the Adafruit Learning System: http://learn.adafruit.com/ -----------------------------------------
What this episode covers
OK now that we've gotten the motor up and running, and the drive selected in step 1 - we know our wiring is correct. step 2 is getting data out! unlike almost all protocols we're used to, there's no clock pin on floppy data. it comes out in MFM format (at least, this floppy disk format does) which means we get a series of ~500kHz open-drain pulses with short negative widths, and varying positive widths that indicate flux transitions. now the *proper* thing to do here is use a PLL to sync up with the pulses since the motor speed can vary a few %, then convert the pulse widths to bits of data. but we're gonna do it dirty to start, and just busy-poll the pin using a fast register gpio read and collect pulse widths, then maybe decode and bitpack them on the fly. not sure if this is workable yet, but it looks OK so far: just started collecting the data pulses and they seem to be binnable. part 1 is here: https://youtu.be/ceyM6vYpT74 #floppy #python #arduino Visit the Adafruit shop online - http://www.adafruit.com ----------------------------------------- LIVE CHAT IS HERE! http://adafru.it/discord Adafruit on Instagram: https://www.instagram.com/adafruit Subscribe to Adafruit on YouTube: http://adafru.it/subscribe New tutorials on the Adafruit Learning System: http://learn.adafruit.com/ -----------------------------------------
NOW PLAYING
Adding floppy disk support to CircuitPython, step 2
No transcript for this episode yet
Similar Episodes
Apr 21, 2026 ·73m
Apr 18, 2026 ·14m
Apr 18, 2026 ·95m
Apr 15, 2026 ·55m
Apr 13, 2026 ·68m
Apr 11, 2026 ·59m