Страница 1 из 1
ATXmega 128A3U petit FATfs
Добавлено: Пт июл 01, 2016 10:43:51
Leha81
Привет всем ,встал вопрос по использованию Petit Fatfs на atxmega128а3 ,после недельного курения инета пришел к выводу что лучше спросить у знающих и опытных товарищей я совсем недавно перешел на си пишу в студии немогу понять как подцепить spi к данной библиотеке ,под аврки примеры то есть но трудно найти под хамегу)выручайте)
Re: ATXmega 128A3U petit FATfs
Добавлено: Пт июл 01, 2016 23:12:45
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;
}
Re: ATXmega 128A3U petit FATfs
Добавлено: Пн июл 04, 2016 09:29:58
Leha81
спасибо ,немного непонятно и куча ошибок в студии выскакивает ,буду разбираться ,а есть разница в чтении картинки или аудио файла?там же вроде как разница ввыводе ?
Re: ATXmega 128A3U petit FATfs
Добавлено: Вт июл 12, 2016 15:38:32
Leha81
может есть у кого готовые файлы проэкта ?
Re: ATXmega 128A3U petit FATfs
Добавлено: Вт июл 12, 2016 20:41:10
Leha81
Не понимаю как в spi данные в регистр задвигать вроде все по мануалу делаю ,а тактирования нет что не так?
Re: ATXmega 128A3U petit FATfs
Добавлено: Ср июл 13, 2016 10:04:33
Leha81
кто нибудь то подскажите как работает передача spi xmega
Re: ATXmega 128A3U petit FATfs
Добавлено: Ср июл 13, 2016 10:59:51
Vov123
Всё равно пока никто не отвечает, потому спрошу.
А почему именно ATXMega? Если это не фундаментально, то может лучше взять STM32. Корпус одинаков по пайки, функций больше, цена меньше и FAT легко приклеивается, в связи с тем, что наработок больше.
Re: ATXmega 128A3U petit FATfs
Добавлено: Ср июл 13, 2016 12:39:03
Leha81
вы правы конечно ,стм оч аппетитная весч ,я прсто напросто начал изучать новый для меня язык СИ на этом камне ,не более того ,и к сожалению купил под него отладчик оригинальный ,теперь хошь не хошь придется осваивать),а так, да,стм мне крышу рвет попробовать)
Re: ATXmega 128A3U petit FATfs
Добавлено: Ср июл 13, 2016 12:53:14
Vov123
Re: ATXmega 128A3U petit FATfs
Добавлено: Ср июл 13, 2016 13:06:12
Leha81
Огроменное спасибо ,а вы сами на стм ?
Re: ATXmega 128A3U petit FATfs
Добавлено: Ср июл 13, 2016 13:13:03
Vov123
Не, это в прошлом, сейчас при необходимость ардуино. Думать лень становится.
Re: ATXmega 128A3U petit FATfs
Добавлено: Ср июл 13, 2016 20:17:50
Leha81
Итак эмпирическим путем было выяснено что SPI работает по прерыванию таймера ,а что дальше?)