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

 
 
5 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> На что бы перейти..., В плане платформы
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
_pv
сообщение Mar 22 2018, 16:30
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



а таймер разве не может дёргать по совпадению и CS вверх вниз когда нужно и ДМА?

ну возьмите тот же кортекс от любого другого производителя, с нормальной периферией.
NXP вон умеет CSом дергать. в lpc8 во всяком случае, вряд ли в других сериях по другому.
и SCTimer там тоже это можно заставить делать как угодно.

да и атмел скорее всего тоже умеет.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Mar 22 2018, 16:52
Сообщение #3


Гуру
******

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



Цитата(Arlleex @ Mar 22 2018, 18:13) *
Вот элементарно - есть АЦП внешний, управляется через SPI, CS-ом дергать обязательно. В STM32 CS не дергается аппаратно при транзакциях SPI, не понимаю, почему эти говноразработчики из STMicroelectronics не могут сделать это уже в какой реализации своих линеек микроконтроллеров? Из-за такого намеренного "косяка", который они вроде как и не пытаются исправить, невозможно запустить DMA на этот SPI, приходится запускать чертов таймер, дергать лапой в прерывании и там же запускать транзакцию

Стенания из разряда "мыши кололись, плакали, но продолжали жрать кактус..." laughing.gif
Кто-ж Вас заставляет? МК разных полно на любой вкус и цвет - выбирай что более удобно.

Цитата(Arlleex @ Mar 22 2018, 18:13) *
Какие камни наиболее гибкие в этом плане?

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

Цитата(_pv @ Mar 22 2018, 18:30) *
NXP вон умеет CSом дергать. в lpc8 во всяком случае, вряд ли в других сериях по другому.

LPC (NXP), Tiva (TI), XMC4xx (Infenion) - все они имеют во много раз более навороченные SPI-блоки чем у STM32. Но всё равно - у каждого есть плюсы и минусы.

Цитата(Arlleex @ Mar 22 2018, 18:13) *
Помню в AT91SAM7X512 (и младших по памяти моделях) была возможность не то что аппаратно лапкой CS дергать, так даже время задавалось в количествах тактов вот этих самых задержек. А тут фигу.

Возможность задания в тактах разных времянок (CS->data, межсловный интервал и т.п.) это есть в XMC4xxx.
Go to the top of the page
 
+Quote Post
Arlleex
сообщение Mar 22 2018, 16:55
Сообщение #4


Местный
***

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



Цитата(_pv @ Mar 22 2018, 19:30) *
а таймер разве не может дёргать по совпадению и CS вверх вниз когда нужно и ДМА?

ну возьмите тот же кортекс от любого другого производителя, с нормальной периферией.
NXP вон умеет CSом дергать. в lpc8 во всяком случае, вряд ли в других сериях по другому.
и SCTimer там тоже это можно заставить делать как угодно.

да и атмел скорее всего тоже умеет.

Атмел точно умеет - проверял лично. Но камешки некоторые (на которых и проверял, собственно) морально устарели.

Цитата(jcxz @ Mar 22 2018, 19:46) *
Стенания из рязряда "мыши кололись, плакали, но продолжали жрать кактус..." laughing.gif
Кто-ж Вас заставляет? МК разных полно на любой вкус и цвет - выбирай что более удобно.


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

Никто не заставляет, на самом деле laughing.gif Просто было закуплено на лабораторию ведра STM32 разных калибров для как раз задач широкого применения, не требующих внушительной производительности. Когда задача описана словами "надо дискретизировать сигнал 5000 выборок/сек и передать отсчеты наружу...", невольно понимаешь, что STM32 тут за глаза. И вот лишь когда начинаешь детальнее входить в архитектуру программы, понимаешь, что программа будет сущий костыль... Видимо, этот CS у SPI не дает мне покоя biggrin.gif

Цитата
Возможность задания в тактах разных времянок (CS->data, межсловный интервал и т.п.) это есть в XMC4xxx.

Пожалуй, нужно будет ознакомиться, благодарю.

Сообщение отредактировал Arlleex - Mar 22 2018, 16:58
Go to the top of the page
 
+Quote Post
jcxz
сообщение Mar 22 2018, 17:03
Сообщение #5


Гуру
******

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



Цитата(Arlleex @ Mar 22 2018, 18:55) *
Пожалуй, нужно будет ознакомиться, благодарю.

Прикрепленное изображение
Go to the top of the page
 
+Quote Post
Arlleex
сообщение Mar 22 2018, 17:23
Сообщение #6


Местный
***

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



jcxz, как раз листаю референс на XMC4800. Общее впечатление - на днях сделаю себе отладку и попробую разобраться в новой для себя стилистике документации rolleyes.gif
Go to the top of the page
 
+Quote Post
twix
сообщение Mar 22 2018, 18:00
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 326
Регистрация: 4-11-15
Пользователь №: 89 174



Цитата(Arlleex @ Mar 22 2018, 17:55) *
Видимо, этот CS у SPI не дает мне покоя biggrin.gif

