реклама на сайте
подробности

 
 
15 страниц V  < 1 2 3 4 > »   
Reply to this topicStart new topic
> SD Card - програмная реализация интерфейса, У кого нибудь есть примеры реализации взаимодействия с SD Card?
Andrei....
сообщение Jan 9 2007, 14:50
Сообщение #16


Частый гость
**

Группа: Новичок
Сообщений: 104
Регистрация: 20-03-06
Пользователь №: 15 402



Цитата(aaarrr @ Jan 9 2007, 13:59) *
Цитата(Andrei.... @ Jan 9 2007, 13:49) *

вопрос: изначально, при включении питания sd-карта ведь находится в sd-режиме? и я могу работать в нём? и инициализационная последовательность в этом случае будет ACMD41, CMD2, CMD3? я правильно понимаю?

Да, стартует карта в SD-режиме, и последовательность инициализации будет именно такой. А какое железо используется, на борту есть контроллер SD? С программной эмуляцией SD-режима я бы не связывался.

всё то же самое - ep9307, а с програмной реализацией я уже связался (D[0:3],CMD,CLK всё завёл на PortB), Да кстати, команда ACMD41 ведь состоит из последовательности CMD55, CMD41...поэтому на данном этапе я посылаю CMD55 и жду ответа r1...но карта ничего не отвечает.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 9 2007, 14:58
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Andrei.... @ Jan 9 2007, 14:50) *
всё то же самое - ep9307, а с програмной реализацией я уже связался (D[0:3],CMD,CLK всё завёл на PortB)

Интересно будет узнать, что из этого получится.
CRC данных там шибко неудобно считать - нужно вычислить CRC16 для потока по каждой линии отдельно, если правильно помню. Можно все скопом, но придется написать извращенную функцию.

Цитата(Andrei.... @ Jan 9 2007, 14:50) *
Да кстати, команда ACMD41 ведь состоит из последовательности CMD55, CMD41...поэтому на данном этапе я посылаю CMD55 и жду ответа r1...но карта ничего не отвечает.

А CMD0 подать не забыли? Без нее ничего работать не будет.
Go to the top of the page
 
+Quote Post
Andrei....
сообщение Jan 9 2007, 15:43
Сообщение #18


Частый гость
**

Группа: Новичок
Сообщений: 104
Регистрация: 20-03-06
Пользователь №: 15 402



Цитата(aaarrr @ Jan 9 2007, 14:58) *
Цитата(Andrei.... @ Jan 9 2007, 14:50) *

Да кстати, команда ACMD41 ведь состоит из последовательности CMD55, CMD41...поэтому на данном этапе я посылаю CMD55 и жду ответа r1...но карта ничего не отвечает.

А CMD0 подать не забыли? Без нее ничего работать не будет.

вон оно что выясняется...никакое CMD0 не подаю, дак CMD0 же переводит в SPI-режим или в Idle State, а ведь изначально карта находится в Idle State, ну я ничего и не подаю - включил питание и CMD55 туда!
Go to the top of the page
 
+Quote Post
sff
сообщение Jan 9 2007, 16:08
Сообщение #19


Частый гость
**

Группа: Свой
Сообщений: 172
Регистрация: 23-04-06
Пользователь №: 16 404



Цитата(Andrei.... @ Jan 9 2007, 15:43) *
вон оно что выясняется...никакое CMD0 не подаю, дак CMD0 же переводит в SPI-режим или в Idle State

CMD0 переводит исключительно в Idle State
А вот CMD1 это уже SEND_OP_COND.

Откуда такая уверенность что карточка изначально в Idle State, может в sleep mode неходится
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 9 2007, 16:16
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Andrei.... @ Jan 9 2007, 15:43) *
дак CMD0 же переводит в SPI-режим или в Idle State, а ведь изначально карта находится в Idle State, ну я ничего и не подаю - включил питание и CMD55 туда!

В SPI-режим карта переводится подачей CMD0 только при низком уровне CS. Кроме того, после включения карте нужно подать ~80 пустых циклов CLK.
В Вашем случае еще понадобится включить четырехбитный режим - ACMD6.

