ATXmega 128A3U petit FATfs
- Сообщения: 8
- Зарегистрирован: Пт июл 01, 2016 10:32:09
Привет всем ,встал вопрос по использованию Petit Fatfs на atxmega128а3 ,после недельного курения инета пришел к выводу что лучше спросить у знающих и опытных товарищей я совсем недавно перешел на си пишу в студии немогу понять как подцепить spi к данной библиотеке ,под аврки примеры то есть но трудно найти под хамегу)выручайте)
- Реклама
разница с примером для meg
только в настройке ножек и SPI
если есть fatfs с настроенной под карточку diskio.c и есть библиотека под карточку
нужно слегка поправить библиотека под карточку - там ищем функцию, непосредственно работающую с SPI и меняем ее - в разных библиотеках ина называется по-разному
у меня это функция SD_IO(uint8_t data)
под спойлером настройка для xmega256A3
только в настройке ножек и 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
спасибо ,немного непонятно и куча ошибок в студии выскакивает ,буду разбираться ,а есть разница в чтении картинки или аудио файла?там же вроде как разница ввыводе ?
- Сообщения: 8
- Зарегистрирован: Пт июл 01, 2016 10:32:09
- Сообщения: 8
- Зарегистрирован: Пт июл 01, 2016 10:32:09
Не понимаю как в spi данные в регистр задвигать вроде все по мануалу делаю ,а тактирования нет что не так?
- Реклама
- Сообщения: 8
- Зарегистрирован: Пт июл 01, 2016 10:32:09
- Сообщения: 804
- Зарегистрирован: Чт мар 12, 2009 16:31:05
Всё равно пока никто не отвечает, потому спрошу.
А почему именно ATXMega? Если это не фундаментально, то может лучше взять STM32. Корпус одинаков по пайки, функций больше, цена меньше и FAT легко приклеивается, в связи с тем, что наработок больше.
А почему именно ATXMega? Если это не фундаментально, то может лучше взять STM32. Корпус одинаков по пайки, функций больше, цена меньше и FAT легко приклеивается, в связи с тем, что наработок больше.
- Сообщения: 8
- Зарегистрирован: Пт июл 01, 2016 10:32:09
вы правы конечно ,стм оч аппетитная весч ,я прсто напросто начал изучать новый для меня язык СИ на этом камне ,не более того ,и к сожалению купил под него отладчик оригинальный ,теперь хошь не хошь придется осваивать),а так, да,стм мне крышу рвет попробовать)
- Сообщения: 804
- Зарегистрирован: Чт мар 12, 2009 16:31:05
Время будет попробуйте:
http://mycontroller.ru/old_site/categor ... efault.htm
http://mycontroller.ru/old_site/categor ... efault.htm
- Сообщения: 8
- Зарегистрирован: Пт июл 01, 2016 10:32:09
- Сообщения: 804
- Зарегистрирован: Чт мар 12, 2009 16:31:05
Не, это в прошлом, сейчас при необходимость ардуино. Думать лень становится.
- Сообщения: 8
- Зарегистрирован: Пт июл 01, 2016 10:32:09
Итак эмпирическим путем было выяснено что SPI работает по прерыванию таймера ,а что дальше?)


