あなたの天然記念物
ホーム更新雑談Perl鉄ゲタランドナーコースガイド自転車Linuxリンク経歴連絡先

EEPROMドライバを作成 (2014.07.08)

背景

LPCXPresso(1769版)のオンボードEEPROMをアクセスしたい。

結果

できた(簡潔明瞭)。 前回のアーカイブ公開から約1年間かかりました。 長かったです。 EEPROMを扱ったことがなく、データシートを読むところから初めて、アクセスのためのI2Cのシーケンスを読んで シーケンスに合わせた既存ライブラリの仕様を調べたり、色々と時間が掛かってしまいました。 EEPROMは読み出し速度はあっても、書き込みは5msかかるし、1バイトでも1ページ(32バイト)でも同じ時間というのに驚きました。 書き込みはページバッファを介して、できるだけ1ページをまとめて書き込むように努めました。 せっかくなのでオンボードのEEPROM以外のタイプでも扱えるように、書き込みできるか、それと容量を把握してページサイズを推定します。

動作例

離れた2バイトを書き込む例です。
  1. アドレス0x0001へ1バイト書き込み要求が来る
  2. 当該ページ32バイト全部をページバッファに読み出す
  3. ページバッファに要求の1バイトを書き込む
  4. アドレス0x00DFへ1バイト書き込み要求が来る
  5. ページバッファをEEPROMに書き込む(この処理に5msかかる)
  6. 当該ページを読み出す
  7. ページバッファに要求の1バイトを書き込む
    (次の書き込み要求またはクローズ処理までEEPROMへの書き込みは保留)

今回の鉄ゲタは…

特にありません。
まあ、どうせ話が通じないと思うので、あとはソース見てください(^^;
yrntrlmnmnt20140706.zip (313,507 バイトをVPSから 00:05 で)