BLE Nano v2というNordicのnRF52832といったチップを搭載しているモジュールを用い、SDカードとSPI通信をしようとしています。
開発環境としては、
ARM社のNordik SDKを用いkeil uVersion5で行っています.
言語は C言語です。
SPI通信をするにあたって、BLENanov2とSDカードのSPIにおいての配線はできています。
問題はプログラムなのですが、SDカードのSPIモード化をするのに詰まってしまっています。
流れとしては
・CSをHIGHにしておく(このとき通信速度400kbps以下)
・マスタからSDに80クロックのダミークロックを送る
・CSをLOWにしてCMD0を発行
・レスポンスを読み込んでSPIモードにいこうできたか判定
この際、すぐにはできないため1バイトずつ受信を行う
・CMD1を発行(初期化プロセスを起動させる)
ということが調べて分かったのですが、
/#define SPI_USE_EASY_DMA 0;
/#define SPI0_CONFIG_SCK_PIN 2
/#define SPI0_CONFIG_MOSI_PIN 29
/#define SPI0_CONFIG_MISO_PIN 30
/#define SPI0_CONFIG_SS_PIN 28
/#define SPI0_CONFIG_IRQ_PRIORITY APP_IRQ_PRIORITY_LOW
const char CMD0[] = {6,0x00,0x00,0x00,0x00,0x00,0x95};
const char CMD1[] = {6,0x41,0x00,0x00,0x00,0x00,0xf9};
int SD_init(void)
{
nrf_delay_ms(10); //wait
//CS(SS) = HIGH nrf_gpio_cfg_output(28); nrf_gpio_pin_set(28);
//10bite dummydata
nrf_gpio_cfg_output(2);
int j;
nrf_gpio_pin_set(2); for(j=0;j<80;j++) { nrf_gpio_pins_clear(2); nrf_gpio_pin_set(2); } nrf_gpio_pins_clear(2); //CS = Low nrf_gpio_pin_clear(28); //CMD0の発行というのが分かりません
//それ以降もわかりません
}
というところまでしか書けていなく、CMD0の発行方法が分かりません。
MOSIピンにCMD0を出力させればよいのでしょうか?
またそのときのコードというか、書き方も調べてみたのですがよくわからないままでいます。
また、80クロックは上記の書き方であっているのでしょうか?
より良い書き方があれば教えていただきたいです。
ほかにも、レスポンスを判定や、1バイトずつ受信などもどうすればよいでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/20 12:36
2018/06/22 12:43
2018/06/26 18:17 編集