реклама на сайте
подробности

 
 
> На что бы перейти..., В плане платформы
Arlleex
сообщение Mar 22 2018, 16:13
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 492
Регистрация: 12-11-11
Пользователь №: 68 264



С практикой работы с STM32 у меня пополняется чаша больше ненависти к этим камням, нежели положительных эмоций.
Вот элементарно - есть АЦП внешний, управляется через SPI, CS-ом дергать обязательно. В STM32 CS не дергается аппаратно при транзакциях SPI, не понимаю, почему эти говноразработчики из STMicroelectronics не могут сделать это уже в какой реализации своих линеек микроконтроллеров? Из-за такого намеренного "косяка", который они вроде как и не пытаются исправить, невозможно запустить DMA на этот SPI, приходится запускать чертов таймер, дергать лапой в прерывании и там же запускать транзакцию (одиночную), потом снова выжидать нужное время и поднимать CS обратно, формируя нужные длительности между CS и первым/последним клоком SCLK... Помню в AT91SAM7X512 (и младших по памяти моделях) была возможность не то что аппаратно лапкой CS дергать, так даже время задавалось в количествах тактов вот этих самых задержек. А тут фигу.
С ходу даже не придумал как аппаратным таймером ножку аппаратно дергать так, чтобы еще после опускания CS выжидалось время небольшое и затем осуществлялась транзакция по SPI без прерываний, по DMA , например. И, чувствую, такой возможности тупо нет. Хотя, казалось бы, банальная вещь - что сложного было реализовать полностью аппаратный CS? Урезали половину функциональности DMA<->SPI...
И вот знаете, косяков все больше и больше обнаруживается с каждым детальным разбором.
Какие камни наиболее гибкие в этом плане? ПЛИС не в расчет, знаю что там проще сделать такое и т.д. но интересует возня именно с Cortex-M профиля. Раньше немного работал с ARM7TDMI, но это уже устаревший камень, Cortex-ы для меня более привлекательны, хотелось бы что-то действительно с хорошей периферией. Прокомментируйте, пожалуйста.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
adnega
сообщение Mar 24 2018, 07:21
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Arlleex @ Mar 22 2018, 19:13) *
невозможно запустить DMA на этот SPI,

Например, вам нужно передавать пакет данных в АЦП с частотой 5кГц.
Вы:
1. Делаете таймер с частотой срабатывания 5кГц.
2. В обработчике прерывания этого таймера поднимаете CS ручками.
3. Затем обрабатываете приемный буфер от SPI и готовите буфер отправки.
4. Потом опускаете CS ручками.
5. Настраиваете DMA и запускаете его.
6. Выходите из прерывания таймера.

Чем не устраивает? п. 2 и п. 4?
Go to the top of the page
 
+Quote Post
dac
сообщение Mar 24 2018, 07:52
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 600
Регистрация: 27-05-05
Пользователь №: 5 482



QUOTE (adnega @ Mar 24 2018, 13:21) *
2. В обработчике прерывания этого таймера поднимаете CS ручками.
4. Потом опускаете CS ручками.
Чем не устраивает? п. 2 и п. 4?

не устраивает ручками.
должно быть так:
1. приходит прерывание от таймера/внешнего прерывания с интервалом 1мкс
2. запускается чтение spi с автоматическим опускание CS
3. по завершении чтения CS поднимается, данные остаются в DMA
4. по заполнению половины буфера DMA обрабатываем полученные данные.

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

Go to the top of the page
 
+Quote Post
jcxz
сообщение Mar 24 2018, 10:21
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(dac @ Mar 24 2018, 09:52) *
а еще извращенцы из LT делают ацп которым нужно 17-18 тактов на SPI, вот тоже ни туда, ни сюда, но это уже так, придирки

Так возьмите МК с богатой реализацией SPI, а не урезанной. Например: XMC4xxx - "Number of data bits per data frame 1 to 63".
И будет Вам и туда и сюда. laughing.gif
А вообще во многих SPI-АЦП частота преобразования и частота SCLK - это разные частоты, с разными источниками. Так что SCLK просто берётся с запасом и всё.

Цитата(adnega @ Mar 24 2018, 10:11) *
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 незначительная.

Цитата(_pv @ Mar 24 2018, 10:34) *
ну нормальные последовательные порты умеют не только нормально аппаратно чипселектами дёргать но и произвольную длину слова задавать.

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

