Jump to content

Cujo

Members
  • Content Count

    2
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Cujo

  • Rank
    Новенький

Информация

  • Город
    Санкт-Петербург

Электроника

  • Стаж в электронике
    6-10 лет
  • Сфера радиоэлектроники
    датчики, приводы, силовая электроника

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. на самом деле проблема уже решилась с помощью трех таймеров, программного прерывания 3х внешних соединений и кучи костылей, подробнее описал на easyelectronics, если интересно Проблема в том что SPI->DR обновлять можно. Те на SPI будут выдаваться последний записанных DR. Но когда приходит такт SCLK, регистр блокируется и запись в него не осуществляется. И узнать об этом никак нельзя. А обновлять данные нужно не дожидаясь прихода SCLK, он может не приходить сколь угодно долго, но данные должны быть все время актуальные. Дело в том, что на этом контроллере есть еще 2 потока с периодом вызова 7 и 14 мкс. Останавливать их никак нельзя, и главные прежде всего они. SPI нужен чтобы вывести информацию о их вычислениях, те о угле либо положении. Стандартный протокол выдачи в таких случаях - это SSI, есть еще BISS C - тот же проприетарный SSI с контрольной суммой. В общем, тему можно закрывать. Плодить костыли по интернету как-то не хочется. STM сказал: "он не рекомендует использовать их МК для реализации SSI и работоспособность такой системы не гарантирована".
  2. Собственно задача соорудить SSI slave Transmit only с асинхронным обновлением в реальном времени. Контроллер сейчас STM32L433CC. Дано один вход SCLK до 2 МГц, один выход SOUT(он жеMISO). Формат посылки 18, 20,22 бит. Обновление через ~15мкс после последнего такта SCLK, либо каждые 7,5 мкс. Стандартный интерфейс для быстрых датчиков. Как делал 1: Без DMA и прерываний, по прерываниям от TIM_ETR на SCLK. Режим без NSS, с NSS по первому SCLK и сбросом. Проблема нельзя узнать, записались ли данные в SPI->DR, соответственно первые байты могли быть не обновлены, а следующие обновлялись. 2: DMA с NSS по таймеру. Проблема: DMA не обновляет SPI в реальном времени, а только после отправки прошлой посылки, а нужно обновлять каждые 7,5 мкс вне зависимости есть ли запросы. Если пробовать сбрасывать SPI и обновлять DMA, случаются смещения на 1 такт, а потому как реакция ядра на запрос ~ 150-200 нс, + обновление ~ 150-200нс. В итоге облом. Какие есть решения, может кто сталкивался?
×
×
  • Create New...