【FileSystem】車載外部ストレージ その7【SDカード③】

【FileSystem】車載外部ストレージ その7【SDカード③】 車載外部ストレージ

バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-external-storage-backnumber/

はじめに

SDカードのインターフェース仕様のSPIモードについて簡単に説明していく。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1

エンジニア歴8年の太郎くん

技術者太郎

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1

SPI通信について

太郎くん
太郎くん

で、同期シリアルって結局どんな感じで通信するの?
SCLKが同期用の信号って話はわかったけど。

フクさん
フクさん

SCLKの立ち上がりでサンプリングするイメージだね。

太郎くん
太郎くん

サンプリング?

フクさん
フクさん

まぁデータとして取り込むってことなんだけど、
絵で描くとこんなイメージだな。

SPIのサンプリングイメージ
太郎くん
太郎くん

あー!
なるほど。
これがSCLKの立ち上がりでサンプリングか。
このSCLKと同期してサンプリングするから同期シリアルってことになるのか。

フクさん
フクさん

そうそう。

太郎くん
太郎くん

これはMasterからSlaveへの送信のイメージだけど、
SlaveからMasterへデータ送る場合はSCLKの向きは逆になるの?

フクさん
フクさん

いや。
SCLKは必ずMaster側からの出力になる。
SlaveはMasterのSCLKに合わせてデータを出力する形になるね。

SPIのSlave側の振る舞い

太郎くん
太郎くん

SlaveからするといつSCLKが来るか分からないのにデータを用意できるもんなの?

フクさん
フクさん

そこはSlave側の仕様で対応できるSCLKが規定されてるね。
Slaveとしてはその規定したSCLKの速度に対応できるよう処理するように作られる。

太郎くん
太郎くん

それもあるんだけど、最初のbitとか準備しようが無いような気がしたんだけど。

フクさん
フクさん

あー。なるほど。
そこはSSの信号で判断していると思うよ。

太郎くん
太郎くん

あー!
そっか!
最初にSSがLowに落ちるからそこのタイミングで最初のbitの準備を始めれば良いのか。

フクさん
フクさん

そうそう。
SSをLowにしておけばOKなように見えるんだけど、
実はSSの立下りエッジで通信I/Fを初期化するような仕組みしているSlaveも多いんで、SSは通信が終わったらHighにしておいた方が安全だね。

太郎くん
太郎くん

意外とうまく作ってるんだねー。

SDカードのSPIモード

太郎くん
太郎くん

で、SDカードとSPI通信するのはどうするのかな?

フクさん
フクさん

そこら辺は、具体的なSDカードのコマンドの時に説明しようかなーって思ってる。
SDカードのピン配置の兼ね合いもあるしねー。

太郎くん
太郎くん

確かにSPIモードと別にSDモードってのがあるんだっけ?
投げるコマンドが違うとか?

フクさん
フクさん

うーん、若干手順は異なるけど、
コマンド仕様そのものはおおよそ一緒だね。

太郎くん
太郎くん

じゃー、先にSDモードってインターフェースの話だね。

まとめ

フクさん
フクさん

まとめだよ。

  • SPI通信についての説明をした。
    • SCLKの立ち上がりでサンプリング。
    • よって、同期シリアルと呼ばれる。
    • SlaveがわはSSの立下りで処理の準備をしている場合があるので、Lowのままにせず一旦Highにしておいた方が安全。
  • SDのSPIモードとSDモードではコマンド仕様はほぼ一緒。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました