|
|
|
microSD SDIO, Помогите начать |
|
|
|
Mar 30 2015, 20:09
|
Гуру
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448
|
Цитата(AHTOXA @ Mar 30 2015, 22:35) Насколько я понял, первый роялит только для не-SDHC карт. (Потому что для SDHC карт не получится передать невыровненный адрес). Да, в HC это убрали, но и на обычных картах никто (или почти никто) такую запись не поддерживал. Цитата(AHTOXA @ Mar 30 2015, 22:35) Что же до флага BUSY при мультиблоковой записи - не разу его не проверял, и не имел проблем. Возможно, с ним работает аппаратура SDIO контроллера. BUSY, естественно, выставляется - иначе у карты не было бы возможности "притормозить" запись.
|
|
|
|
|
Jul 19 2015, 18:02
|
Частый гость
Группа: Участник
Сообщений: 116
Регистрация: 27-01-10
Из: СПб
Пользователь №: 55 094
|
Пытаю SDIO на плате SK-STM32F217. Карту пока не подключал, хочу увидеть хоть какую-нибудь осмысленную активность на сигнальных линиях. Осуществляю инициализацию и отправку команды, но вижу только мусор на линии CLK, на остальных ничего нет. Может кто-нибудь проверить у себя мой вариант? Или подкинуть 100% рабочий код, без лишних функций. Код static SDIO_InitTypeDef s_sdio_param = { SDIO_ClockEdge_Rising, SDIO_ClockBypass_Enable, SDIO_ClockPowerSave_Disable, SDIO_BusWide_1b, SDIO_HardwareFlowControl_Disable, 0 };
void bsp_sd_init (void) { SDIO_CmdInitTypeDef SDIO_CmdInitStruct;
s_gpio_init();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SDIO, ENABLE);
SDIO_SetPowerState(SDIO_PowerState_ON); while (SDIO_GetPowerState() != 0x03) { continue; }
SDIO_Init(&s_sdio_param);
SDIO_ClockCmd(ENABLE);
SDIO_CmdInitStruct.SDIO_CmdIndex = 0xAA; SDIO_CmdInitStruct.SDIO_Argument = 0xCCCCCCCC; SDIO_CmdInitStruct.SDIO_Response = SDIO_Response_No; SDIO_CmdInitStruct.SDIO_CPSM = ENABLE; SDIO_CmdInitStruct.SDIO_Wait = SDIO_Wait_No; SDIO_SendCommand(&SDIO_CmdInitStruct); }
static void s_gpio_init (void) { GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_CLK | RCC_CMD | RCC_D3 | RCC_D2 | RCC_D1 | RCC_D0, ENABLE);
GPIO_PinAFConfig(GPIO_CLK, PINSOURCE_CLK, GPIO_AF_SDIO); GPIO_PinAFConfig(GPIO_CMD, PINSOURCE_CMD, GPIO_AF_SDIO); GPIO_PinAFConfig(GPIO_D3, PINSOURCE_D3, GPIO_AF_SDIO); GPIO_PinAFConfig(GPIO_D2, PINSOURCE_D2, GPIO_AF_SDIO); GPIO_PinAFConfig(GPIO_D1, PINSOURCE_D1, GPIO_AF_SDIO); GPIO_PinAFConfig(GPIO_D0, PINSOURCE_D0, GPIO_AF_SDIO);
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_InitStructure.GPIO_Pin = PIN_CMD; GPIO_Init(GPIO_CMD, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = PIN_D3; GPIO_Init(GPIO_D3, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = PIN_D2; GPIO_Init(GPIO_D2, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = PIN_D1; GPIO_Init(GPIO_D1, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = PIN_D0; GPIO_Init(GPIO_D0, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_InitStructure.GPIO_Pin = PIN_CLK; GPIO_Init(GPIO_CLK, &GPIO_InitStructure); }
Сообщение отредактировал ohmjke - Jul 19 2015, 18:03
|
|
|
|
|
Jan 31 2018, 09:23
|
Гуру
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702
|
Цитата(Мур @ Jan 31 2018, 11:24) Это ценно. Огромное ВАМ спасибо!!!
...остается выяснить CRC вычисляется с учетом этого стартового нуля или ТОЛЬКО данные в учете? Рекомендую ознакомиться с SD Specifications Part 1 Physical Layer Simplified Specification Version 3.01: Цитата When the wide bus option is used, the data is transferred 4 bits at a time (refer to Figure 3-7). Start and end bits, as well as the CRC bits, are transmitted for every one of the DAT lines. CRC bits are calculated and checked for every DAT line individually. The CRC status response and Busy indication will be sent by the card to the host on DAT0 only (DAT1-DAT3 during that period are don't care). Более подробно про разные CRC описано в разделе 4.5 Cyclic Redundancy Code (CRC).
|
|
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|