Work Update
Last week I completed the RFID driver. As mentioned in the design review and a previous blog post, it was built on top of the Raspberry Pi GPIO library for Python, as well as another library that has some basic SPI primitives. Specifically, it exposes an API that allows the user to create a connection to an SPI device, and transfer data.
I began by writing some relatively simple code to set and read registers on the MFRC522 device, as well as using bitmasks to set or clear specific bits of a register without changing the others. I then began to implement some basic functionality of the MFRC522, as well as a subset of the full RFID spec given by the tags we bought. On the device, we need to initialize it, configure it, and have the ability to send commands to select a tag, send commands to it, and read the response back. In this way we can read the ID of each tag without needing to implement the full set of cryptography operations that are required to read and write to the data sectors of each device.
This work was an iterative process of reading the manufacturer documentation, figuring out which registers and settings were needed, and testing. Progress was slow because while the documentation is detailed, the device has a significant number of features, and there is no guidance on how to perform particular tasks. That made the process largely one of trial and error.
Schedule Update
I believe I’m still on track for my tasks. Next week I will work on the driver for the current shunt so that Mark and I can begin to test the chips he’s been working on.