Skip to content

Specify EEPROM data layout #44

@jonnew

Description

@jonnew

We need to document the layout for channel map EEPROM data. Currently, this is the layout:

ID Address Range Description
MAGIC 0x00 - 0x09 The ascii character string "open-ephys"
NAME 0x0A - 0x1D ASCII character string specifying the name of the modules, padded out to 20 chars. e.g. "Hirose DF40 64 Ch. "[^1]
PCB_REV 0x1E Single ASCII character indicating indicating PCB revision. e.g. 'A'
NUM_CHAN 0x1F Single uint8_t specifying the number of channels in the channel map
CHAN_MAP 0x20 - 0x20 + NUM_CHAN A uint8_t[NUM_CHAN] containing the channel map

I propose the following, revised layout:

ID Address Range Description
MAGIC 0x0000 - 0x0009 The ASCII character string "open-ephys"
LAOUT_VER 0x000A-0x000B Major.Minor version number of the EEPROM layout (e.g. this specification will be 1.0)
NAME 0x000C - 0x002B A null-terminated ASCII character string specifying the name of the module. Must be 32-bytes or shorter, including null terminator. e.g. "Hirose DF40 64 Ch.\0"
PCB_REV 0x002C Single ASCII character indicating indicating PCB revision. e.g. 'A'
NUM_MAPS 0x002D A single uint8_t specifying the number of maps
RESERVED 0x002E-0x03FF Reserved
...
NUM_CHAN_0 0x0400 Single uint8_t specifying the number of channels in channel map 01
MAP_NAME_0 0x0401 - 0x420 A null-terminated ASCII character string specifying the name of channel map 0. Must be 32-bytes or shorter, including null terminator. e.g. "Headstage-64\0"
CHAN_MAP_0 0x0421 - 0x0421 + NUM_CHAN_0 A uint8_t[NUM_CHAN_0] containing channel map 0
...
NUM_CHAN_1 0x0800 Single uint8_t specifying the number of channels in channel map 11
MAP_NAME_0 0x0801 - 0x0820 A null-terminated ASCII character string specifying the name of channel map 1. Must be 32-bytes or shorter, including null terminator. e.g. "SPI Low Profile\0"
CHAN_MAP_1 0x0821 - 0x0821 + NUM_CHAN_1 A uint8_t[NUM_CHAN_1] containing channel map 1
...
NUM_CHAN_<NUM_MAPS - 1> 0x0400 * (NUM_MAPS - 1) Single uint8_t specifying the number of channels in channel map NUM_MAPS - 11
MAP_NAME_<NUM_MAPS - 1> 0x0401 * (NUM_MAPS - 1) - 0x0420 * (NUM_MAPS - 1) A null-terminated ASCII character string specifying the name of channel map NUM_MAPS - 1. Must be 32-bytes or shorter, including null terminator.
CHAN_MAP_<NUM_MAPS - 1> 0x0421 * (NUM_MAPS - 1) + 1 - 0x0421 * (NUM_MAPS - 1) + NUM_CHAN_<NUM_MAPS - 1> A uint8_t[NUM_CHAN_<NUM_MAPS - 1>] containing channel map NUM_MAPS - 1

@filcarv and @aacuevas if you have additional ideas, corrections, or comments please document them here.

Footnotes

  1. Must be 128 or less for this hardware, so this will fit into single byte. 2 3

Metadata

Metadata

Labels

documentationImprovements or additions to documentationquestionFurther information is requested

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions