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

приходит прерывание от таймера/внешнего прерывания с интервалом 1мкс

1мкс -> 1МГц.

Даже на МК с тактовой 168МГц у вас 168 тактов на посылку. По-моему, ничего разумного за такое время не сделать.

STM32F тут не подходит не из-за SPI, а из-за общей производительности.

Тут вариант - на внешней ПЛИС сделать опрос АЦП, а МК предоставить доступ по внешней шине,

или правдами-неправдами "окутать" доступ к АЦП в какой-нить DCMI при помощи CPLD попроще.

У ТС озвучивалась задача 5кГц, и под нее выбирались МК типа STM32F

задача описана словами "надо дискретизировать сигнал 5000 выборок/сек и передать отсчеты наружу...", невольно понимаешь, что STM32 тут за глаза.

 

1мкс -> 1МГц.

Даже на МК с тактовой 168МГц у вас 168 тактов на посылку. По-моему, ничего разумного за такое время не сделать.

STM32F тут не подходит не из-за SPI, а из-за общей производительности.

Тут вариант - на внешней ПЛИС сделать опрос АЦП, а МК предоставить доступ по внешней шине,

или правдами-неправдами "окутать" доступ к АЦП в какой-нить DCMI при помощи CPLD попроще.

У ТС озвучивалась задача 5кГц, и под нее выбирались МК типа STM32F

Если 5кГц это максимум, то на любом STM32F это делается легко даже с ручным дерганьем CS.

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


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

а еще извращенцы из LT делают ацп которым нужно 17-18 тактов на SPI, вот тоже ни туда, ни сюда, но это уже так, придирки

ну нормальные последовательные порты умеют не только нормально аппаратно чипселектами дёргать но и произвольную длину слова задавать.

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


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

1мкс -> 1МГц.

Даже на МК с тактовой 168МГц у вас 168 тактов на посылку. По-моему, ничего разумного за такое время не сделать.

у меня процесс непериодический, т.е. мне не надо постоянно с таким интервалом, поэтому dma решает проблему.

новые stm32f умеют произвольное слово от 4 до 16 бит

ЗЫ даже если 5кГц два раза дергать прерывание по 8 тактов вход/выход + сохранить, тоже нифига не радостно

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


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

а еще извращенцы из LT делают ацп которым нужно 17-18 тактов на SPI, вот тоже ни туда, ни сюда, но это уже так, придирки

Так возьмите МК с богатой реализацией SPI, а не урезанной. Например: XMC4xxx - "Number of data bits per data frame 1 to 63".

И будет Вам и туда и сюда. :laughing:

А вообще во многих SPI-АЦП частота преобразования и частота SCLK - это разные частоты, с разными источниками. Так что SCLK просто берётся с запасом и всё.

 

1мкс -> 1МГц.

Даже на МК с тактовой 168МГц у вас 168 тактов на посылку. По-моему, ничего разумного за такое время не сделать.

STM32F тут не подходит не из-за SPI, а из-за общей производительности.

Тут вариант - на внешней ПЛИС сделать опрос АЦП, а МК предоставить доступ по внешней шине,

Не сделать чего??? 168 тактов - это вагон + ещё маленькая тележка.

168 тактов - это не много, а очень дофига для любой пересылки.

Ну конечно если иметь полноценный SPI-контроллер, а не "ручками" как на STM32. Да впрочем и на STM32 тоже можно сделать "не ручками" если голову включить. И будет совсем незначительная загрузка МК.

Для МК с более фичастым SPI, 1МГц - это вообще ни о чём. У меня на XMC4700 SPI работают с SCLK в 30-36 МГц при ядре 120-144МГц. Причём - параллельно по 2 канала SPI да ещё один при этом в dual-SPI. Загрузка CPU незначительная.

 

ну нормальные последовательные порты умеют не только нормально аппаратно чипселектами дёргать но и произвольную длину слова задавать.

У меня в проекте на XMC4700 даже один из UART-ов работает с длиной слова 26 бит (1старт+24данных+1стоп). Вот это и называется - гибкая и эффективная периферия :rolleyes:

 