Цитата(sff @ Jan 9 2007, 16:08) *
Откуда такая уверенность что карточка изначально в Idle State, может в sleep mode неходится

По спецификации это действительно так. Однако, жизнь порой преподносит сюрпризы.
Go to the top of the page
 
+Quote Post
Andrei....
сообщение Jan 9 2007, 16:21
Сообщение #21


Частый гость
**

Группа: Новичок
Сообщений: 104
Регистрация: 20-03-06
Пользователь №: 15 402



Цитата(sff @ Jan 9 2007, 16:08) *
Цитата(Andrei.... @ Jan 9 2007, 15:43) *

вон оно что выясняется...никакое CMD0 не подаю, дак CMD0 же переводит в SPI-режим или в Idle State

CMD0 переводит исключительно в Idle State
А вот CMD1 это уже SEND_OP_COND.

Откуда такая уверенность что карточка изначально в Idle State, может в sleep mode неходится


Ещё раз посмотрел док-ию, после power up она действительно находится в idle state.
Кстати посылка сначала команды CMD0 не изменяет ситуацию. (на следущую за ней CMD55, по прежнему не отвечает, точнее я пока смотрю только стартовый 0-бит, линия CMD глухо висит в 1)
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 9 2007, 16:28
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Andrei.... @ Jan 9 2007, 16:21) *
Кстати посылка сначала команды CMD0 не изменяет ситуацию. (на следущую за ней CMD55, по прежнему не отвечает, точнее я пока смотрю только стартовый 0-бит, линия CMD глухо висит в 1)

Должна сначала ответить на CMD0. "Пустые" клоки после старта подаются? Как долго ждете ответ на команду?
Go to the top of the page
 
+Quote Post
Andrei....
сообщение Jan 9 2007, 16:35
Сообщение #23


Частый гость
**

Группа: Новичок
Сообщений: 104
Регистрация: 20-03-06
Пользователь №: 15 402



Цитата(aaarrr @ Jan 9 2007, 16:16) *
Кроме того, после включения карте нужно подать ~80 пустых циклов CLK.
В Вашем случае еще понадобится включить четырехбитный режим - ACMD6.


~80 пустых циклов CLK на полёт не повлияло...а до четырёхбитного режима надо ещё дожить smile.gif)

Цитата(aaarrr @ Jan 9 2007, 16:28) *
Должна сначала ответить на CMD0. "Пустые" клоки после старта подаются? Как долго ждете ответ на команду?


СТОП!!! Команда CMD0 ведь без ответа!
А после CMD55 клок идёт постоянно (пока не возникнет стартовый бит ответа)... а может у меня чего то с полярностью клока, как я понимаю у CLK активный уровень 1, долно быть что типа такого:
#define SDCLK PBDR_bit.PxDATA0 /* PortB.0 */
#define SDCMD PBDR_bit.PxDATA1 /* PortB.1 */
...
SDCMD=cmd_bit;
SDCLK=1;
Sleep(10);
SDCLK=0;
Sleep(10);
...
Go to the top of the page
 
+Quote Post
sff
сообщение Jan 9 2007, 17:18
Сообщение #24


Частый гость
**

Группа: Свой
Сообщений: 172
Регистрация: 23-04-06
Пользователь №: 16 404



Да немного запамятствовал я..

Цитата(Andrei.... @ Jan 9 2007, 16:35) *
СТОП!!! Команда CMD0 ведь без ответа!

Это в режиме SD CMD0 без ответа, а вот в SPI ответ R1 smile.gif

А вы уверены что у вас CRC7 правильно рассчитывается, ведь если на карточки проверка не прошла то она ничего и не отвечает.
Go to the top of the page
 
+Quote Post
Andrei....
сообщение Jan 9 2007, 17:30
Сообщение #25


Частый гость
**

Группа: Новичок
Сообщений: 104
Регистрация: 20-03-06
Пользователь №: 15 402



Цитата(sff @ Jan 9 2007, 17:18) *
Да немного запамятствовал я..

