Перейти к содержанию
    

Такое ощущение складывается, что ASF писала не одна команда программистов, а будто куски нахватали из разных мест и собрали в кучу.

 

Категорически неправильное ощущение. Все дело в том, что ASF API работает на всех камнях от Atmel'а (AVR, AVR32, xMega, Cortex'ы). Как следствие универсальности усложненность и избыточность. Поэтому подходит для быстрого прототипирования, но не желательно (не невозможно, а нежелательно) применять его в конечном изделии. Но тенденция в Ваших вопросах мне нравится. Еще немного и Вы поймете, что ASF или STM Lib всего лишь средство прототипирования.

 

Что до кокретно взятого SPI. Возъмем его API. Что мы имеем?

spi_set_baudrate_div(...)
spi_set_bits_per_transfer(...)
spi_set_clock_phase(...)
spi_set_clock_polarity(...)
spi_enable_clock(...)

Вы видите более удобной запись в стиле ST:

struct {
    .baud = ...
    .bits = ....
    .CPA = ....
    .CPH = ....
} spi_master;

eneble_periph_clock(...)
spi_deinit();
spi_init(spi_master):

Ну не знаю... Я даже не буду говорить о том, что память под структуру выделяется либо глобально (и забирает ее у проекта) либо в стеке и тем самым заставляя его расти. Но он просто выглядит куда более громозко и неиформативно. Конечно, если знать что такое SPI, какие главные параметры ему надо выставить. Но ведь даже ST не снимает этого ограничения. Я в свое время долго думал над этой их структурой. Половина структуры относится к SPI, половина к I2S при этом что к чему неочевидно. А еще и есть поля, относящиеся и к одному и к другому. А хваленые коментарии в коде не помогают чуть меньше чем совсем. Только чтение datasheet и понимание текста функции init(). Здесь (IHMO) все гораздо прозрачнее.

Да и вообще, но по моим ощущениям именно это и есть крайне неудобная часть в STM библиотеке. Хуже только USB стек с бесконечными

unsigned char devDesc[] = {
    0xFA, 0xFB,  // wVendorId
    0x00, 0x01,  // wProductId
    ....
}

Только за это расстрелял бы на месте.

Изменено пользователем Alex A. Mihaylov

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


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

Блин, пришлось воспользоваться процессором ATSAM3A (из-за USB host), к которому нет обычных примеров от Атмела, а есть только ASF.

 

Вот мне было бы интересно просверлить голову тому чуваку, который эту ASF затеял и посмотреть что там есть.

Хоть прям STM32 бери...

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


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

Вот мне было бы интересно просверлить голову тому чуваку, который эту ASF затеял и посмотреть что там есть.

 

Мне тоже ))).

Свалили все в одну кучу.

До этого у них был AT91SoftwarePakage (или как-то так) все гораздо прозрачнее было.

 

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...