0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Macアドレス有りEEPROM

Posted at

EEPROM内のMacアドレスをRead

秋月電子で販売されているMacアドレス書き込み済みEEPROMからMacアドレスを読んでみる。

環境

Arduino IDEおよびArduino Unoを利用。

ATMEL AT93C46A/AT93C46D

EEPROM自体はATMEL AT93C46A/AT93C46D。

AT93C46A/AT93C46Dデータシート

秋月電子の本製品のページからたどれる。SPI接続でEEPROM領域へアクセス可能。

参照ソースコード

このEEPROMへのアクセスするソースコードサンプルはここに見つかる。これをほぼそのまま使う。

ソースコード

下記10-13は、ArduinoでSPI接続する場合のピン番号である。

# include "93C46.h"

# define pCS 10
# define pSK 13
# define pDI 11
# define pDO 12

// Prints all words of the buffer
void debugPrint(word* buff, int len) {
  char buf[4];
  
  Serial.print("\n   00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F");
  for(int i = 0; i < len; i++) {
    if(i % 8 == 0) {
      Serial.println();
      sprintf(buf, "%02x", i*2); Serial.print(buf); Serial.print(" ");
    }
    sprintf(buf, "%02x", buff[i] & 0xFF); Serial.print(buf);
    Serial.print(" ");
    sprintf(buf, "%02x", (buff[i] & 0xFF00) >> 8); Serial.print(buf);
    Serial.print(" ");
  }
  Serial.println();
}

void setup() {
  bool longMode = EEPROM_93C46_MODE_16BIT;
  
  eeprom_93C46 e = eeprom_93C46(pCS, pSK, pDI, pDO);
  e.set_mode(longMode);
  Serial.begin(9600);
  
  int len = longMode ? 64 : 128;
  word readBuffer[len];
  for(int i = 0; i < len; i++) {
    // Read by address
    word r = e.read(i);
    readBuffer[i] = r;
  }
  debugPrint(readBuffer, len);
  Serial.println();
}

void loop() {}

結果

上記コードの実行結果は下記のとおり。

   00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00 40 00 10 00 00 02 cb XX XX XX 00 00 00 00 00 00 
10 00 00 ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
20 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
30 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
40 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
50 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
60 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
70 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff

本EEPROMに関する秋月電子のQ&Aページによると、販売メーカーが取得したベンダーコード「00 02 cb」が見える。その次に続く「XX XX XX」が連番のデータ。

最後に

上述のリンク先のソースコードを利用すれば、EEPROMのMacアドレス領域に書き込めるはず。ただし、Macアドレスのユニーク性が保証されなくなるので注意されたし。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?