Цитата(Andrei.... @ Jan 9 2007, 16:35) *

СТОП!!! Команда CMD0 ведь без ответа!

Это в режиме SD CMD0 без ответа, а вот в SPI ответ R1 smile.gif

А вы уверены что у вас CRC7 правильно рассчитывается, ведь если на карточки проверка не прошла то она ничего и не отвечает.


да, crc7 считается правильно, используется процедура любезно присланная aaarrr (сомневаться в правильности не приходится)
Go to the top of the page
 
+Quote Post
Andrei....
сообщение Jan 9 2007, 17:43
Сообщение #26


Частый гость
**

Группа: Новичок
Сообщений: 104
Регистрация: 20-03-06
Пользователь №: 15 402



To aaarrr:

У вас присутствуют такие строки в примере:
...
SSP1CPSR = 0x02; // 7.3728MHz
SSP1CR0 = 0xc7; // SPI Mode 3
...
Это означает SSPCLKout=283kHz?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 9 2007, 18:16
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Andrei.... @ Jan 9 2007, 16:35) *
СТОП!!! Команда CMD0 ведь без ответа!

Да, это в SPI режиме есть ответ, как уже заметили.

Цитата(Andrei.... @ Jan 9 2007, 16:35) *
а может у меня чего то с полярностью клока, как я понимаю у CLK активный уровень 1

Данные защелкиваются по фронту, а выставляются картой по спаду CLK.

Цитата(Andrei.... @ Jan 9 2007, 17:43) *
To aaarrr:

У вас присутствуют такие строки в примере:
...
SSP1CPSR = 0x02; // 7.3728MHz
SSP1CR0 = 0xc7; // SPI Mode 3
...
Это означает SSPCLKout=283kHz?

Это ошибка - SSPCLKout будет 3.6864MHz.
Go to the top of the page
 
+Quote Post
Andrei....
сообщение Jan 10 2007, 12:04
Сообщение #28


Частый гость
**

Группа: Новичок
Сообщений: 104
Регистрация: 20-03-06
Пользователь №: 15 402



Похоже всё заработало, запутка была в том что я байты не в той последовательности отправлял smile.gif
Однако, возвращаясь к вопросу о ~80 пустых циклах, где сказано что их нужно отправлять (выяснилось что они влияют на полёт). Я так полагал, что достаточно поставить 8 clk перед отправкой любой команды, и это уже позволяеет выдержать все тайминги между командами и ответами.
Go to the top of the page
 
+Quote Post
sff
сообщение Jan 10 2007, 12:17
Сообщение #29


Частый гость
**

Группа: Свой
Сообщений: 172
Регистрация: 23-04-06
Пользователь №: 16 404



Цитата(Andrei.... @ Jan 10 2007, 12:04) *
Однако, возвращаясь к вопросу о ~80 пустых циклах, где сказано что их нужно отправлять (выяснилось что они влияют на полёт). Я так полагал, что достаточно поставить 8 clk перед отправкой любой команды, и это уже позволяеет выдержать все тайминги между командами и ответами.

Если быть точным то там сказано 74 такта. Раздел Power-Up
Цитата
After power up, the host starts the clock and sends the initializing sequence on the CMD line. This sequence is a
contiguous stream of logical ‘1’s. The sequence length is the maximum of 1msec, 74 clocks or the supply-ramp-uptime;
the additional 10 clocks (over the 64 clocks after what the card should be ready for communication) is
provided to eliminate power-up synchronization problems.
Go to the top of the page
 
+Quote Post
Andrei....
сообщение Jan 10 2007, 18:14
Сообщение #30


Частый гость
**

Группа: Новичок
Сообщений: 104
Регистрация: 20-03-06
Пользователь №: 15 402



почему то на команду ACMD41 приходит бит busy=0 и на последущую команду CMD2 не отвечает.
Go to the top of the page
 
+Quote Post

15 страниц V  < 1 2 3 4 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 22:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.01498 секунд с 7
ELECTRONIX ©2004-2016