Zephyr > microSD (SPI 모드 연결) + FAT > STM32L476 > CMD0 파라미터가 다르다 (0x94 및 0x95)

운영 환경
Ubuntu 18.04 LTS
ボード: STM32L476 Nucleo_64 (以下、STM32L476)
ボード: STM32F769 Discovery Kit (以下、STM32F769)
Zephyr 2.1.0-rc1
microSDモジュール: CK-40 (サンハヤト)
ロジック確認: Analog Discovery 2 (AD2)

지난번


  • Zephyr> microSD (SPI 모드 연결) + FAT> STM32L476에서 성공, STM32F769로 실패> 로직 모니터

  • 상황


  • STM32L476에서 microSD 처리가 성공
  • STM32F769에서 microSD 처리 실패

  • 이번에


  • STM32L476에서 로직 확인 중



  • 0x40, 0x00, 0x00, 0x00, 0x00, 0x94
    보내고 있습니다.
    CMD0의 송신에 상당하는 것 같다.

    그리고, 0x01을 수신하고 있다.

    구현 처리



    명령 송신은 disk_access_spi_sdhc.c의 다음 부분에서 수행되는 것으로 보입니다.
    static int sdhc_spi_tx_cmd(struct sdhc_spi_data *data, u8_t cmd, u32_t payload)
    {
        u8_t buf[SDHC_CMD_SIZE];
    
        LOG_DBG("cmd%d payload=%u", cmd, payload);
        sdhc_spi_trace(data, 0, 0, NULL, 0);
    
        /* Encode the command */
        buf[0] = SDHC_TX | (cmd & ~SDHC_START);
        sys_put_be32(payload, &buf[1]);
        buf[SDHC_CMD_BODY_SIZE] = crc7_be(0, buf, SDHC_CMD_BODY_SIZE);
    
        return sdhc_spi_tx(data, buf, sizeof(buf));
    }
    

    정보



  • SD 카드를 사용해 보자.
  • by K.I 님


  • 정보 감사입니다.

    위의 예에서 CMD0는 const char CMD0[] = {6,0x40,0x00,0x00,0x00,0x00,0x95};와 같이 정의됩니다.

    Zephyr에서 보내는 CMD0과 마지막 부분이 다르다 (0x94와 0x95).

    차이는 있지만, STM32L476 쪽의 처리는 성공하고 있다.

    좋은 웹페이지 즐겨찾기