0
Хм… Я работал в своем проекте с обоими SPI через DMA и с ADC через DMA до кучи. На STM32F103C8T6 вышеописанных багов не наблюдал. Битых данных не было. Правда не помню, пытался ли я что-то писать в прерывании SPI, т.к. скорей всего работал исключительно с прерываниями DMA…

По идее при использовании DMA — SPI прерывания и не нужны. Т.к. прием и передача ведутся одновременно — значит единственное нужное прерывание — это прерывание по окончанию приема серии в DMA.
  • avatar
  • Ultrin
  • 07 ноября 2014, 10:54
0
Спасибо за информацию.
  • avatar
  • Ultrin
  • 14 августа 2014, 11:05
+1
Преимущество маленького компа только в том, что их можно пачкой поставить на столе или под столом, а место будут занимать то-же. Больше преимуществ не увидел.
  • avatar
  • Ultrin
  • 18 июля 2014, 09:59
0
UPD…
  • avatar
  • Ultrin
  • 17 июля 2014, 15:13
+2
Как-то пунктов маловато, не всеохватывающе.
Я начал с голого МК и Си, хотя ассемблер для меня проблемой не был. На Си просто писать удобней. Про Ардуину вообще не знал, пока несколько годов назад не зашел на этот ресурс. Да и не было ее тогда, когда я начинал… А сейчас мне она не актуальна вообще.
  • avatar
  • Ultrin
  • 11 июля 2014, 10:26
+1
Плюс за то, что сам сделал. Ну и за то, что в комментах есть разбор основных ошибок, что полезно для повторяльщиков.
  • avatar
  • Ultrin
  • 10 июля 2014, 12:31
0
Неправильная разводка интерфейса на плате даже при частотах до 2х МГц может выйти боком и непредвиденными глюками. Так что те, кто аргументированно критикуют разводку диф-пары и прямых углов все верно говорят. А сопли тут ни причем. Я ловил траблы на плате, которая уже с заводского изготовления пришла и соплей там не могло быть априори.
  • avatar
  • Ultrin
  • 10 июля 2014, 10:56
+1
Вот это, на самом деле, главный ответ на все вопросы. :)
  • avatar
  • Ultrin
  • 24 июня 2014, 13:28
0
На единичный экземпляр, да еще и срочное изготовление, стоимость исполнения заказа будет в разы выше, чем при самостоятельном изготовлении. Не зависимо от того, прототипирование это или готовая плата. Так что иногда действительно проще и дешевле денек поковыряться с химией, чем заказывать на завод.
  • avatar
  • Ultrin
  • 24 июня 2014, 13:21
+1
Спасибо за обзорчик. Всегда считал, что вакуумный прижим — это что-то страшное. А теперь вижу, что это не так и может даже себе соберу как-нибудь.
  • avatar
  • Ultrin
  • 23 июня 2014, 13:32
0
Что касается ЛУТа — при достаточно плотной разводке (ну люблю я помельчить) доставало прочищать зазоры между всеми элементами. Метод с зубной щеткой или с одежной у меня не давал требуемых результатов: либо дорожки сдирались, либо бумага оставалась.

Сейчас уже приноровился к фоторезисту. Результат более-менее стабильный. Даже 0.15/0.15 получается почти сразу.
  • avatar
  • Ultrin
  • 23 июня 2014, 12:49
0
Дело там не в воде, а в том, что водой проверялось качество склейки. Из ящика, сделанного этим мастером точно дно не выпадет, в отличие от современной фабричной мебели, впариваемой совсем не за дешево. Купил комод, с виду вроде ничего, положил в ящик пару комплектов постельного белья — дно прогнулось, положил третий — дно выпало. И это за 20 штук блин.

P.S. Извините, не выдержал… :)
  • avatar
  • Ultrin
  • 23 июня 2014, 12:41
0
Сорри, что поздно отвечаю.
Давненько это уже было, но если правильно помню, то при отключенном кабеле сокет просто не откроется. Так же можно контролировать по наличию сигнала на светодиоде FDX (если конечно нет каких-то ограничений на Full Duplex). Пока кабель не подключен — ни один из сигнальных светодиодов не горит.
  • avatar
  • Ultrin
  • 21 июня 2014, 12:16
0
Ох блин, как давно я сюда не заглядывал…

Сорри, pSPI2_readbuf_addr это просто указатель на буфер приема. Так как «железного» буфера не предусмотрено, делаете указатель на нулевой элемент любого собственного массива, который будете пользовать буфером и все.
  • avatar
  • Ultrin
  • 21 июня 2014, 12:01
0
на счет панацеи — посмотрим. Раз он умеет читать шину посредством ДМА значит не должно быть затыков с непрерывной посылкой, т.к. все это отработает на уровне жклеза.
  • avatar
  • Ultrin
  • 07 февраля 2014, 18:04
0
с ДМА и с SPI мастера как раз вопросов нет. потому как на логическом анализаторе шина читается отлично. Вопрос именно в слэйве. Данный алгоритм передачи непрерывных посылок прекрасно работает, например, с W5100, у которой обмен идет как раз по 4-ре байта на команду, причем на гораздо большей скорости.
  • avatar
  • Ultrin
  • 07 февраля 2014, 18:03
0
нету. могу судить только косвенно по отправляемому обратно и выставляемым флагам.
  • avatar
  • Ultrin
  • 07 февраля 2014, 17:58
0
Слэйв.

SIGNAL(SIG_SPI)
{
    cli();
    SPDR = buf_out[num];
    num++;
    buf_in[num] = SPDR;
    num &= 0x03;
    sei();
    return;
};


В мастере ничего особенного, указать буфер для ДМА и дернуть триггер начала передачи.

Если посылка состоит из непрерывной серии в 4 байта — то нормального обмена нет.
Если посылка состоит из раздельных 4хбайт — то обмен работает нормально.

К сожалению не было времени ковырять все детально, и появится оно еще не скоро. Уже решил заменить мегу на 36-ногий STM, как придет посылка. Тогда и ДМА должен работать как надо и мастеру не придется тупить и ожидать реакции от слэйва…
  • avatar
  • Ultrin
  • 06 февраля 2014, 18:56
0
updated…
  • avatar
  • Ultrin
  • 02 февраля 2014, 18:52
0
переход cs можно контролировать вне прерывания хоть вручную, хоть через внешнее прерывание по фронту. в обработчике это не актуально, потому что пауза между посылками достаточно большая (в 10ки раз больше длины посылки, в моем случае.

начальный кейс в моем случае тоже не нужен, потому как я разрешаю spi только когда cs=0 и левых прерываний у меня нет. остается только увеличить буфер на 1, чтоб глюков небыло и поменять местами 2 команды работы с SPDR.

кстати, а что такое OS_INTERRUPT? мне такое раньше не поподалось…
  • avatar
  • Ultrin
  • 25 января 2014, 08:22