ЗЫ даже если 5кГц два раза дергать прерывание по 8 тактов вход/выход + сохранить, тоже нифига не радостно

Ну это уже скорее паранойя.... или тяжкое наследие АВР :laughing:

12*2*2*5000/168e+6 = ~0.143% загрузка CPU (168МГц).

Даже с учётом того что вход/выход в ISR явно не 8 тактов (с чего Вы взяли?), а 12 тактов - это всё равно ни о чём.

Да и вообще - как уже говорил выше - с головой даже на STM32 можно сделать без дёрганий в прерывания: завести сигнал прерывания от АЦП на какую-нить периферию, умеющую генерить запросы обслуживания к DMA (таймер например), и дальше всё сделать DMA: и CS и транзакцию по SPI.

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


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

на STM32 можно сделать без дёрганий в прерывания: завести сигнал прерывания от АЦП на какую-нить периферию, умеющую генерить запросы обслуживания к DMA (таймер например), и дальше всё сделать DMA: и CS и транзакцию по SPI.

Если нужно заполнить кольцевой буфер для постобработки, то полностью согласен.

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


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

Да вот элементарный пример, решение которого полностью решило бы такую проблему.

Возможно ли в STM32F4 настроить периодическую отправку в SPI по DMA?

Я бы настроил событие по совпадению таймера 5000 раз в секунду пинать DMA, чтобы он положил данные в SPI->DR. Началась бы передача, по завершении которой выставился флаг RXNE, который пинал бы другой канал DMA, и тот складировал данные в буфер и говорил мне когда нужный объём данных наберётся для передачи по другому интерфейсу разом.

DMA устроен же так, что в режиме память-регистр я могу указывать только адрес регистра только того модуля, который пнул этот канал DMA, а как было бы здорово по запросу DMA от таймера сделать пересылку в SPI-DR, то есть в модуль, который не пинал этот DMA. Периодические вещи, например, отправки или прием данных по разным интерфейсам, в том числе SPI, стали бы возможны вовсе без участия процессора!

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


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

DMA устроен же так, что в режиме память-регистр я могу указывать только адрес регистра только того модуля, который пнул этот канал DMA,

С чего вы это взяли? DMA может откуда угодно куда угодно произвести транзакцию, если на это нет ограничений (CCM, выравнивание и т.п.)

и есть доступ к соответствующим шинам. Много раз обсуждалось, как таймер инициирует транзакцию в SPI. Там единственная особенность,

что от момента запроса до момента транзакции может пройти некоторое время (у меня получалось ~12 тактов) и при высоких скоростях SPI

сложно получить равномерный SCK (без межсимвольных пауз).

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


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

Добрый день.

На отладочнике STM32L476-disco проверил формирование NSS в режимах TI Mode и Motorola Mode.

В обоих режимах сигнал вырабатывается в соответствии с

RM0351 Reference manual STM32L4x5 and STM32L4x6 advanced ARM®-based 32-bit MCUs

42.4.12 NSS pulse mode

This mode is activated by the NSSP bit in the SPIx_CR2 register and it takes effect only if

the SPI interface is configured as Motorola SPI master (FRF=0) with capture on the first

edge (SPIx_CR1 CPHA = 0, CPOL setting is ignored). When activated, an NSS pulse is

generated between two consecutive data frame transfers when NSS stays at high level for

the duration of one clock period at least. This mode allows the slave to latch data. NSSP

pulse mode is designed for applications with a single master-slave pair.

 

42.4.13 TI mode

TI protocol in master mode

The SPI interface is compatible with the TI protocol. The FRF bit of the SPIx_CR2 register

can be used to configure the SPI to be compliant with this protocol.

The clock polarity and phase are forced to conform to the TI protocol requirements whatever

the values set in the SPIx_CR1 register. NSS management is also specific to the TI protocol

which makes the configuration of NSS management through the SPIx_CR1 and SPIx_CR2

