• Объявления

    • admin

      Просьба всем принять участие!   24.11.2017

      На форуме разыгрывается спектроанализатор Arinst SSA-TG LC (цена 18500 руб). Просьба всем перейти по ссылке ниже и принять участие!
Hedhehog

Работа С Картой Sd В Режиме Spi(Без Использования Fatfs)

16 сообщений в этой теме

Hedhehog    0

Форумчане, прошу помощи. Задача следующая: наладить связь между контроллером и флеш картой в режиме SPI, при этом когда будет производится запись данных файловая система не является необходимостью. Контроллер Xmega64A3. Флеш карта SDHC 4GB.

Для того, чтобы перевести флеш карту в режим инициализации, необходимо подать команду CMD0, приведенную в даташите на стандарт SD. Я отправляю эту команду, ловлю ответ (что характерно он таки есть) R1=0x20, т.е. Address error. И тут собственно вопрос: откуда эта ошибка возникает, может кто-нибудь сталкивался, знает как устранить.

Сразу скажу, код не выложил потому, что даже не предполагаю, где может быть ошибка.

Частота клока SPI 250кгц.

Частота клока контроллера 14,7мгц.

P.S. Прошу не сильно пинать, если тему сильно похожую создал или сообщение коряво написал-только осваиваю для себя форумы. :yes:

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


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

Быстрый заказ печатных плат

Полный цикл производства PCB по низким ценам!

  • x
    мм
Заказать Получить купон на $5.00
Vovka    23

Вот правда для PIC, но там есть ссылки и для других МК: http://www.microchip.su/showthread.php?t=16973

Изменено пользователем Vovka

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


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

Vovka, к сожалению, библиотеки мистера Чена не подходят-сам их рассматривал, но руководитель сказал разрабатывать свое. Да и FAT там присутствует.

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


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

Разработка своего-не моя прихоть, условие руководства ( к сожалению ). Поэтому эти библиотеки и были отброшены. Хотя статьи чана я внимательно изучил и сделал все четко по ним с учетом даташита на SD. Может недоучел что :yes:?

Изменено пользователем Hedhehog

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


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

Дал ссылку на страничку обсужения - не помогло

Дал ссылку где посмотреть - не помогло.

Третья попытка:

зайди сюда: http://jonas.haksberg.net/post/Petit-FatFs-on-a-PIC18.aspx

и скачай в конце странички zip-архив!!!

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


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

Да изучил я ссылки.

Но библиотеки:

"pff.h"

(насчет следующих двух не уверен)

"GenericTypeDefs.h"

"HardwareProfile.h"

скорей всего написаны Чаном. Поэтому не могу использовать этот проект. Разве что как "отвлеченный пример"-на который можно взглянуть. Но в статье Чана все доходчиво расписано вроде бы, хотя лишний источник не помешает.

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


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

Тебе нужны файлы diskio.* - тут без всякого фата, вот функции:

DSTATUS disk_initialize (void); - инициализация

DRESULT disk_readp (BYTE*, DWORD, WORD, WORD); - чтение сектора

DRESULT disk_writep (const BYTE*, DWORD); - запись сектора

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


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

Попробовал адаптировать. Компиляция без проблем, (подставил нужный порт, поменял регистр для СПИ все как положено, больше ничего так не углядел) но на выходе та же фигня причем, что удивительно, даже поразительно я бы сказал, на моих проверочных ногах которые здесь вообще не задействованы, висят те же значения. Странно как-то. И с адаптацией проблем должно было быть больше.

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


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

Я так понимаю, что в архиве лежит готовый проект под некую среду разработки для контроллеров PIC? (Программировал только в IAR и под AVR и то не сильно много :yes: )

И заработал именно этот проект, ссылку на который вы дали? ( Ну т.е. Petit FatFs )

Изменено пользователем Hedhehog

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


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

Я так понимаю, что в архиве лежит готовый проект под некую среду разработки для контроллеров PIC? (Программировал только в IAR и под AVR и то не сильно много :yes: )

А если просмотреть все папки архива?

И заработал именно этот проект, ссылку на который вы дали? ( Ну т.е. Petit FatFs )

Ссылку уже в который раз давал! Ладно, вот ответ: http://www.microchip.su/showpost.php?p=210400&postcount=51

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


Ссылка на сообщение
Поделиться на других сайтах
Hedhehog    0
А если просмотреть все папки архива?

