NXT hardware documentation

The hardware documentation for the NXT is not unified. As with most embedded systems, the hardware documentation is split among various datasheets and specs. We have gathered most of the relevant documentation during our work, and listed everything we know of on this page. Hopefully, this should be your starting point when looking for documentation about the hardare from an operational perspective.

General documentation

While these are not specific to the NXT, they are very handy to have around:

  • ARM7TDMI Technical Reference Manual : describes the programmer's model for the ARM7 core, including registers, operation modes, interrupt handling, memory latencies...
  • ARM Architecture Reference Manual : A huge, but vital document. It is a generic document for many versions of the ARM core, and most of it is not applicable to the ARM7TDIM. However, it features a full instruction set reference for all opcodes (watch out: only those for ARMv4t or earlier are available), in both Arm and Thumb mode.
  • Procedure Call Standard for the ARM Architecture : Fairly small, it describes the memory alignment of various data types on the ARM architecture, and defines the standard procedure call mechanism. Very important reading if you are writing assembler code that needs to call into or be called from C code.
  • Universal Serial Bus Specification Revision 2.0 : Quite simply everything you've ever wanted to know about the USB protocol. Chapters 3,4,5,8 and 9 are especially relevant to the programmer wanting to understand the data flow and operation sequence on a USB peripheral.
  • The I2C Bus Specification : Same as above, but for I2C. This is the canonical specification, and is a must-have reference if you go anywhere near programming a bus driver.
  • Quand le Maitre et ses Esclaves Prennent Le Bus (French) : a short, very relaxed introduction to I2C. A very gentle introduction to the way the bus works, before tackling the full reference.

NXT documentation

With the above, you are still no closer to knowing how the NXT's hardware can be operated. The following references should help you in that respect:

  • AT91SAM7S Series Preliminary : Despite the name, this is the big one, the reference to all the stock stuff that is there before Lego added its own stuff. Absolutely must have, no way around it.
  • Lego Mindstorms Hardware Developer Kit : Contains a PDF with the description of most of the additional peripherals that Lego put on the Atmel board, as well as crucially important operation protocols, such as initializing the communication with the AVR coprocessor, or how to give it motor commands. The bundle also contains complete hardware schematics for the board and all the sensors, very useful for looking up which pins you need to fiddle with in your driver.
  • UC1601 Passive Matrix LCD Controller-Driver : The programmer's reference for the display chipset. This one was rather hard to find, and contains critical information on how to operate the display chip. Unfortunately, we cannot put this spec on the web without permission from UltraChip, which we currently don't have. You can mail them from this form to request a copy (ask for the "UC1601 LCD controller" programmer specs).