Я использую плату Nucleo F401RE на основе микроконтроллера STM32F401RET6. Я подключился к плате слотом Micro SD и заинтересован в записи данных на SD-карту и считывании данных с нее. Я использовал программное обеспечение STM32CubeX для генерации кода и, в частности, библиотеки SD со встроенными функциями. Я попытался написать простой код, который записывает массив в определенный массив и пытается прочитать одни и те же данные послесловия. Код выглядит следующим образом:Запись данных на микро SD-карту с микроконтроллера STM32F401RET6
uint32_t to_send[512] = {1, 2, 3, 4, 5};
uint32_t to_receive[512];
int main(void)
{
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* Configure the system clock */
SystemClock_Config();
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_USART2_UART_Init();
MX_SDIO_SD_Init();
char buffer[14] = "Hello, world\n";
uint64_t address = 0x00;
HAL_SD_ErrorTypedef write_result = HAL_SD_WriteBlocks(&hsd, to_send, address, 512, 1);
HAL_SD_ErrorTypedef read_result = HAL_SD_ReadBlocks(&hsd, to_receive, 0x00, 512, 1);
HAL_UART_Transmit(&huart2, (uint8_t *) &write_result, 1, 1000);
HAL_UART_Transmit(&huart2, (uint8_t *) &read_result, 1, 1000);
while (1)
{
//HAL_UART_Transmit(&huart2, (uint8_t *)buffer, 14, 1000);
HAL_UART_Transmit(&huart2, (uint8_t *)to_receive, 512, 1000);
}
Хотя, мне не удастся при записи данных, функция HAL_SD_WriteBlocks() возвращает значение SD_CMD_CRC_FAIL, что означает, что: «ответ команды получил (а проверка CRC не удалось)» , Что мне не хватает? Я проверил аппаратную конфигурацию много раз, и микро SD-карта правильно подключена к микроконтроллеру. При необходимости я могу добавить реализацию встроенных функций HAL. Спасибо.
Получаете ли вы эту ошибку независимо от того, какой сектор написан? Попробуйте написать в другой сектор. Попробуйте с другой SD-картой? – staringlizard
Все те же. Я не пытался заменить SD-карту, но я могу прочитать ее на компьютере, поэтому, я думаю, все в порядке. –
Ваш компьютер не использует библиотеку HAL для связи с SD-картой. Я бы попробовал с другой SD-картой, чтобы увидеть, есть ли у вас больше удачи. – staringlizard