📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
細 文字列「__FORCETOC__」を「{{#seo: |title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki |keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,電気回路,電子回路,基板,プリント基板 |description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{… |
|||
| (同じ利用者による、間の2版が非表示) | |||
| 1行目: | 1行目: | ||
== 概要 == | == 概要 == | ||
EEPROM (Electrically Erasable Programmable Read-Only Memory) は、電気的に消去、書き込み可能な不揮発性メモリの1種である。<br> | |||
<br> | |||
EEPROMの主な特徴を以下に示す。<br> | |||
* 不揮発性 | |||
*: 電源を切ってもデータを保持できる。 | |||
* 書き換え可能 | |||
*: データの消去と書き込みを電気的に行うことができる。 | |||
* バイト単位のアクセス | |||
*: バイト単位でデータの読み書きが可能である。 | |||
* 書き換え回数の制限 | |||
*: 一般的に、100万回程度の書き換えが可能である。 | |||
* 低速 | |||
*: フラッシュメモリ等と比較して、読み書きの速度が遅い。 | |||
* シリアル通信 | |||
*: I2CやSPI等のシリアル通信インターフェースを使用して、マイクロコントローラと通信する。 | |||
* 容量 | |||
*: 数[Kbit]〜数[Mbit]までの容量のデバイスが存在する。 | |||
* 用途 | |||
*: 設定情報や較正データの保存、データロガー、小容量のデータ保存等に使用される。 | |||
<br> | |||
EEPROMは、マイコンのシステムで、不揮発性のデータ保存が必要な場合に広く使用されている。<br> | |||
フラッシュメモリと比較して書き換え回数が多く、バイト単位のアクセスが可能な点が特徴である。<br> | |||
<br> | |||
ただし、書き換え速度が遅く、大容量のデータ保存には向かない。<br> | |||
また、書き換え回数にも制限があるため、頻繁に更新されるデータの保存には適していない。<br> | |||
<br> | |||
したがって、用途に応じて、EEPROM、フラッシュメモリ、SRAM等の他のメモリデバイスを使い分ける必要がある。<br> | |||
マイコンの内蔵メモリでデータ保存が可能な場合は、外付けのEEPROMを使用しないこともある。<br> | |||
<br> | |||
EEPROMは、マイコンのシステムにおいて、小容量の不揮発性データ保存が必要な場合に重要な役割を果たすデバイスである。<br> | |||
<br><br> | <br><br> | ||
| 229行目: | 258行目: | ||
return data; | return data; | ||
} | |||
</syntaxhighlight> | |||
<br> | |||
==== AT24C32 (32Kbit I2C EEPROM) ==== | |||
AT24C32 EEPROMを使用してI2C通信する場合は、上記の24LC256のサンプルプログラムとほぼ同じとなる。<br> | |||
これは、AT24C32と24LC256がどちらもI2Cインターフェースを使用しており、通信プロトコルが同一だからである。<br> | |||
<br> | |||
主な違いは、EEPROMの容量とアドレッシングである。<br> | |||
* 24LC256は、256[Kbit] (32[KB]) の容量を持ち、16ビットのアドレス (0x0000~0x7FFF) を使用する。 | |||
* AT24C32は、32[Kbit] (4[KB]) の容量を持ち、8ビットのアドレス (0x00~0xFF) を使用する。 | |||
<br> | |||
したがって、24LC256向けのサンプルコードをAT24C32で使用する場合、以下の点を変更する必要がある。<br> | |||
# EEPROMのI2Cアドレスを確認して、必要に応じて、EEPROM_ADDRESSの定義を変更する。 | |||
#: <br> | |||
# i2c_write_byte関数内およびi2c_read_byte関数内で、アドレスの送信部分を修正する。<br>AT24C32は8ビットアドレスを使用するため、アドレスの上位バイトの送信は不要である。 | |||
<br> | |||
これらの変更を加えることで、24LC256向けのサンプルコードをAT24C32で使用することができる。<br> | |||
<br> | |||
ただし、EEPROMの容量が異なるため、アドレスの範囲に注意が必要である。<br> | |||
AT24C32の有効なアドレス範囲は、<u>0x00~0xFF</u>であり、それ以外のアドレスを指定した場合の動作は未定義となることに注意する。<br> | |||
<br> | |||
<syntaxhighlight lang="c"> | |||
void i2c_write_byte(unsigned char address, unsigned char data) | |||
{ | |||
// ...略 | |||
while (!(IFG2 & UCB0TXIFG)); | |||
UCB0TXBUF = address; // アドレスの送信(8ビットのみ) | |||
// ...略 | |||
} | |||
unsigned char i2c_read_byte(unsigned char address) | |||
{ | |||
// ...略 | |||
while (!(IFG2 & UCB0TXIFG)); | |||
UCB0TXBUF = address; // アドレスの送信(8ビットのみ) | |||
// ...略 | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br><br> | <br><br> | ||
{{#seo: | |||
|title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki | |||
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,電気回路,電子回路,基板,プリント基板 | |||
|description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux | |||
|image=/resources/assets/MochiuLogo_Single_Blue.png | |||
}} | |||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:MSP430]] | [[カテゴリ:MSP430]] | ||