registers (SSM, SSI, SSOE) impossible in this case

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


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

jcxz, как раз листаю референс на XMC4800. Общее впечатление - на днях сделаю себе отладку и попробую разобраться в новой для себя стилистике документации :rolleyes:

камушек то под 2 тыщи стоит

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


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

TI "TM4C1294" - дорого и сердито - SPI работае на частоте до 60МГц (1/2 от тактовой) и с выборкой внешнего кристала "SS" там все хорошо))) Никаких "выбрать ручками".... Хотя есть странные индивидумы (мой коллега) - он "необъяснимо никаким здравым смысло" дрыгает этой ножкой тоже руками)))

Поддержка просто порaжает: форум с ответами в течении рабочего дня на любые вопросы(понятно, что все консультатнты - индусы со всеми вытекающими), своя библиотека не вызывающая НИКАКИХ нареканий - было желание писать все общение самому с нуля ,но посмотрев исходники , понял что получу тоже самое но только потеряю время

Так что для начала - просто сказка а не камушек и платы у них не хуже чем у STM - цена та же - около 20 баксаф...

Разводка плат сделана индусами со всеми вытекающими .... особенно аналоговая часть

Но для освоения нового камушка само то.

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


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

TI "TM4C1294" - дорого и сердито - SPI работае на частоте до 60МГц (1/2 от тактовой) и с выборкой внешнего кристала "SS" там все хорошо))) Никаких

. . .

Так что для начала - просто сказка а не камушек и платы у них не хуже чем у STM - цена та же - около 20 баксаф...

. . .

Нечто эдакое ? EK-TM4C1294XL (цена у нас, правда, около 40 кваксов).

Программатор-отладчик, по виду, на плате. Как эта платформа в отладке ? (привык к "хорошему", IAR)

 

 

 

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


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

Нечто эдакое ? EK-TM4C1294XL (цена у нас, правда, около 40 кваксов).

Программатор-отладчик, по виду, на плате. Как эта платформа в отладке ? (привык к "хорошему", IAR)

У нас чуть дороже 20ки $ настоящих денег)

Программатор-отладчик на плате и виртуальный комп-порт для отдалки через принтф , например...

Отладка прекрасная - никаких притензий - все доступно - все ресурсы и периферия ... это все в Keil ( тоже привык к хорошему!!! и больше никогда на IAR c этим "убогим" спартанским IDE и "недоотладчиком"). После того как Keil купила ARM .. все встало как надо...

Самое важное, что для этого камня есть "безглючная" библиотека низкого уровня и TI поставляет бесплатную, постоянно обновляему IDE собственного производства, но ввиду безальтернативности в лице Keil-а оставил ее без внимания...

Вобщем рекомендую для старта!

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


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

. . . Программатор-отладчик на плате и виртуальный комп-порт для отдалки через принтф , например...

Вобщем рекомендую для старта!

Спасибо за инф.

IAR, возможно, есть "ньюансы" для каждого процессора. По IAR/MSP430 - у меня только плюсы.

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


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

IAR, возможно, есть "ньюансы" для каждого процессора. По IAR/MSP430 - у меня только плюсы.

О каких нюансах речь? Ещё несколько лет назад, ещё на прошлой работе создали линейку устройств на TM4C129DNCPDT. ПО там довольно большое и сложное (писалось группой программистов), с использованием многой периферии и без индусских "библиотек". Писалось/отлаживалось всё в IAR. Сейчас уже несколько лет как вся эта линейка продаётся. Производится сейчас по несколько тыс. шт. в месяц. Никаких проблем с IAR-ом или контроллером нет. Вполне нормальный МК. DMA-контроллер - так пожалуй вообще лучший из тех, что я видел в разных Cortex-M-МК.

А если у кого-то что-то не работает, то может это случай "плохого танцора"? :laughing:

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


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

Какие камни наиболее гибкие в этом плане?

Вот -

https://blog.nxp.com/iot/crossover-to-extre...elq_cid=1860362

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


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

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

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

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

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

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

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

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

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

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