Перейти к содержанию
    

Remaping SDIO STM32F103RCT6

Мне нужно использовать SD карточку в 4 битном режиме.

Взял пример USB mass Storage от iar stm32f103ze sk

С наскоку не заработала. Начал смотреть инициализацию SD интерфейса.

В начальный момент должны работать CLK и CMD линии.

По CLK идут стробы, по CMD - постоянный уровень 1.

Схема подключения у меня аналогична, по этому только отрезал лишнее.

 

void _SdInit (void)
{
GPIO_InitTypeDef  GPIO_InitStructure;
  // GPIO enable clock and release Reset
  RCC_APB2PeriphResetCmd(  RCC_APB2Periph_GPIOD
                         | RCC_APB2Periph_GPIOE, DISABLE);
  RCC_APB2PeriphClockCmd(  RCC_APB2Periph_GPIOD
                         | RCC_APB2Periph_GPIOE, ENABLE);

  /*
  // Init CP pin
  GPIO_InitStructure.GPIO_Pin =  _CP_MASK;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(_CP_PORT, &GPIO_InitStructure);

  // Init WP pin
  GPIO_InitStructure.GPIO_Pin =  _WP_MASK;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(_WP_PORT, &GPIO_InitStructure);
*/
  
  // GPIOC and GPIOD Periph clock enable
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD, ENABLE);

  // Configure PC.08, PC.09, PC.10, PC.11, PC.12 pin: D0, D1, D2, D3, CLK pin
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(GPIOC, &GPIO_InitStructure);

  // Configure PD.02 CMD line
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
  GPIO_Init(GPIOD, &GPIO_InitStructure);

  /* Enable the SDIO AHB Clock */
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_SDIO, ENABLE);

  // Enable the DMA2 Clock
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA2, ENABLE);

  SDIO_DeInit();
}

 

SDIO_CMD ремапиться c TIM3_ETR/UART5_RX, но я не могу найти ни одного примера с ремапом.

Может его не нужно ремапить, а проблема в другом месте?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По вашему коду не видно, все ли выводы инициализируются в нужную альтернативную функцию вызовами а-ля

GPIO_PinAFConfig(GPIOC, GPIO_PinSource8, GPIO_AF_SDIO);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По вашему коду не видно, все ли выводы инициализируются в нужную альтернативную функцию вызовами а-ля

GPIO_PinAFConfig(GPIOC, GPIO_PinSource8, GPIO_AF_SDIO);

 

Ремапить ничего не нужно подтянулCMD к 3.3 В резистором и карточка заработала.

Не понял только как я видел постоянную 1 на этом выводе?

Наверное просчитался.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...