SRAM SRM2B256SLMX55読み書き方法

```math
\def\textlarge#1{%
  {\rm\Large #1}
}
\def\textsmall#1{%
  {\rm\scriptsize #1}
}
```

##１、SRAMをいじる
SRM2B256SLMX55でデータの読み書きができたので方法をメモとして残します。
初めてSRAMをいじりました。自分なりにわかったことを書いていますので、間違いがあるかもしれません

やったこと
・ピンの仕様、読み書きの方法をまとめる
・本来はICをで行う操作を手動で行えるように回路を作成。動作を確認しました。



##２、仕様
###　(1)ピンについて
　　　ピンは28個あります。
　　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164812/7e638c9e-b18c-5fa5-84ee-655e2fcbf9da.png)


####　・A0～A14
　　　読み書き先のアドレスを指定するためのピン
####　・I/O1～I/O8
　　　読み込み時は出力ピン、書き込み時は入力ピンとして使用する
####　・CS
　　　複数SRAMがある場合どのSRAMを操作するかを指定するピン。
　　　普段はHighe、操作する際はLowにする。1つしか操作対象がなければLow固定でもよい
####　・WE
　　　書き込みする際に使用する。
　　　普段はHighe、登録する際はLowにする（CSがLowのときしか有効でない）
　　　Lowにした時のI/Oの値が指定したアドレスに登録される
####　・OE
　　　読み取りする際に使用する。
　　　普段はHighe、読み取りする際はLowにする（CSがLowのときしか有効でない）
　　　Lowにした時、指定したアドレスに登録されているデータをI/Oに出力する
###　(2)アドレスについて
　　意識する必要は無いように思いますが、アドレスはXとYで指定しているようです。
　　
　　例：下記画像はX=5、Y=3のアドレスを指定しています。　　　　　　　　
　　
　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164812/dbff310f-7350-b0c6-4c08-4409f8df1b36.png)
　　　　　　　　　　　　　　　　　　　　　　　　　※1はHight　0はLow

　　指定したアドレスのセルに1byte(8bit)のデータが記録できます。
　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164812/ada0be9e-b924-d5f5-2da3-22f74c85e3bf.png)




###　(3)書き込み方法
　　　<B>0、すべて初期状態にする</B>
　　　　CS、WE、OEはHight
　　　　A0～A14、I/O1～I/O8はLOW
　　　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164812/0fe5957a-47d2-9339-9fa5-b278ce3f0f0e.png)

　　　<B>ⅰ、操作するアドレスセット</B>
　　　　　A0～A14にアドレスを指定
　　　　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164812/a6b70299-b4d0-cd5b-14ab-ed2f0c8796b6.png)


　　　<B>ⅱ、登録データセット</B>
　　　　　I/O1～I/O8にデータをセット
　　　　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164812/decea81c-1f77-778b-4261-a23a16a580bf.png)

　　　<B>ⅲ、書き込みを支持指示</B>
　　　　　CS、WEをLOWにする
　　　　　ここで指定されたアドレスへデータが書き込まれる
　　　　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164812/c6610137-0c7e-6c4c-cc9f-8579a3ca1b04.png)

　　　<B>ⅳ、すべて初期状態にする</B>
　　　　CS、WE、OEはHight
　　　　A0～A14、I/O1～I/O8はLOW


　　　　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164812/a73189be-cf59-50c5-b14f-0dbfdb037295.png)


###　(4)読み取り方法
　　　<B>0、すべて初期状態にする</B>
　　　　CS、WE、OEはHight
　　　　A0～A14、I/O1～I/O8はLOW
　　　　<B>↓</B>
　　　<B>ⅰ、A0～A14にアドレスを指定</B>
　　　　　　　　　　　　　　　　　　　　　例：X=5、Y=3を指定
　　　　　　　　　　　　　　　　　　　　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164812/33216177-f3de-ea3d-cc8a-b25a271171eb.png)
　　　　<B>↓</B>
　　　<B>ⅱ、CS、OEをLOWにする</B>
　　　　　ここで指定されたアドレスのデータが出力される
　　　　　　　　　　　　　　　　　　　　　例：登録されていたデータ3が出力される
　　　　　　　　　　　　　　　　　　　　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164812/412ad340-a9d5-4b9a-eb7a-a9a871e51b01.png)
　　　　<B>↓</B>
　　　<B>ⅲ、CS、OEをHightに戻す</B>


　　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164812/07c2fe96-a446-4fe9-0f03-a393ee7d79c1.png)




##３、作成した回路
　　　ユニバーサル基板へ実装
　　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164812/9f3006a3-2dc7-58a5-24fb-a3b8b0caf7d0.png)
　　　回路は参考サイトの回路ほぼまんまです。抵抗は全て10KΩ、適当にあったLED。電源電圧は4.5V。
　　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164812/e80b34b3-4e0b-4c50-e60e-eb0686cf8a48.png)
　　　上図の水色枠の拡大です。プルアップ回路が付いています。
　　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164812/ca1e81a2-c97f-7df8-562f-1b914b60aaa8.png)
　　　上図の緑枠の拡大です。プルダウン回路が付いています。
　　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164812/d7ef22b8-34d4-0765-b306-af507c8787a5.png)

##４、動作確認
　　<B>書き込み</B>
　　　アドレスに00000001000001を指定。I/Oに00000001セット。
　　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164812/fe215a72-7887-b787-dfb8-58403df1651c.png)
　　　CSとWE押下で書き込み
　　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164812/2d21f749-b528-2a5b-2a9c-bdff5b3c3ff9.png)
　　<B>読み取り</B>
　　　アドレスに00000001000001を指定。I/Oに初期値の00000000セット。
　　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164812/06ee6d26-124b-7fb0-a5de-07271f14e447.png)
　　　CSとOEを押下すると登録した値がI/Oに出力される
　　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164812/1f421ef6-6db4-12f5-31a3-76098f03ff91.png)


##５、おわりに
SRAM名前は聞いたことがありましたが、実際どのように動いているのかは知りませんでした。
今回ソフトを使わず、手動でデータの読み書きを行うことで楽しく動作を知ることができました。
参考サイト様に感謝です。


参考にしたサイト
[1]　http://7ujm.net/micro/SRAM/SRAM.html