Вы можете взять недорогой чип CPLD и использовать его для коррекции периферии.

Сообщение отредактировал twix - Mar 22 2018, 18:50
Go to the top of the page
 
+Quote Post
yes
сообщение Mar 22 2018, 18:35
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



> В STM32 CS не дергается аппаратно при транзакциях SPI, не понимаю, почему эти говноразработчики из STMicroelectronics не могут сделать это уже в какой реализации своих линеек микроконтроллеров?

а это точно?
вроде в даташите
NSS output enabled (SSM = 0, SSOE = 1)
This configuration is used only when the device operates in master mode. The
NSS signal is driven low when the master starts the communication and is kept
low until the SPI is disabled
в errate не упоминается

я вот только что решил по SPI достучаться и мне тоже NSS не нравится - избавьте от лишней траты времени, если не работает

----------

выбор STM все-таки оправдан из-за большого количества всяческих плат и прочей доступностью
а глюки есть, наверняка всюду, за выросшую сложность и быстрый вывод на рынок новых чипов приходится платить - радуйтесь, что не i.mx программируете sm.gif


Go to the top of the page
 
+Quote Post
technik-1017
сообщение Mar 22 2018, 19:17
Сообщение #9





Группа: Участник
Сообщений: 12
Регистрация: 3-09-17
Пользователь №: 99 108



Как альтернативу STM32 рассматриваю чипы SmartFusion2 от Microsemi (https://actel.ru/item/smartfusion2). Кто-нибудь использует, поделитесь впечатлениями. Младший, m2s005, как мне кажется, может закрыть достаточно большую нишу разрабатываемых устройств.


--------------------
Go to the top of the page
 
+Quote Post
_pv
сообщение Mar 22 2018, 19:27
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(Arlleex @ Mar 22 2018, 22:55) *
Атмел точно умеет - проверял лично. Но камешки некоторые (на которых и проверял, собственно) морально устарели.

я собственно под атмел имел ввиду их новые кортексы, ATSAMC/D/E/...

Цитата(jcxz @ Mar 22 2018, 22:52) *
Возможность задания в тактах разных времянок (CS->data, межсловный интервал и т.п.) это есть в XMC4xxx.

LPC800 так тоже умеют.
Go to the top of the page
 
+Quote Post
skripach
сообщение Mar 23 2018, 01:51
Сообщение #11


■ ■ ■ ■
*****

Группа: Свой
Сообщений: 1 100
Регистрация: 9-08-06
Пользователь №: 19 443



LPC54 CSами умеет дергать невероятно, с настраиваемыми предзадержками и постзадержками.
Критерий выбора огонь. salmari.gif


--------------------
Делай что должен и будь что будет.
Go to the top of the page
 
+Quote Post
Arlleex
сообщение Mar 23 2018, 13:54
Сообщение #12


Местный
***

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



Цитата(twix @ Mar 22 2018, 21:00) *
Вы можете взять недорогой чип CPLD и использовать его для коррекции периферии.

Ну программируемой логикой можно все, конечно, поправить, но видится аппаратным костылем (перфекционист детектед).

Цитата(yes @ Mar 22 2018, 21:35) *
я вот только что решил по SPI достучаться и мне тоже NSS не нравится - избавьте от лишней траты времени, если не работает

Да, не дергается ножка у него...
Хотел сделать хитросплетенную логику на механизмах совпадения в таймерах, DMA и SPI, и все равно уперся в другую неприятную особенность, склеившей ласты на задумке.

Цитата(technik-1017 @ Mar 22 2018, 22:17) *
Как альтернативу STM32 рассматриваю чипы SmartFusion2 от Microsemi (https://actel.ru/item/smartfusion2). Кто-нибудь использует, поделитесь впечатлениями. Младший, m2s005, как мне кажется, может закрыть достаточно большую нишу разрабатываемых устройств.

Чем меня привлекают STM32 - в плане частот ядер они вроде как всегда впереди... Да и самих ядер. Если ARM что-то выпускает, они тут же подхватывают это и делают новые микроконтроллеры.
Ну а по периферии - не агонь. Все-таки присматриваюсь к XMC4, LPC пока что даже не смотрел. Вообще думаю проштудировать получше рынок МК на базе Cortex-M. А вообще некоторое время назад на глазах промелькнул некий Renesas-овский процессор RZ-A1 Cortex-A9. 10МБайт встроенного ОЗУ выглядят очень внушительными.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Mar 23 2018, 15:49
Сообщение #13


Гуру
******

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



Цитата(Arlleex @ Mar 23 2018, 15:54) *
10МБайт встроенного ОЗУ выглядят очень внушительными.

Ну так есть и с 64МБ если уж на то пошло и нужно ОЗУ. laughing.gif
Go to the top of the page
 
+Quote Post
adnega
сообщение Mar 24 2018, 07:21
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 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

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

 


RSS Текстовая версия Сейчас: 19th April 2024 - 23:43
Рейтинг@Mail.ru


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