(0x40 0x00 0x00 0x00 0x00 0x95)であるCMD0コマンドを送信したときにSTM32F303でSPIを使用してSDCardを初期化しようとしましたが、MOSIオシロスコープ上で私は以下のように異なる信号を見た。 SPIの速度は281.25kBits/sです。どんな助けもありがとう。ここでSTM32F303のSPIを使用したSDカードの初期化の問題
私は今、私は正しいコマンドを送信していると私はスコープでそれを見ることができるMOSI
uint8_t cmd0[6]={0x40,0x00,0x00,0x00,0x00,0x95};
FATFS_CS_HIGH;
HAL_SPI_Transmit(&hspi1, (uint8_t*)0xff, 1, 10);
for(int i=0;i<10;i++)
{
HAL_SPI_Transmit(&hspi1, (uint8_t*)0xff, 1, 10);
}
FATFS_CS_LOW;
while(1){
HAL_SPI_Transmit(&hspi1, (uint8_t *)cmd0[0], 1, 10);
HAL_SPI_Transmit(&hspi1, (uint8_t *)cmd0[1], 1, 10);
HAL_SPI_Transmit(&hspi1, (uint8_t *)cmd0[2], 1, 10);
HAL_SPI_Transmit(&hspi1, (uint8_t *)cmd0[3], 1,10);
HAL_SPI_Transmit(&hspi1,(uint8_t *) cmd0[4], 1, 10);
HAL_SPI_Transmit(&hspi1, (uint8_t *)cmd0[5], 1, 10);
}
からこの出力をテストするために使用していたコードの一部です。しかし、SDカード(SanDisk Ultra 40MB/s ... 16GB)から0x01の応答(私は0xffを得る)を得ていません。次のコードを使用しています:
FATFS_CS_HIGH;
for (int i = 0; i < 10; i++) {
HAL_SPI_Transmit(&hspi1, &dumb, 1, 10);
while (HAL_SPI_GetState(&hspi1) != HAL_SPI_STATE_READY);
}
FATFS_CS_LOW;
HAL_SPI_Transmit(&hspi1, cmd0, 6, 10);
while (HAL_SPI_GetState(&hspi1) != HAL_SPI_STATE_READY);
for (int i = 0; i < 10; i++) {
HAL_SPI_Transmit(&hspi1, &dumb, 1, 10);
while (HAL_SPI_GetState(&hspi1) != HAL_SPI_STATE_READY);
}
HAL_SPI_Receive(&hspi1, &c, 1, 10);
あなたは答えを持っている可能性があり、今までこの問題を解決しようとしたことを含む人のために何が起こったのか説明できますか? – mike510a
申し訳ありませんが、私はあなたが意味するものを理解していません。 –