ARMマイコンのSDカード通信のSDK(fatfs_example)をSDHCに対応させる

使用エディタ:Embedded studio for ARM

SDK:15.0.0

 

SDHCに対応させるには適切な順序でコマンド送信をする必要がある。

SDK内の"app_sdcard.c"というソースコードを使用することでSDカードとの通信をすることは可能ではあるが、このままではSDHCには対応していない。

そこでSDHCを使用する際にどのように変更すれば良いのかを書いておく。

 

"app_sdcard.c"内のどれを変更すれば良いかというと、

 

PT_THREAD(sdc_pt_identification(uint8_t * p_rx_data,uint8_t rx_length,
                     sdc_result_t * p_exit_code))

 

というやつです。

では順番に何を書けば良いのか説明します。

 

1)SDHCカードとSPI通信をするための設定

・ピン定義と周波数設定等

 

2)SPI通信を400kHz以下にする

そのため最初のPT_BEGINの前に以下のものを記述することで始まる前に周波数を変更します。

 

 nrf_drv_spi_xfer_desc_t xfer = NRF_DRV_SPI_XFER_TRX(0xFF,8,0,0);
nrf_delay_ms(1);
SPI_frequency_set();//spi speed under 400kHz(250)

 

3)74ダミークロックを送信する

while(1)が始まったらすぐに以下のものを記述する

送信するxferは上の段階で設定されている。

 

//74(80) dummy clock
for(int i= 0; i > 11;i++){
ret_code_t ret = nrf_drv_spi_xfer(p_spi,&xfer,NRF_DRV_SPI_FLAG_REPEATED_XFER);
}

 

 

 

 

 

 

多分これで動くと思うが、書き漏れがあるかもしれないので他のサイトも確認してみてください。

最後のPT_ENDの前で周波数を再設定することも忘れずに!