Цитата(dac @ Mar 24 2018, 10:54) *
ЗЫ даже если 5кГц два раза дергать прерывание по 8 тактов вход/выход + сохранить, тоже нифига не радостно

Ну это уже скорее паранойя.... или тяжкое наследие АВР laughing.gif
12*2*2*5000/168e+6 = ~0.143% загрузка CPU (168МГц).
Даже с учётом того что вход/выход в ISR явно не 8 тактов (с чего Вы взяли?), а 12 тактов - это всё равно ни о чём.
Да и вообще - как уже говорил выше - с головой даже на STM32 можно сделать без дёрганий в прерывания: завести сигнал прерывания от АЦП на какую-нить периферию, умеющую генерить запросы обслуживания к DMA (таймер например), и дальше всё сделать DMA: и CS и транзакцию по SPI.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Arlleex   На что бы перейти...   Mar 22 2018, 16:13
- - _pv   а таймер разве не может дёргать по совпадению и CS...   Mar 22 2018, 16:30
- - jcxz   Цитата(Arlleex @ Mar 22 2018, 18:13) Вот ...   Mar 22 2018, 16:52
- - Arlleex   Цитата(_pv @ Mar 22 2018, 19:30) а таймер...   Mar 22 2018, 16:55
|- - jcxz   Цитата(Arlleex @ Mar 22 2018, 18:55) Пожа...   Mar 22 2018, 17:03
|- - twix   Цитата(Arlleex @ Mar 22 2018, 17:55) Види...   Mar 22 2018, 18:00
|- - _pv   Цитата(Arlleex @ Mar 22 2018, 22:55) Атме...   Mar 22 2018, 19:27
- - Arlleex   jcxz, как раз листаю референс на XMC4800. Общее вп...   Mar 22 2018, 17:23
|- - inventor   Цитата(Arlleex @ Mar 22 2018, 20:23) jcxz...   Apr 7 2018, 14:55
- - yes   > В STM32 CS не дергается аппаратно при транзак...   Mar 22 2018, 18:35
- - technik-1017   Как альтернативу STM32 рассматриваю чипы SmartFusi...   Mar 22 2018, 19:17
- - skripach   LPC54 CSами умеет дергать невероятно, с настраивае...   Mar 23 2018, 01:51
- - Arlleex   Цитата(twix @ Mar 22 2018, 21:00) Вы може...   Mar 23 2018, 13:54
|- - jcxz   Цитата(Arlleex @ Mar 23 2018, 15:54) 10МБ...   Mar 23 2018, 15:49
|- - adnega   Цитата(dac @ Mar 24 2018, 10:52) приходит...   Mar 24 2018, 08:11
||- - dac   QUOTE (adnega @ Mar 24 2018, 14:11) 1мкс ...   Mar 24 2018, 08:54
|- - _pv   Цитата(dac @ Mar 24 2018, 14:52) а еще из...   Mar 24 2018, 08:34
|- - adnega   Цитата(jcxz @ Mar 24 2018, 13:21) на STM3...   Mar 24 2018, 13:25
- - Arlleex   Да вот элементарный пример, решение которого полно...   Mar 24 2018, 17:02
|- - adnega   Цитата(Arlleex @ Mar 24 2018, 20:02) DMA ...   Mar 24 2018, 17:16
- - Andrew Su   Добрый день. На отладочнике STM32L476-disco провер...   Mar 25 2018, 11:36
- - backa   TI "TM4C1294" - дорого и сердито - SPI р...   Apr 24 2018, 20:31
|- - k155la3   Цитата(backa @ Apr 24 2018, 23:31) TI ...   Apr 26 2018, 13:38
|- - backa   Цитата(k155la3 @ Apr 26 2018, 17:38) Нечт...   Apr 26 2018, 23:16
|- - k155la3   Цитата(backa @ Apr 27 2018, 02:16) . . . ...   Apr 27 2018, 16:09
|- - jcxz   Цитата(k155la3 @ Apr 27 2018, 19:09) IAR,...   Apr 28 2018, 05:45
|- - k155la3   Цитата(jcxz @ Apr 28 2018, 08:45) О каких...   Apr 28 2018, 13:09
- - AlexandrY   Цитата(Arlleex @ Mar 22 2018, 19:13) Каки...   Apr 28 2018, 07:58
|- - ViKo   Цитата(AlexandrY @ Apr 28 2018, 10:58) Во...   Apr 28 2018, 08:55
|- - jcxz   Цитата(ViKo @ Apr 28 2018, 11:55) Без флэ...   Apr 28 2018, 09:52
|- - AlexandrY   Цитата(ViKo @ Apr 28 2018, 11:55) Без флэ...   Apr 28 2018, 10:48
- - segment   А что за "Wireless connectivity interface for...   Apr 28 2018, 12:00
|- - AlexandrY   Цитата(segment @ Apr 28 2018, 15:00) А чт...   Apr 28 2018, 14:02
|- - k155la3   Цитата(AlexandrY @ Apr 28 2018, 17:02) . ...   Apr 28 2018, 18:04
|- - adnega   Цитата(k155la3 @ Apr 28 2018, 21:04) У ST...   Apr 28 2018, 18:59
|- - k155la3   Цитата(adnega @ Apr 28 2018, 21:59) Может...   Apr 28 2018, 19:23
|- - adnega   Цитата(k155la3 @ Apr 28 2018, 22:23) А ес...   Apr 29 2018, 05:45
|- - k155la3   Цитата(adnega @ Apr 29 2018, 08:45) Т.е. ...   Apr 29 2018, 10:46
- - Arlleex   За документацию с кучей перекрестных ссылок можно ...   May 6 2018, 08:20
|- - AlexandrY   Цитата(Arlleex @ May 6 2018, 11:20) За до...   May 6 2018, 12:05
|- - jcxz   Цитата(AlexandrY @ May 6 2018, 15:05) Сек...   May 6 2018, 15:39
- - Arlleex   Тогда действительно что-то с ним точно не так Ко...   May 6 2018, 15:06
- - Arlleex   ЦитатаНу "в каком-то из STM32" максимум ...   May 6 2018, 16:29
|- - jcxz   Цитата(Arlleex @ May 6 2018, 19:29) 3. В ...   May 6 2018, 17:04
- - Arlleex   ЦитатаВы внимательнее прочитайте, что я написал: п...   May 6 2018, 17:34
|- - jcxz   Цитата(Arlleex @ May 6 2018, 20:34) Между...   May 6 2018, 20:16
- - Arlleex   Да уж, я думал я один изворачиваюсь с периферией к...   May 6 2018, 21:09
- - Arlleex   Итак, ради интереса сделал тест. Использую аппарат...   May 7 2018, 19:56
|- - jcxz   Цитата(Arlleex @ May 7 2018, 22:56) 7. Вк...   May 9 2018, 05:06
- - COMA   Я для себя определил два варианта для перехода: се...   May 9 2018, 05:58
- - Arlleex   ЦитатаТолько зачем было делать столько телодвижени...   May 9 2018, 13:03
- - Arlleex   Итак, выложу сюда две растактовки из экспериментов...   May 9 2018, 15:26
|- - jcxz   Цитата(Arlleex @ May 9 2018, 18:26) Итак,...   May 9 2018, 15:48
- - Arlleex   Никакого абсолютно. У меня в проектах он всегда вк...   May 9 2018, 15:54
- - Arlleex   Подниму свою же тему. 1. Программировал платку с X...   Jul 6 2018, 05:17
|- - jcxz   Цитата(Arlleex @ Jul 6 2018, 08:17) 1. Пр...   Jul 6 2018, 08:05
|- - Arlleex   Цитата(jcxz @ Jul 6 2018, 12:05) PS: Ну и...   Jul 6 2018, 08:25
|- - jcxz   Цитата(Arlleex @ Jul 6 2018, 11:25) А впе...   Jul 6 2018, 08:30
|- - Arlleex   Цитата(jcxz @ Jul 6 2018, 12:30) Да, чере...   Jul 6 2018, 08:35
|- - jcxz   Цитата(Arlleex @ Jul 6 2018, 11:35) Вы ис...   Jul 6 2018, 08:36
- - Arlleex   Боюсь мне начальство не выделит времени на такие п...   Jul 6 2018, 09:07
- - jcxz   Цитата(Arlleex @ Jul 6 2018, 12:07) Боюсь...   Jul 6 2018, 09:50
- - Arlleex   Цитата(jcxz @ Jul 6 2018, 13:50) Начальст...   Jul 6 2018, 10:04


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 21:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.0148 секунд с 7
ELECTRONIX ©2004-2016