Я не сталкивался с пиковскими проектами, поэтому и поинтересовался.

А по поводу ссылки, я решил просто уточнить, правильно ли я вас понял на соседнем форуме. Т.е. именно это сообщение, на которое вы даете мне ссылку выше.

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


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

Я не сталкивался с пиковскими проектами, поэтому и поинтересовался.

В архиве есть папка sample:

в нем есть файл 00readme.txt, в котором написано:

Petit FatFs Module Sample Projects

DIRECTORIES

<generic> Generic microcontrollers with MMC

<avr> ATMEL AVR (ATtiny85) with MMC

<avr_boot> ATMEL AVR generic MMC boot loader

<pic> Microchip PIC (PIC24FJ46GA002) with MMC

<win32> Windows 2000/XP (VC++)

.....

А из папки src нужно взять два файла diskio.h и diskio.c, скопировать в свой проект и адаптировать под МК!

Все.

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


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

Надеюсь, что поможет. Если что - будем дальше "жевать"...

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


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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Похожие публикации

    • Автор: karomag
      Помогите, разобраться. Пытаюсь считать данные с модуля на max6675. 
      #include "stm32f10x.h" #include "stm32f10x_gpio.h" #include "stm32f10x_rcc.h" #include "stm32f10x_spi.h" float temp; u16 MSBLSB; volatile uint32_t ticks_delay = 0; void SysTick_Handler(void) { ticks_delay++; } void delay(uint32_t milliseconds) { uint32_t start = ticks_delay; while((ticks_delay - start) < milliseconds); } int main(void) { GPIO_InitTypeDef GPIO_InitStructure; SPI_InitTypeDef SPI_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1 | RCC_APB2Periph_AFIO, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_4; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); SPI_StructInit(&SPI_InitStructure); SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_RxOnly; SPI_InitStructure.SPI_Mode = SPI_Mode_Master; SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b; SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_128; SPI_Init(SPI1, &SPI_InitStructure); SPI_Cmd(SPI1, ENABLE); SPI_I2S_ITConfig(SPI1, SPI_I2S_IT_RXNE, ENABLE); NVIC_EnableIRQ(SPI1_IRQn); SysTick_Config(SystemCoreClock/1000); while(1) { temp = (MSBLSB >> 3); temp = temp * 0.25; } } void SPI1_IRQHandler (){ if (SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_RXNE)==SET) { GPIOA->BSRR = GPIO_BSRR_BR4; MSBLSB = SPI_I2S_ReceiveData(SPI1); delay(2000); GPIOA->BSRR = GPIO_BSRR_BS4; } } Ничего хорошего пока не получилось. Код собирал по кусочкам со всего интернета(.
      1. Правильно ли я настроил SPI?
      2. Как преобразовать полученные данные из регистра DR в температуру? С битовыми операциями, пока  туго...
      3. Может кто нибудь даст пример?
      Прошу сильно не пинать.
    • Гость самодельщик
      Автор: Гость самодельщик
      Здравствуйте. Посоветуйте пожалуйста схемы программаторов для AVR и STM- универсальный не надеюсь.
      Имеется в наличии usbasp китайский-работает как гнилой еврей раз в неделю. Сделал PICKIT2 за 4 года ни одного отказа. usbasp может сегодня тупо отказываться работать на 3 компьютерах, на следующий день как часики прошивает 1-2 камня и опять отдыхает. Надоело. 
    • Автор: Serge77
      Обязанности:
      · Разработка радиоэлектронных и GSM-устройств: разработка схем, программирование, разводка печатных плат, разработка документации.
      · Программирование микроконтроллеров STM, AVR, ARM, PIC на языке С/С++
       
      в личку или en@argument74.com
    • Автор: Flash6300
      Приветствую всех. 
      Как на 2313 рассчитать значение для записи в эти регистры, если я хочу получить задержку в 6 секунд?
      OCR1AH
      OCR1AL
      TCCR1B
       
    • Автор: Maoser
      Всем доброго времени суток.
      Помогите пожалуйста начинающему.Нужна программа для Attiny13a на языке С.
      Вот такой алгоритм:
      Нажимают кнопку и начинают мигать светодиоды типа "Бегущие огни", при отпускании остается светится один из четырех, причем в случайном порядке как в рулетке.Нажимают и снова начинают бежать- отпускают остается гореть один.