ATXmega 128A3U petit FATfs

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Сообщения: 8
Зарегистрирован: Пт июл 01, 2016 10:32:09

Сообщение Leha81 »

Привет всем ,встал вопрос по использованию Petit Fatfs на atxmega128а3 ,после недельного курения инета пришел к выводу что лучше спросить у знающих и опытных товарищей я совсем недавно перешел на си пишу в студии немогу понять как подцепить spi к данной библиотеке ,под аврки примеры то есть но трудно найти под хамегу)выручайте)
Реклама
Нашел транзистор. Понюхал.
Сообщения: 190
Зарегистрирован: Пт сен 21, 2007 17:53:23
Откуда: Зарайск

Сообщение mrFox »

разница с примером для meg
только в настройке ножек и SPI

если есть fatfs с настроенной под карточку diskio.c и есть библиотека под карточку
нужно слегка поправить библиотека под карточку - там ищем функцию, непосредственно работающую с SPI и меняем ее - в разных библиотеках ина называется по-разному
у меня это функция SD_IO(uint8_t data)
под спойлером настройка для xmega256A3
Спойлер

Код: Выделить всё

// speed const
#define GPIO_SPEED_high 0b00
// out_mode digital mode
#define GPIO_MODE_TOTEM        0b000

#define SD_CLK_PIN  E,7,GPIO_SPEED_high,GPIO_MODE_TOTEM
#define SD_DO_PIN   E,6,GPIO_SPEED_high,GPIO_MODE_TOTEM
#define SD_DI_PIN   E,5,GPIO_SPEED_high,GPIO_MODE_TOTEM
#define SD_CS_PIN   F,1,GPIO_SPEED_high,GPIO_MODE_TOTEM
#define SD_SPI      SPIE

#define _GPIO_INIT_OUT_MODE(port_char,port_pin_no,port_speed,port_mode) \
                PORT##port_char.DIRSET = (1<<(port_pin_no)); \
                PORT##port_char.PIN##port_pin_no##CTRL  = ((port_speed) << 6)|((port_mode)<<3)
#define GPIO_INIT_OUT_MODE(port_def) _GPIO_INIT_OUT_MODE(port_def)

#define GPIO_SET_VAL_L(port_ch,port_pin_no,port_speed,port_mode) \
                PORT##port_ch.OUTCLR  = (1 << (port_pin_no))
#define GPIO_SET_VAL_H(port_ch,port_pin_no,port_speed,port_mode) \
                PORT##port_ch.OUTSET = (1 << (port_pin_no))
#define GPIO_SET_VAL(port_def,port_val) GPIO_SET_VAL_##port_val(port_def)

void sd_init_spi(uint8_t high_speed)
{
  SD_SPI.CTRL &= ~SPI_ENABLE_bm;

  SD_SPI.CTRL = SPI_MODE_0_gc
              //| SPI_PRESCALER_DIV128_gc  // 32MHz/128 = 250kHz
                //| SPI_DORD_bm  // Data Order Setting
              | SPI_MASTER_bm; // Master Operation
  if( 0 == high_speed ) SD_SPI.CTRL |= SPI_PRESCALER_DIV128_gc; // 32MHz/128 = 250kHz
  else SD_SPI.CTRL |= SPI_PRESCALER_DIV4_gc|SPI_CLK2X_bm;// 8MHz ;  Enable Double Speed 16MHz

  SD_SPI.CTRL |= SPI_ENABLE_bm; //  Enable Module
}

void sd_init_gpio(void)
{
  GPIO_INIT_OUT_MODE(SD_CS_PIN);
  GPIO_INIT_OUT_MODE(SD_CLK_PIN);
  GPIO_INIT_OUT_MODE(SD_DI_PIN);
  GPIO_SET_VAL(SD_CS_PIN,H);
}

uint8_t SD_IO(uint8_t data)
{
  SD_SPI.DATA = data;
  while( 0 == (SD_SPI.STATUS & SPI_IF_bm) );
  return SD_SPI.DATA;
}
Реклама
Родился
Сообщения: 8
Зарегистрирован: Пт июл 01, 2016 10:32:09

Сообщение Leha81 »

спасибо ,немного непонятно и куча ошибок в студии выскакивает ,буду разбираться ,а есть разница в чтении картинки или аудио файла?там же вроде как разница ввыводе ?
Родился
Сообщения: 8
Зарегистрирован: Пт июл 01, 2016 10:32:09

Сообщение Leha81 »

может есть у кого готовые файлы проэкта ?
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 8
Зарегистрирован: Пт июл 01, 2016 10:32:09

Сообщение Leha81 »

Не понимаю как в spi данные в регистр задвигать вроде все по мануалу делаю ,а тактирования нет что не так?
Реклама
Родился
Сообщения: 8
Зарегистрирован: Пт июл 01, 2016 10:32:09

Сообщение Leha81 »

кто нибудь то подскажите как работает передача spi xmega
Реклама
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Сообщение Vov123 »

Всё равно пока никто не отвечает, потому спрошу.
А почему именно ATXMega? Если это не фундаментально, то может лучше взять STM32. Корпус одинаков по пайки, функций больше, цена меньше и FAT легко приклеивается, в связи с тем, что наработок больше.
Родился
Сообщения: 8
Зарегистрирован: Пт июл 01, 2016 10:32:09

Сообщение Leha81 »

вы правы конечно ,стм оч аппетитная весч ,я прсто напросто начал изучать новый для меня язык СИ на этом камне ,не более того ,и к сожалению купил под него отладчик оригинальный ,теперь хошь не хошь придется осваивать),а так, да,стм мне крышу рвет попробовать)
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Сообщение Vov123 »

Время будет попробуйте:
http://mycontroller.ru/old_site/categor ... efault.htm
Родился
Сообщения: 8
Зарегистрирован: Пт июл 01, 2016 10:32:09

Сообщение Leha81 »

Огроменное спасибо ,а вы сами на стм ?
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Сообщение Vov123 »

Не, это в прошлом, сейчас при необходимость ардуино. Думать лень становится.
Родился
Сообщения: 8
Зарегистрирован: Пт июл 01, 2016 10:32:09

Сообщение Leha81 »

Итак эмпирическим путем было выяснено что SPI работает по прерыванию таймера ,а что дальше?)
Ответить

Вернуться в «AVR»