In July of 2014, the Raspberry Pi Foundation released the model B+ with much well deserved fanfare. With this design, a number of shortcomings of earlier models were addressed while additional features were added. The power supplies were made more efficient, four mounting holes on a rectangular grid were added, two more USB ports were added, and 12 more GPIO ports were added. It was, in our opinion at the time, as good as it could get.

But, along with those new GPIO ports, there were two mysterious signals on the new 40 pin header: ID_SC and ID_SD. And, a couple of weeks after the B+ announcement came the unveiling of the HAT (Hardware Attached on Top) standard which uses those two pins. In short, this standard establishes the electrical and mechanical requirements for a specific style of Raspberry Pi add-on boards. Mechanically, the boards have to be of a certain shape and size and electrically, the boards all have to have some additional components.

SO, let’s review the HAT requirements in detail to better understand why we find them problematic:

The Mechanical Requirements

HATs are designed to fit snugly on top of the B+ and rev 2 models of the Raspberry Pi with the board outline shown below:



The overall outline is 65 X 56.5mm with optional pass through slots added for the flex circuits. While we have no objection to the above, the size severely limits the number of connectors that can be placed on the board. For example, it would be impossible to fit the components of the DAQCplate on the above board outline. Perhaps in the future we could design a version of DAQC with a reduced feature set but let’s move on to the electrical requirements to address the other issues. The Electrical Requirements

Those two mysterious signals on the 40 pin header are there to interface to the circuit below:



The above is the recommended design from the Raspberry Pi Foundation of a serial EEPROM (a type of nonvolatile memory- the datasheet is here) that holds just over 4000 bytes of data. The standard calls for all HATs to have this circuit and for it to contain information that tells the RPI operating system which pins are required. And that’s a pretty cool idea. But, here’s the problem: the above circuit is designed in such a way that only one can be connected to the Raspberry Pi. The address is fixed at zero and the value of pull-up resistors imply that no other devices will share this I²C bus. In other words, the HAT specification does not allow for the attachment of more than a single type of peripheral board. And, if more than one HAT-compatible board is stacked, then only one can connect the above circuit to the Raspberry Pi. So, any stackable HAT will require jumpers or solder bridges to control connectivity of the EEPROM to the RPI.

At Pi-Plates, our long term plan is to have a family of different expansion boards for the Raspberry Pi. These pi-plates will be stackable and electrically compatible with each other so it will be possible to mix and match them. While the HAT mechanical specification is a little limiting, the electrical requirements are not compatible with our long term design goals.

And that, is our problem with HATs. For more information on the HAT standard, see the Raspberry Pi Foundation announcement here and the technical files at GitHub.