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

 
 
> На что бы перейти..., В плане платформы
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
5 страниц V   1 2 3 > »   
Start new topic
Ответов (1 - 65)
_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
adnega
сообщение Mar 24 2018, 08:11
Сообщение #16


Гуру
******

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



Цитата(dac @ Mar 24 2018, 10:52) *
приходит прерывание от таймера/внешнего прерывания с интервалом 1мкс

1мкс -> 1МГц.
Даже на МК с тактовой 168МГц у вас 168 тактов на посылку. По-моему, ничего разумного за такое время не сделать.
STM32F тут не подходит не из-за SPI, а из-за общей производительности.
Тут вариант - на внешней ПЛИС сделать опрос АЦП, а МК предоставить доступ по внешней шине,
или правдами-неправдами "окутать" доступ к АЦП в какой-нить DCMI при помощи CPLD попроще.
У ТС озвучивалась задача 5кГц, и под нее выбирались МК типа STM32F
Цитата
задача описана словами "надо дискретизировать сигнал 5000 выборок/сек и передать отсчеты наружу...", невольно понимаешь, что STM32 тут за глаза.


Цитата(adnega @ Mar 24 2018, 11:09) *
1мкс -> 1МГц.
Даже на МК с тактовой 168МГц у вас 168 тактов на посылку. По-моему, ничего разумного за такое время не сделать.
STM32F тут не подходит не из-за SPI, а из-за общей производительности.
Тут вариант - на внешней ПЛИС сделать опрос АЦП, а МК предоставить доступ по внешней шине,
или правдами-неправдами "окутать" доступ к АЦП в какой-нить DCMI при помощи CPLD попроще.
У ТС озвучивалась задача 5кГц, и под нее выбирались МК типа STM32F

Если 5кГц это максимум, то на любом STM32F это делается легко даже с ручным дерганьем CS.
Go to the top of the page
 
+Quote Post
_pv
сообщение Mar 24 2018, 08:34
Сообщение #17


Гуру
******

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



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

ну нормальные последовательные порты умеют не только нормально аппаратно чипселектами дёргать но и произвольную длину слова задавать.
Go to the top of the page
 
+Quote Post
dac
сообщение Mar 24 2018, 08:54
Сообщение #18


Знающий
****

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



QUOTE (adnega @ Mar 24 2018, 14:11) *
1мкс -> 1МГц.
Даже на МК с тактовой 168МГц у вас 168 тактов на посылку. По-моему, ничего разумного за такое время не сделать.

у меня процесс непериодический, т.е. мне не надо постоянно с таким интервалом, поэтому dma решает проблему.
новые stm32f умеют произвольное слово от 4 до 16 бит
ЗЫ даже если 5кГц два раза дергать прерывание по 8 тактов вход/выход + сохранить, тоже нифига не радостно
Go to the top of the page
 
+Quote Post
jcxz
сообщение Mar 24 2018, 10:21
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 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
adnega
сообщение Mar 24 2018, 13:25
Сообщение #20


Гуру
******

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



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

Если нужно заполнить кольцевой буфер для постобработки, то полностью согласен.
Go to the top of the page
 
+Quote Post
Arlleex
сообщение Mar 24 2018, 17:02
Сообщение #21


Местный
***

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



Да вот элементарный пример, решение которого полностью решило бы такую проблему.
Возможно ли в STM32F4 настроить периодическую отправку в SPI по DMA?
Я бы настроил событие по совпадению таймера 5000 раз в секунду пинать DMA, чтобы он положил данные в SPI->DR. Началась бы передача, по завершении которой выставился флаг RXNE, который пинал бы другой канал DMA, и тот складировал данные в буфер и говорил мне когда нужный объём данных наберётся для передачи по другому интерфейсу разом.
DMA устроен же так, что в режиме память-регистр я могу указывать только адрес регистра только того модуля, который пнул этот канал DMA, а как было бы здорово по запросу DMA от таймера сделать пересылку в SPI-DR, то есть в модуль, который не пинал этот DMA. Периодические вещи, например, отправки или прием данных по разным интерфейсам, в том числе SPI, стали бы возможны вовсе без участия процессора!
Go to the top of the page
 
+Quote Post
adnega
сообщение Mar 24 2018, 17:16
Сообщение #22


Гуру
******

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



Цитата(Arlleex @ Mar 24 2018, 20:02) *
DMA устроен же так, что в режиме память-регистр я могу указывать только адрес регистра только того модуля, который пнул этот канал DMA,

С чего вы это взяли? DMA может откуда угодно куда угодно произвести транзакцию, если на это нет ограничений (CCM, выравнивание и т.п.)
и есть доступ к соответствующим шинам. Много раз обсуждалось, как таймер инициирует транзакцию в SPI. Там единственная особенность,
что от момента запроса до момента транзакции может пройти некоторое время (у меня получалось ~12 тактов) и при высоких скоростях SPI
сложно получить равномерный SCK (без межсимвольных пауз).
Go to the top of the page
 
+Quote Post
Andrew Su
сообщение Mar 25 2018, 11:36
Сообщение #23


Местный
***

Группа: Свой
Сообщений: 301
Регистрация: 18-09-07
Из: Украина
Пользователь №: 30 647



Добрый день.
На отладочнике 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
Go to the top of the page
 
+Quote Post
inventor
сообщение Apr 7 2018, 14:55
Сообщение #24


Знающий
****

Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748



Цитата(Arlleex @ Mar 22 2018, 20:23) *
jcxz, как раз листаю референс на XMC4800. Общее впечатление - на днях сделаю себе отладку и попробую разобраться в новой для себя стилистике документации rolleyes.gif

камушек то под 2 тыщи стоит
Go to the top of the page
 
+Quote Post
backa
сообщение Apr 24 2018, 20:31
Сообщение #25


Местный
***

Группа: Свой
Сообщений: 313
Регистрация: 15-06-05
Из: Минск
Пользователь №: 6 028



TI "TM4C1294" - дорого и сердито - SPI работае на частоте до 60МГц (1/2 от тактовой) и с выборкой внешнего кристала "SS" там все хорошо))) Никаких "выбрать ручками".... Хотя есть странные индивидумы (мой коллега) - он "необъяснимо никаким здравым смысло" дрыгает этой ножкой тоже руками)))
Поддержка просто порaжает: форум с ответами в течении рабочего дня на любые вопросы(понятно, что все консультатнты - индусы со всеми вытекающими), своя библиотека не вызывающая НИКАКИХ нареканий - было желание писать все общение самому с нуля ,но посмотрев исходники , понял что получу тоже самое но только потеряю время
Так что для начала - просто сказка а не камушек и платы у них не хуже чем у STM - цена та же - около 20 баксаф...
Разводка плат сделана индусами со всеми вытекающими .... особенно аналоговая часть
Но для освоения нового камушка само то.
Go to the top of the page
 
+Quote Post
k155la3
сообщение Apr 26 2018, 13:38
Сообщение #26


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(backa @ Apr 24 2018, 23:31) *
TI "TM4C1294" - дорого и сердито - SPI работае на частоте до 60МГц (1/2 от тактовой) и с выборкой внешнего кристала "SS" там все хорошо))) Никаких
. . .
Так что для начала - просто сказка а не камушек и платы у них не хуже чем у STM - цена та же - около 20 баксаф...
. . .

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


Go to the top of the page
 
+Quote Post
backa
сообщение Apr 26 2018, 23:16
Сообщение #27


Местный
***

Группа: Свой
Сообщений: 313
Регистрация: 15-06-05
Из: Минск
Пользователь №: 6 028



Цитата(k155la3 @ Apr 26 2018, 17:38) *
Нечто эдакое ? EK-TM4C1294XL (цена у нас, правда, около 40 кваксов).
Программатор-отладчик, по виду, на плате. Как эта платформа в отладке ? (привык к "хорошему", IAR)

У нас чуть дороже 20ки $ настоящих денег)
Программатор-отладчик на плате и виртуальный комп-порт для отдалки через принтф , например...
Отладка прекрасная - никаких притензий - все доступно - все ресурсы и периферия ... это все в Keil ( тоже привык к хорошему!!! и больше никогда на IAR c этим "убогим" спартанским IDE и "недоотладчиком"). После того как Keil купила ARM .. все встало как надо...
Самое важное, что для этого камня есть "безглючная" библиотека низкого уровня и TI поставляет бесплатную, постоянно обновляему IDE собственного производства, но ввиду безальтернативности в лице Keil-а оставил ее без внимания...
Вобщем рекомендую для старта!
Go to the top of the page
 
+Quote Post
k155la3
сообщение Apr 27 2018, 16:09
Сообщение #28


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(backa @ Apr 27 2018, 02:16) *
. . . Программатор-отладчик на плате и виртуальный комп-порт для отдалки через принтф , например...
Вобщем рекомендую для старта!
Спасибо за инф.
IAR, возможно, есть "ньюансы" для каждого процессора. По IAR/MSP430 - у меня только плюсы.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 28 2018, 05:45
Сообщение #29


Гуру
******

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



Цитата(k155la3 @ Apr 27 2018, 19:09) *
IAR, возможно, есть "ньюансы" для каждого процессора. По IAR/MSP430 - у меня только плюсы.

О каких нюансах речь? Ещё несколько лет назад, ещё на прошлой работе создали линейку устройств на TM4C129DNCPDT. ПО там довольно большое и сложное (писалось группой программистов), с использованием многой периферии и без индусских "библиотек". Писалось/отлаживалось всё в IAR. Сейчас уже несколько лет как вся эта линейка продаётся. Производится сейчас по несколько тыс. шт. в месяц. Никаких проблем с IAR-ом или контроллером нет. Вполне нормальный МК. DMA-контроллер - так пожалуй вообще лучший из тех, что я видел в разных Cortex-M-МК.
А если у кого-то что-то не работает, то может это случай "плохого танцора"? laughing.gif
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Apr 28 2018, 07:58
Сообщение #30


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



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

Вот -
https://blog.nxp.com/iot/crossover-to-extre...elq_cid=1860362
Go to the top of the page
 
+Quote Post
ViKo
сообщение Apr 28 2018, 08:55
Сообщение #31


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(AlexandrY @ Apr 28 2018, 10:58) *
Вот -

Без флэш-памяти. crying.gif
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 28 2018, 09:52
Сообщение #32


Гуру
******

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



Цитата(ViKo @ Apr 28 2018, 11:55) *
Без флэш-памяти. crying.gif

И зачем на таком быстром МК тормозная флешь?
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Apr 28 2018, 10:48
Сообщение #33


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(ViKo @ Apr 28 2018, 11:55) *
Без флэш-памяти. crying.gif

Зато посмотрите их цены. Это просто праздник. yeah.gif
Я глазом не успел моргнуть как раскупили их KIT-ы IMXRT1050-EVKB
Теперь сижу жду когда появятся в продаже. crying.gif
Go to the top of the page
 
+Quote Post
segment
сообщение Apr 28 2018, 12:00
Сообщение #34


Местный
***

Группа: Участник
Сообщений: 352
Регистрация: 10-08-06
Из: Санкт-Петербург
Пользователь №: 19 471



А что за "Wireless connectivity interface for – Wi-Fi®, Bluetooth®, BLE, ZigBee® and Thread™" у IMXRT1050?
Go to the top of the page
 
+Quote Post
k155la3
сообщение Apr 28 2018, 13:09
Сообщение #35


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(jcxz @ Apr 28 2018, 08:45) *
О каких нюансах речь? . . .
Да хорошо, если никаких. Шас начал работать с STM32F429. После Ti/MSP430 "ломка" sm.gif
Вот думаю может отложить STM и начать с TM4C1294.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Apr 28 2018, 14:02
Сообщение #36


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(segment @ Apr 28 2018, 15:00) *
А что за "Wireless connectivity interface for – Wi-Fi®, Bluetooth®, BLE, ZigBee® and Thread™" у IMXRT1050?

Кто их знает.
Может они этим намекает, что на него много чего из IoT портировано. Например https://github.com/zephyrproject-rtos/zephyr
А может в boot ROM на этот счет у них что-то есть.

Цитата(k155la3 @ Apr 28 2018, 16:09) *
Да хорошо, если никаких. Шас начал работать с STM32F429. После Ti/MSP430 "ломка" sm.gif
Вот думаю может отложить STM и начать с TM4C1294.

В свое время я переходил с MSP430 на OMAP-ы того же TI.
Скажу вам что преемственности там никакой.
Так что если думает вам облегчит вхождение в новую архитектуру знание экосистемы производителя то зря.
Go to the top of the page
 
+Quote Post
k155la3
сообщение Apr 28 2018, 18:04
Сообщение #37


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(AlexandrY @ Apr 28 2018, 17:02) *
. . . Скажу вам что преемственности там никакой.
Так что если думает вам облегчит вхождение в новую архитектуру знание экосистемы производителя то зря.
В составе экосистемы присутствует документация и прочие сопутствующие материалы.
У Ti с этим все благополучно. А по STM - я пока не определился. Надо привыкнуть-разобраться что и где.
Ti дает на странице продукта и в даташитах массу перекресных ссылок. У STM с этим как-то "скромненько".
Или вообще пусто.

Go to the top of the page
 
+Quote Post
adnega
сообщение Apr 28 2018, 18:59
Сообщение #38


Гуру
******

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



Цитата(k155la3 @ Apr 28 2018, 21:04) *
У STM с этим как-то "скромненько".

Может, вы тут не смотрели?
Go to the top of the page
 
+Quote Post
k155la3
сообщение Apr 28 2018, 19:23
Сообщение #39


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(adnega @ Apr 28 2018, 21:59) *
Может, вы тут не смотрели?
Вот даташит оттдуда
AN3126 Application note Audio and waveform generation using the DAC in STM32 microcontrollers.
А есть ли проект-исходник, соответствующий даташиту ? Ссылки в нем я не увидел. И есть ли ОНО вообще.
(Это я для примера привел. В Ti документации такие вопросы "что-где" не возникают - полно гиперссылок. Моей "фе" в этом смысле).
Наверное я не эвропээец . . .
ps
Googl проплачивает STM за "лаконичную" подготовку документации sm.gif
Go to the top of the page
 
+Quote Post
adnega
сообщение Apr 29 2018, 05:45
Сообщение #40


Гуру
******

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



Цитата(k155la3 @ Apr 28 2018, 22:23) *
А есть ли проект-исходник, соответствующий даташиту ?

Т.е. к документации как к таковой претензий нет, а нужны какие-то исходники?
Кста, что вы понимаете под исходниками? Там же великая тьма сред разработки,
языков программирования, компиляторов, библиотек и т.п.
Какие-то исходники, слышал, можно получить тут.
Go to the top of the page
 
+Quote Post
k155la3
сообщение Apr 29 2018, 10:46
Сообщение #41


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(adnega @ Apr 29 2018, 08:45) *
Т.е. к документации как к таковой претензий нет, а нужны какие-то исходники? . . .
Ну, претензий, кроме вышеупомянутой, нет. Пока. По причине того, что я только в начале процесса "раскуривания".
Этап RTFM.
Цитата(adnega @ Apr 29 2018, 08:45) *
. . . Кста, что вы понимаете под исходниками? . . .
Исходный код приложения, которое прошито в EVB NUCLEO-F429ZI. В любых вариантах. Оно мигает светодиодиками.
В даташите на EVB есть пара ссылок. Обе - на <www.st.com> sm.gif
Цитата(adnega @ Apr 29 2018, 08:45) *
. . Какие-то исходники, слышал, можно получить тут. . .
Понятно где смотреть. Это похоже на Ti DriverLib пакет, где все "в одной колбе" - и даташиты, и драйверы, и примеры для разных семейств контроллера.
(под 200 мб)

Спасибо за инф.
Go to the top of the page
 
+Quote Post
Arlleex
сообщение May 6 2018, 08:20
Сообщение #42


Местный
***

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



За документацию с кучей перекрестных ссылок можно на кол сажать не думая. Совершенно идиотская идеология создания технического документа, которую невозможно читать вдумчиво и воспринимать (как в ГОСТ-ах всяких). Куда удобнее в одном-двух-трех документах расписать весь функционал, разбить предмет описания на независимые модули. А когда читатель хочет поднять, например, SPI, он после прочтения главы только о SPI должен взять и запустить этот модуль. А не скакать по перекрестным ссылкам внутри документа, как там включить то, а как там включить это. Помню листал документацию от PIC32MX - проклял всех этих писателей. А у STM32 очень удобно сделано - если и есть перекрестные ссылки, то только внутри документа, и их количество невелико. И то, обычно недалеко в пределах текущей главы. И пусть такой документ 3-4 тысячи страниц будет, но мне, например, куда удобнее выделить часок-другой на перевод и переваривание интересующей главы и сразу же запустить периферию, чем танцевать с бубном на предмет "блин, а что ж я забыл то сделать то?".

Сообщение отредактировал Arlleex - May 6 2018, 08:21
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение May 6 2018, 12:05
Сообщение #43


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(Arlleex @ May 6 2018, 11:20) *
За документацию с кучей перекрестных ссылок можно на кол сажать не думая.

Э нет, документация на TM4C1294 как раз очень интегрированная, там в одном документе все инфа содержится, даже систему команд Cortex-M4 туда всунули.
Секрет в том что там какая-то совершенно кастрированная периферия и они умудрились все засунуть в 1100 страниц.
Обычно на такие чипы документаци раза в два толще.
Go to the top of the page
 
+Quote Post
Arlleex
сообщение May 6 2018, 15:06
Сообщение #44


Местный
***

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



Тогда действительно что-то с ним точно не так biggrin.gif
Коллеги пользуются такими МК (это ж Tiva-series, если не ошибаюсь) - но 80МГц выглядят как-то не привлекательными относительно 180МГц у тех же STM32 при прочих равных условиях (главным образом, процессор Cortex-M4F).
P.S. 80МГц - в каком-то из семейства Tiva-C, не говорю, что во всех так, но выше 150МГц Tiva-C вроде нет.
P.P.S. Подарили мне тут платку на XMC4800, периферию которой так открыто и усердно хвалил jcxz.

Беглым взглядом сразу захотелось узнать про возможности DMA (я сую DMA практически во все места, где это видится удобным) - очень заинтриговала возможность пересылок "периферия-периферия", то есть теоретически, без участия процессора, я могу конвертировать I2C, скажем, в SPI, или UART в SPI или как-нибудь еще. Кто досконально разбирался (например, jcxz), намекните, это правда? Без участия процессора сделать мост периферия-периферия? Или все-таки рекламный ход с кучей сопутствующих ограничений?
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 6 2018, 15:39
Сообщение #45


Гуру
******

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



Цитата(AlexandrY @ May 6 2018, 15:05) *
Секрет в том что там какая-то совершенно кастрированная периферия

Что именно там "кастрированное"?

Цитата(Arlleex @ May 6 2018, 18:06) *
P.S. 80МГц - в каком-то из семейства Tiva-C, не говорю, что во всех так, но выше 150МГц Tiva-C вроде нет.

Ну "в каком-то из STM32" максимум 72МГц, что-ж Вы с ним не сравниваете? laughing.gif
Например (говорю по памяти) в Tiva 256-битная шина к памяти. И на тот момент (момент их появления) благодаря ей, разница в скорости выполнения линейного кода из флешь с STM32 была несущественной (когда мы выбирали Tiva для своего проекта). А вот преимущество более развитой периферии по сравнению с STM32 и бОльший объём ОЗУ - это для нас было существенно.

Цитата(Arlleex @ May 6 2018, 18:06) *
то есть теоретически, без участия процессора, я могу конвертировать I2C, скажем, в SPI, или UART в SPI или как-нибудь еще. Кто досконально разбирался (например, jcxz), намекните, это правда? Без участия процессора сделать мост периферия-периферия? Или все-таки рекламный ход с кучей сопутствующих ограничений?

Что за рекламный ход? Где такое написано? И на кой ляд это нужно (практически, а не теоретически)?
Наверное возможно для каких-то протоколов, но ЗАЧЕМ???
В XMC возможно например для I2C с помощью DMA полностью запустить/выполнить/остановить одну или даже несколько подряд транзакций, с записью, чтением и тем и другим сразу. Запрограммировав её предварительно в памяти.
Да в принципе некоторые транзакции в XMC можно выполнять вообще даже без DMA: заранее запрограммировать содержимое пересылки в FIFO, а затем стартовать её от сигнала любой периферии (service request) или внешнего сигнала или даже логической комбинации сигналов через ERU.
Более сложной и функциональной периферии и связки периферия+DMA+service_request-ы я не видел ни в одном Cortex-M.
Хотя сам DMA в Tiva пожалуй получше...
Go to the top of the page
 
+Quote Post
Arlleex
сообщение May 6 2018, 16:29
Сообщение #46


Местный
***

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



Цитата
Ну "в каком-то из STM32" максимум 72МГц, что-ж Вы с ним не сравниваете?

Я не просто так написал
Цитата
...при прочих равных условиях (главным образом, процессор Cortex-M4F).

Сравнение бралось между схожими линейками, построенных на одном ядре.
Цитата
Например (говорю по памяти) в Tiva 256-битная шина к памяти.

1. А в STM32 128-битная шина и ART-ускоритель памяти.
2. В Tiva-C до 120МГц максимум, STM32 линейки F4 (на том же проце) уже 180Мгц.
3. В Tiva-C производительность 150 DMIPS, в STM32 все той же линейки уже 225 DMIPS, как видно производительность на 1МГц частоты одинаковая, но STM32 выигрывает все-таки уже из-за более высокой частоты, кто бы что ни говорил.
4. Что в Tiva-C, что в STM32F4 по 256кБ RAM. Более того, в STM32F469 уже даже 384кБ RAM.
По периферии возможно, да, Tiva-C в некотором смысле привлекательнее, на первый взгляд (возможно и на второй, и на третий в некоторых приложениях).
Цитата
Что за рекламный ход? Где такое написано? И на кой ляд это нужно (практически, а не теоретически)?
Наверное возможно для каких-то протоколов, но ЗАЧЕМ???

Про рекламный ход нигде не написано, но производители МК любят приукрасить свои камни. Я помню как в STM32F429 хвалили на семинаре в Москве их супер-пупер LCD-TFT контроллер. А по факту в реальном проекте применить его можно было с небольшими программными костылями из-за аппаратного бага в связке NOR-Flash + SDRAM. Зато сколько понтов было у представителей, когда они из внутренней Flash картинку на экран выводили... Стоило мне взять экран побольше разрешением, да повесить NOR-Flash + SDRAM, как понял, какие же они чудаки на букву м.
Я вот сейчас пишу прошивку на МК, который стоит на плате и выполняет вспомогательную функцию для ZYNQ7000 - следит за напряжениями питания, датчики опрашивает, да с пользователем общается. И одну I2C-шную микросхему уже было невозможно к ZYNQ7000 прицепить - остался только UART. Вот и пришлось завести ее через МК, а МК уже по UART отдает данные. Получился такой программный мост - I2C-UART. А мне об этих данных вообще знать не нужно - если бы такой мост можно было бы сделать аппаратно в XMC4800 - это был бы существенный плюс. Ну по крайней мере хотя бы попробовать задумку, если бы не получилось - программно в любом случае обыграть можно.
Цитата
Более сложной и функциональной периферии и связки периферия+DMA+service_request-ы я не видел ни в одном Cortex-M.

Scatter-gather DMA в XMC4800 конечно выглядит очень вкусным, тут я полностью согласен. Но самое главное, чтобы за этой сложностью не потеряться в трех соснах.

Сообщение отредактировал Arlleex - May 6 2018, 16:30
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 6 2018, 17:04
Сообщение #47


Гуру
******

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



Цитата(Arlleex @ May 6 2018, 19:29) *
3. В Tiva-C производительность 150 DMIPS, в STM32 все той же линейки уже 225 DMIPS, как видно производительность на 1МГц частоты одинаковая, но STM32 выигрывает все-таки уже из-за более высокой частоты, кто бы что ни говорил.

Вы внимательнее прочитайте, что я написал: при выполнении линейного кода из флешь. А теперь посчитайте например за сколько тактов выполнится блок инструкций в 128-и битах? А если все (или многие инструкции 32-битные)? И сколько тактов нужно чтобы дочитать следующий блок на данной частоте МК? А теперь подумайте что в Tiva этот блок в 2 раза больше.
После этого увидите, что бОльшая частота не даёт никакого выигрыша в случае линейного кода из флешь. А вот более широкая шина (и бОльшая частота шины) - даёт.
И в Tiva тоже кстати есть кеш инструкций. Хоть и небольшой. Но скорость выборки по широкой шине такова, что во многих случаях никакие акселераторы и не нужны.
Так что STM32 даже на бОльшей частоте может запросто проиграть по скорости Tiva если код не влазит целиком в его кеш.

Цитата(Arlleex @ May 6 2018, 19:29) *
4. Что в Tiva-C, что в STM32F4 по 256кБ RAM. Более того, в STM32F469 уже даже 384кБ RAM.

Опять же ещё раз открываем моё исходное сообщение и ещё раз внимательно перечитываем (раз не получается с первого раза):"когда мы выбирали Tiva для своего проекта".
Так вот - когда мы выбирали Tiva для своего проекта, у неё было 256КБ ОЗУ, а в самом жирном из тогда имевшихся STM32 - всего 192КБ (насколько помню).

Цитата(Arlleex @ May 6 2018, 19:29) *
А мне об этих данных вообще знать не нужно - если бы такой мост можно было бы сделать аппаратно в XMC4800 - это был бы существенный плюс. Ну по крайней мере хотя бы попробовать задумку, если бы не получилось - программно в любом случае обыграть можно.

Не очень понятно как вообще можно просто так передать из I2C в UART без какой-либо обработки протокола? Уже хотя бы потому, что I2C - это не просто поток байтов, а ещё и старты/стопы и адресации и переключение передача/приём и т.п. Собственно на аппаратном уровне в UART каждый байт - это независимый элемент (кадр), а в I2C кадр - это много байт.
Какой-то протокол должен быть. Возможно, что если этот протокол - ваш самопальный, то возможно, что его можно приспособить для полностью аппаратной обработки. Но мне кажется, что программная обработка будет просто легче и займёт меньше ресурсов МК. А о скорости тут вообще речь не идёт. Поэтому не вижу смысла городить огород на пустом месте.

Цитата(Arlleex @ May 6 2018, 19:29) *
Scatter-gather DMA в XMC4800 конечно выглядит очень вкусным, тут я полностью согласен.

Я не о том. В Tiva сделали очень грамотно, когда от каждой периферии умеющей генерить burst-DMA-запросы вывели два сигнала DMA-запросов: собственно burst и single. Одновременно. И обработку этих запросов в DMA-контроллере сделали по уровню, а не по edge. Вот в XMC к сожалению до этого не додумались и там с этим связано много проблем.

PS: В первую очередь советую Вам сразу же на купленной плате проверить ревизию чипа (XMC). И перепаять на последнюю.
У нас на EVB с XMC стояли инженерные образцы и я наступил сразу на несколько багов из ерраты. Пришлось их перепаивать.
В инженерных образцах много багов. Причём серьёзных. Но в серийных образцах баги уже не страшные.
Да: и у Infineon какая-то странная манера оформления еррат - те баги, что устранены в новых ревизиях чипа, из ерраты удаляются (не комментируются как относящиеся к такой-то ревизии, а просто удаляются!). И на сайте выложена еррата для последней ревизии. А для старых ревизий на сайте тоже есть ерраты (в архиве), но они не сразу находятся.
Так что имейте в виду.
Go to the top of the page
 
+Quote Post
Arlleex
сообщение May 6 2018, 17:34
Сообщение #48


Местный
***

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



Цитата
Вы внимательнее прочитайте, что я написал: при выполнении линейного кода из флешь. А теперь посчитайте например за сколько тактов выполнится блок инструкций в 128-и битах? А если все (или многие инструкции 32-битные)? И сколько тактов нужно чтобы дочитать следующий блок на данной частоте МК? А теперь подумайте что в Tiva этот блок в 2 раза больше.

Да какая разница сколько тактов будет выполняться блок инструкций в 128 битах? Все эти prefetch-буферы и ускорители, а в Вашем случае более широкая шина необходима лишь для обеспечения zero-wait-state при чтении из Flash (значит 4 32-битные инструкции за 4 такта будет выполнено). Для Tiva, поскольку в нем ускорителя нет, сделали более широкую шину, для STM32 - поставили ускоритель. Но лишь для одной цели - получить нулевое ожидание при доступе к данным или инструкции при чтении из Flash. А раз это условие выполнено, то STM32 выигрывает, поскольку может исполнять линейный код с бОльшей частотой. Какая разница какая там шина, если что там, что там задержка при чтении из Flash отсутствует при чтении линейного кода? Между заполнениями 128-битных строк ускорителя тоже 0 циклов ожидания, так что при вычитке следующих 4 инструкций никакого ожидания не происходит.
Цитата
Опять же ещё раз открываем моё исходное сообщение и ещё раз внимательно перечитываем (раз не получается с первого раза):"когда мы выбирали Tiva для своего проекта".

Хорошо, с этим понятно.
Цитата
Не очень понятно как вообще можно просто так передать из I2C в UART без какой-либо обработки протокола? Уже хотя бы потому, что I2C - это не просто поток байтов, а ещё и старты/стопы и адресации и переключение передача/приём и т.п.

Ну, скажем, сформировать старт-стоп можно. А вот все пересылки данных ничем не отличаются между I2C и UART. Внешнее устройство пишет в UART какой-нибудь зарезервированный символ - XMC4800 формирует старт-условие. Дальше устройство пишет физический байт адреса по UART - он транслируется в I2C-шную посылку. И все остальные байты передаются либо принимаются (тем более UART полнодуплексный). По завершении транзакции XMC4800 формирует стоп-условие. Правда для этого XMC4800 нужно знать длину записываемых/считываемых данных для корректной работы логики запуска DMA. Ну опять же, это все мысли вслух, и если уж докопаться, то можно разных изворотов придумать, как угодно творческой душе разработчика (и не надо вот сейчас говорить что это сплошной бред и т.д., порой причудливые решения куда лучше справляются с задачей).
Цитата
И обработку этих запросов в DMA-контроллере сделали по уровню, а не по edge. Вот в XMC к сожалению до этого не додумались и там с этим связано много проблем.

А какие преимущества запроса по уровню, а не по фронту?
Цитата
PS: В первую очередь советую Вам сразу же на купленной плате проверить ревизию чипа (XMC). И перапаять на последнюю.
...
Так что имейте в виду.

Жесть biggrin.gif Ревизию гляну как доберусь до платки. Спасибо, буду знать.
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 6 2018, 20:16
Сообщение #49


Гуру
******

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



Цитата(Arlleex @ May 6 2018, 20:34) *
Между заполнениями 128-битных строк ускорителя тоже 0 циклов ожидания, так что при вычитке следующих 4 инструкций никакого ожидания не происходит.

Да ладно?!... Похоже вы так и не взяли калькулятор и не посчитали... sad.gif
4 инструкции в 128-битной строке кеша (допустим все они 1-тактные) - значит 4 такта. А сколько тактов wait-states требуется STM32 на 180МГц на выборку очередной порции данных из кеша при кеш-промахе? 7 или 8? И как позвольте узнать будет 0 тактов ожидания между заполнениями строк, если вся строка выполняется за 4 такта, а на чтение новой нужно 8 тактов??? (ещё раз - разговор про линейный код, или линейный участок кода по-крайней мере такой длины, что не влезает в кеш; т.е. - имеют место кеш-промахи).
И "ускоритель" в STM32 как я понимаю - это и есть просто кеш команд. Ну так в Tiva он тоже есть, только маленький.

Цитата(Arlleex @ May 6 2018, 20:34) *
Ну опять же, это все мысли вслух, и если уж докопаться, то можно разных изворотов придумать, как угодно творческой душе разработчика

Прочитаете мануал - разберётесь с возможностями.
Например у меня на XMC была задача: необходимо было передать из одного устройства на XMC в другое (на XMC) по UART небольшой пакет с данными (результаты вычислений). Кроме самих данных необходимо было в этой же пересылке передать и время получения этих данных на устройстве-источнике данных (в некий момент времени Т на устройстве-источнике данные считываются с АЦП, над ними выполняется ряд математических операций, полученный результат отправляется устройству-приёмнику, а также устройству приёмнику нужно передать момент времени чтения данных из АЦП (устройство-приёмник должно знать когда было чтение по его собственным часам) с максимально-возможной точностью, желательно до такта CPU).
Так вот я сделал примерно так: от таймера, который своим сигналом S1 запускает преобразование АЦП, также через некоторое время T2 (несколько мкс) генерится сигнал S2, запускающий передачу содержимого FIFO UART-а. По прерыванию завершения преобразования АЦП в ISR обрабатываются данные и записываются в FIFO UART. Время преобразования АЦП + время вызова и работы ISR заведомо меньше T2. Значит сигнал S2 возникает в момент когда данные для передачи уже лежат в FIFO.
В принимающем XMC я первый перепад на линии RX.UART (начала старт-бита) фиксирую таймером. Получается синхронизация ведущий-ведомый с точностью до такта частоты тактирования таймеров. И без джиттера!
На каком еще МК можно сделать подобное? Я таких не знаю. laughing.gif

Цитата(Arlleex @ May 6 2018, 20:34) *
А какие преимущества запроса по уровню, а не по фронту?

Я где-то в этой теме (а может другой, но недавно) уже подробно описывал какие проблемы возникают при генерации DMA-запросов по перепаду уровня заполненности FIFO. Не хочу повторяться. Так вот: DMA-event-ы "по уровню" полностью снимают эти проблемы.
Вот оно: https://electronix.ru/forum/index.php?showt...t&p=1558972
Go to the top of the page
 
+Quote Post
Arlleex
сообщение May 6 2018, 21:09
Сообщение #50


Местный
***

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



Да уж, я думал я один изворачиваюсь с периферией как только можно biggrin.gif
Ну а насчет количества тактов, кешей и выигрыша в широкой шине - ничего не буду говорить. У меня есть две платы - одна на Tiva-C (Cortex-M4, 80МГц) и STM32F4 (Cortex-M4, 180МГц). Напишу линейный длинный код на ассемблере, буду фиксировать контрольные точки таймером. Сравню результаты. Ибо, судя по описанию STM-овцев, их ART-ускоритель при линейном коде как раз-таки и работает на максимальную производительность - код не перепрыгивает никуда, не нужно перезаполнять строки кэша, как только выкачали 128 бит и начали их выполнять, тут же подкачивается еще 128 бит и т.д.
В общем, если будет время на неделе - отпишусь, что получилось. Пока что не верю laughing.gif
Go to the top of the page
 
+Quote Post
Arlleex
сообщение May 7 2018, 19:56
Сообщение #51


Местный
***

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



Итак, ради интереса сделал тест.
Использую аппаратный регистр CYCCNT для подсчета реального количества тактов, затрачиваемых на исполнение кода.
Предварительно процессор настраивается на 180МГц, количество тактов процессора, затрачиваемое на чтение 128 бит из Flash - 6 циклов (5WS).
Код теста:
Код
        AREA MY_PROGRAM, CODE, READONLY
        
        ENTRY
        
MyProg    PROC
        
        EXPORT Main
        
DWT_CYCCNT    EQU    0xE0001004
DWT_CONTROL    EQU    0xE0001000
SCB_DEMCR    EQU    0xE000EDFC

Main
        ldr r0, =SCB_DEMCR
        mov r1, #0x01000000
        str r1, [r0]
        
        ldr r0, =DWT_CONTROL
        ldr r1, [r0]
        mov r2, #0x1
        orr r1, r2
        str r1, [r0]
        
        ldr r0, =DWT_CYCCNT
        mov r1, #0x0

        b loop
        
        LTORG

loop
        str.w r1, [r0]
        
        mul.w r3, r4, r5
    ; ...
    ; ТЫСЯЧА ТАКИХ ИНСТРУКЦИЙ
    ; ...
        mul.w r3, r4, r5
        
        ldr.w r2, [r0]
        
        b.w loop
        
        ENDP

        END

Инструкции как раз подобраны наихудшие: 1 такт исполнение, 32-разрядные из набора Thumb-2.

1. Отключаю кэш инструкций и данных, отключаю prefetch-buffer выборки.
2. Запускаю код на исполнение под отладчиком без точек останова.
3. Пока код выполняется, ставлю точку останова на строку
Код
b.w loop

и смотрю содержимое регистра R2 (считанное значение в 180МГц тактах): 0x8CB = 2251.
4. Время математики: 1000 однотактных 32-разрядных команд, 1000/4=250 циклов обращения к Flash-памяти по 128 бит. С учетом того, что WS=5, 5*250=1250 тактов накладных расходов на ожидание доступа к данным. Прибавляем такты выполнения команд: 1250 + 1000 = 2250. Что на 1 такт меньше считанного показания с системного регистра. Двигаемся дальше.
5. Включаем prefetch-buffer выборки и повторяем шаги 2-3. Содержимое CYCCNT = 1501.
6. Выключаем prefetch-buffer, включаем кэш. Содержимое CYCCNT = 2250. По-моему логично, поскольку в кэше хранятся адреса команд начала последних использованных подпрограмм и веток кода, а не сам код (в документации вроде про это написано).
7. Включаем prefetch-buffer и кэш. Содержимое CYCCNT = 1501.

Как видно, при включенном буфере предвыборки будет потеря производительности, однако если в коде будут использованы не только 32-разрядные инструкции Thumb-2, а 16-разрядные, скорее всего количество тактов совпадет с количеством инструкций между метками замера. Замерил - CYCCNT = 1001.
Отключаю prefetch - CYCCNT = 1251. Интересно, почему сейчас 1251, ведь 8 однотактных инструкций перекрывают 5WS при доступе к Flash... Это пока под вопросом, я разберусь.

Собственно говоря, этих сведений мне достаточно, чтобы полагать, что большого толку от широкой шины на Tiva-C не будет. Она сделана точно для таких же целей, для каких и ART-ускоритель в STM32 - обеспечить нулевое состояние задержки при выполнении смешанного (32-разрядного и 16-разрядного) кодов Thumb и Thumb-2.
Если сравнивать производительность выполнения 32-битного кода Thumb-2 STM32, работающего на частоте, допустим, 150МГц, над производительностью Tiva-C, работающего на 120МГц при выполнении того же 32-битного кода, то плюс широкой шине - бесспорно предвыборка 8 команд лучше чем предвыборка 4. Однако на реальной практике код представляет из себя смесь 16- и 32-разрядных инструкций, поэтому подобный метод расчета производительности не годится, нужны данные CoreMark или Dhrystone.
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 9 2018, 05:06
Сообщение #52


Гуру
******

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



Цитата(Arlleex @ May 7 2018, 22:56) *
7. Включаем prefetch-buffer и кэш. Содержимое CYCCNT = 1501.

Только зачем было делать столько телодвижений если уже из теории и следует эта цифра (250_выборок * 6_тактов_на_выборку = 1500) ? laughing.gif
Ваши измерения как раз и совпадают с теорией - значит выполнены правильно. laughing.gif

Цитата(Arlleex @ May 7 2018, 22:56) *
Как видно, при включенном буфере предвыборки будет потеря производительности, однако если в коде будут использованы не только 32-разрядные инструкции Thumb-2, а 16-разрядные, скорее всего количество тактов совпадет с количеством инструкций между метками замера. Замерил - CYCCNT = 1001.

Опять-же - берём в руки калькулятор и считаем:
Чтобы при длительности выборки ==6 тактов не было простоев из-за недозагрузки prefetch, нужно чтобы команды из этой выборки выполнялись как минимум те же 6 тактов.
А это возможно при 2*4+4*2 - т.е. в prefetch-пакете 2 шт. 32-битных команд + 4 шт. 16-битных. Т.е. - соотношение 32-битных к 16-битным должно быть как минимум 1/2.
А теперь возьмите и посмотрите код любого тяжёлого фильтра или какого-то другого тяжёлого алгоритма обработки данных, либо просто - большую сложную и хорошо оптимизированную функцию (в которой используется много регистров). Увидите, что подавляющее большинство команд как раз - 32-битные.
Только в простых функциях, где используется мало регистров, только в них бОльшее большинство команд 16-битные.
Если же написать на си какие-то операции с матрицами к примеру, в которых задействовано много переменных и скомпилировать с максимальным уровнем оптимизации, то там вообще почти все команды (с выхода компилятора IAR) будут 32-битные (IAR, имхо, плохо размещает данные по регистрам, не учитывая длину получающихся команд).
Конечно в таком потоке команд не будут все команды только однотактные. Предположим что в prefetch-блоке одна инструкция типа LDR или STR. Но тогда всё равно получается:
по размеру 3*4+2*2 = 16байт; по тактам 2+1+1+1+1 = 6тактов - только если в prefetch-блоке 3 команды 32-битные (одна из них - LDR/STR) + 2команды 16-битные - это граничный случай когда всё будет ещё успевать работать без остановок выполнения. А в реальном коде тяжёлых вычислений процентная доля 32-битных команд будет (имхо) всё-таки повыше.
А теперь ещё осталось вспомнить, что разговор идёт о Cortex-M4F. И вычисления с большой вероятностью будут не целочисленные, а с плавающей точкой. А где Вы видели 16-битные инструкции с float? А теперь ещё вспомним что регистров FPU гораздо больше чем целочисленных, что позволяет строить код с малым числом обращений с памяти, т.е. - на однотактных инструкциях в основном. Вот здесь то и получим существенную разницу.

Цитата(Arlleex @ May 7 2018, 22:56) *
Однако на реальной практике код представляет из себя смесь 16- и 32-разрядных инструкций

Да, Вы как-нить посмотрите на реальный код тяжёлых вычислений. Не тот код, который в обычных функциях со множеством ветвлений и малым количеством регистровых переменных, а на действительно вычислительный код (тем более с float). Ибо для обычных задач этих 120МГц и так - за глаза, а производительность я оценивал только для вычислительных задач.
Да, и ещё раз повторю: когда мы выбирали Tiva, не было STM32 на 180МГц, а были только максимум на 168МГц. А это разница по частоте всего на 40%. И часть из этих 40% покроется за счёт более широкой шины Tiva, так что останется выигрыш может процентов 20% (а в каких-то отдельных случаях может быть ещё и проигрыш, например - ISR со множеством переменных, редко выполняющийся (вытесненный из кеша) на Tiva может выполниться даже быстрее). А разница в 20% уже была для нас несущественна, на фоне выигрыша по ОЗУ и лучшей периферии.

Да и вообще: более слабая периферия приводит к дополнительным накладным вычислительным расходам (в случае STM32), что ещё сокращает разницу в скорости ядер. Уж не говоря о том, что многое из того, что мы сделали на Tiva, было невозможно сделать на STM32 (даже нонешних 180МГц). Это множество последовательных интерфейсов с полноценным FIFO и DMA, а также dual-SPI который позволили увеличить скорость работы с SPI-FLASH. А на STM32 мы бы ещё скорей всего не пролезли по скорости доступа к SPI-FLASH.
Go to the top of the page
 
+Quote Post
COMA
сообщение May 9 2018, 05:58
Сообщение #53


Знающий
****

Группа: Свой
Сообщений: 851
Регистрация: 28-08-04
Пользователь №: 559



Я для себя определил два варианта для перехода:
серия i.MX RT либо серия STM32H7
Go to the top of the page
 
+Quote Post
Arlleex
сообщение May 9 2018, 13:03
Сообщение #54


Местный
***

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



Цитата
Только зачем было делать столько телодвижений если уже из теории и следует эта цифра (250_выборок * 6_тактов_на_выборку = 1500) ?
Ваши измерения как раз и совпадают с теорией - значит выполнены правильно.

Теория, подтвержденная практикой - залог хорошего понимания природы вещей biggrin.gif
Просто очень любопытно стало, и протестил, пока время есть.
А вот насчет 1250 тактов при всех инструкциях в 16 бит не могу понять, как так получается. Перерыл кучу документации, есть даже вот такая картинка:


Но как бы я ни строил график растактовки конвейера, все равно не получается там 1250. Даже при учете, что процессор считывает сразу 2 инструкции, но декодинг все-таки последовательный, все равно не совпадают расчеты. Откуда там два лишних такта берется на выборку каждых 128 бит из Flash - не пойму.
Да и рисунок выше какой-то не шибко понятный, слова "инструкции, после того как извлечены, могут несколько тактов тупить прежде чем процессор их декодировать начнет" - с чего бы это, казалось бы? "До двух инструкций может быть выбрано за одно чтение" - а вот этот механизм вообще интересен. Как процессор понимает, что перед ним 32-битная или 16-битная команда? По идее он всегда читает 32 бита и смотрит на поле кода операции, ну да ладно, с этим понятно. Ну а если он читает такой порядок:
1. instr 1 (16 bit);
2. instr 2 (16 bit);
3. instr 3 (16 bit);
4. instr 4 (32 bit);
5. instr 5 (32 bit);
6. instr 6 (16 bit).

Вот забирает он первые 32 бита и понимает, что там первая инструкция 16-битная, и потом декодирует вторую инструкцию - понимает, что она 16-битная тоже.
Забирает он следующие 32 бита. Декодирует первую команду, смотрит на код операции второй команды - а она 32-битная оказывается. Надо дочитать еще 16 бит с шины. Считывает 32 вместо 16. Декодирует уже полное слово. В буфере у него остались 16 бит 5-й инструкции. Она тоже 32-битная - он опять делает такие махинации. Потом из буфера забирает шестую инструкцию и декодирует, она 16-битная, все в порядке.
Однако вроде как утверждается, что даже рядом стоящие команды смешанной разрядности не влияют на количество тактов их выполнения. Как оно тогда устроено?

P.S. Отвечаю сам себе на второй вопрос. Логика придумалась в голове + наблюдения за PC в отладчике:
1. Процессор всегда считывает целое слово в регистр команды по адресу, который хранится в PC.
2. Процессор декодирует старшее полуслово (см. ARMv7M Architecture Reference Manual) и смотрит, 16- или 32-битная эта команда:
- если 16-битная, процессор ее выполняет и увеличивает PC на 2;
- если 32-битная, процессор обрабатывает ее как 32-битную и увеличивает PC на 4.
После этого логика переходит на п.1 и так по кругу.

На первый вопрос (откуда 1250 тактов) ответа пока что не нашел.

Сообщение отредактировал Arlleex - May 9 2018, 14:40
Go to the top of the page
 
+Quote Post
Arlleex
сообщение May 9 2018, 15:26
Сообщение #55


Местный
***

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



Итак, выложу сюда две растактовки из экспериментов.
1. WS = 5, Prefetch-OFF, 32-bit Thumb-2 command.

Здесь A - Addressing cycle, F - Fetch, D - Decode, E - Execution.

Для выполнения 4 полноценных 32-битных команд необходимо 9 тактов.
1000/4 = 250 обращений к памяти, соответственно, 9*250 = 2250 тактов - это время выполнения 1000 32-битных команд.

2. WS = 5, Prefetch-ON, 32-bit Thumb-2 command.

Здесь A - Addressing cycle, F - Fetch, D - Decode, E - Execution.

Для выполнения 4 полноценных 32-битных команд необходимо 6 тактов, поскольку при первом Fetch адресуются следующие 128 бит Flash-памяти устройством Prefatch-ера, и в итоге мы получаем перехлест в 2 такта в сторону понижения производительности.
1000/4 = 250 обращений к памяти, соответственно, 6*250 = 1500 тактов - это время выполнения 1000 32-битных команд.

3. WS = 5, Prefetch-OFF, 16-bit Thumb-2 command.
Пока что пусто, т.к. не понимаю как ведет себя процессор и подсистема pipeline с 16-битными инструкциями.
4. WS = 5, Prefetch-ON, 16-bit Thumb-2 command.
Очевидно, станет понятно, если прояснится п. 3.

Сообщение отредактировал Arlleex - May 9 2018, 15:29
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 9 2018, 15:48
Сообщение #56


Гуру
******

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



Цитата(Arlleex @ May 9 2018, 18:26) *
Итак, выложу сюда две растактовки из экспериментов.
1. WS = 5, Prefetch-OFF, 32-bit Thumb-2 command.

А какой практический смысл в отключении предвыборки?
Go to the top of the page
 
+Quote Post
Arlleex
сообщение May 9 2018, 15:54
Сообщение #57


Местный
***

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



Никакого абсолютно. У меня в проектах он всегда включен.
Поэтому чисто спортивный интерес к поведению процессорного устройства.

Пишут в документации, что при напряжении питания менее 2.1В prefetch необходимо отключать. При этом процессор может тактироваться до 120МГц. Поэтому в некоторых случаях и будет необходимо знать растактовку CPU на 16-битных командах.

Вот еще пример, когда предвыборку отключать желательно. Я понимаю, что это косяк только STM32, скорее всего, но чем не причина...

Сообщение отредактировал Arlleex - May 9 2018, 16:03
Go to the top of the page
 
+Quote Post
Arlleex
сообщение Jul 6 2018, 05:17
Сообщение #58


Местный
***

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



Подниму свою же тему.
1. Программировал платку с XMC4800. И хотел найти ревизию MCU - беглым взглядом кроме как в обозначении самой микросхемы не нашел в Datasheet. На сайте у них все XMC4800 имеют последние две буквы AA. Глянул на МК помладше - там есть позиции AA, AB, AC... Я так понял это и есть ревизия?
2. Где узнать, какая ревизия ядра Cortex-M4F там стоит? Тоже довольно немаловажная информация, по которой лучше сразу скачать документацию нужной ревизии.

P.S. Отвечаю сам себе же.
Так же как и во всех других Cortex-Mx - в регистре IDCODE ревизия MCU, в CPUID - версия CPU.

Сообщение отредактировал Arlleex - Jul 6 2018, 05:27
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 6 2018, 08:05
Сообщение #59


Гуру
******

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



Цитата(Arlleex @ Jul 6 2018, 08:17) *
1. Программировал платку с XMC4800. И хотел найти ревизию MCU - беглым взглядом кроме как в обозначении самой микросхемы не нашел в Datasheet. На сайте у них все XMC4800 имеют последние две буквы AA. Глянул на МК помладше - там есть позиции AA, AB, AC... Я так понял это и есть ревизия?

Да. Для XMC4500 и XMC4700 - так и есть. Пишется в 3-й строчке на корпусе чипа.

PS: Ну и как впечатления от чипа? cool.gif
Go to the top of the page
 
+Quote Post
Arlleex
сообщение Jul 6 2018, 08:25
Сообщение #60


Местный
***

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



Цитата(jcxz @ Jul 6 2018, 12:05) *
PS: Ну и как впечатления от чипа? cool.gif

Ага, спасибо.
А впечатления, ммм, ну как бы кратко так сказать - это не STM32. Регистров действительно дофига и все расплывается в голове. Но это, думаю, временно laughing.gif
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 6 2018, 08:30
Сообщение #61


Гуру
******

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



Цитата(Arlleex @ Jul 6 2018, 11:25) *
А впечатления, ммм, ну как бы кратко так сказать - это не STM32. Регистров действительно дофига и все расплывается в голове. Но это, думаю, временно laughing.gif

Да, через полгодика-годик уже в целом многое запомнится и будет казаться "как это я раньше без всего этого великолепия обходился?" biggrin.gif
Go to the top of the page
 
+Quote Post
Arlleex
сообщение Jul 6 2018, 08:35
Сообщение #62


Местный
***

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



Цитата(jcxz @ Jul 6 2018, 12:30) *
Да, через полгодика-годик уже в целом многое запомнится и будет казаться "как это я раньше без всего этого великолепия обходился?" biggrin.gif

Кстати попутно вопрос позвольте задать.
Вы используете XMCLib или только хардкорный XMC4xxx.h и погнали кодить с референсом перед глазами? rolleyes.gif Я тут просто бегло глянул эту библиотеку - не совсем прикинул что к чему.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 6 2018, 08:36
Сообщение #63


Гуру
******

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



Цитата(Arlleex @ Jul 6 2018, 11:35) *
Вы используете XMCLib или только хардкорный XMC4xxx.h и погнали кодить с референсом перед глазами? rolleyes.gif Я тут просто бегло глянул эту библиотеку - не совсем прикинул что к чему.

3-й вариант. У меня все структуры-определения IO-периферии - свои.
Go to the top of the page
 
+Quote Post
Arlleex
сообщение Jul 6 2018, 09:07
Сообщение #64


Местный
***

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



Боюсь мне начальство не выделит времени на такие процедуры maniac.gif
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 6 2018, 09:50
Сообщение #65


Гуру
******

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



Цитата(Arlleex @ Jul 6 2018, 12:07) *
Боюсь мне начальство не выделит времени на такие процедуры maniac.gif

Начальство стоит над Вами с секундомером и мониторит все телодвижения??? maniac.gif
Бежать надо с такой работы! sm.gif
А вообще такая структура делается на лету по ходу изучения соответствующего периферийного блока, не занимая времени. Надеюсь - на изучение периферии время Вам выделяют? wink.gif
Go to the top of the page
 
+Quote Post
Arlleex
сообщение Jul 6 2018, 10:04
Сообщение #66


Местный
***

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



Цитата(jcxz @ Jul 6 2018, 13:50) *
Начальство стоит над Вами с секундомером и мониторит все телодвижения??? maniac.gif
Бежать надо с такой работы! sm.gif
А вообще такая структура делается на лету по ходу изучения соответствующего периферийного блока, не занимая времени. Надеюсь - на изучение периферии время Вам выделяют? wink.gif

Ну как сказать с секундомером... Спешка всегда и всюду laughing.gif Отсюда и бывают не до конца выловленные баги (по вечерам после работы вычищаю, если есть). Всегда хочется посидеть, лучше продумать алгоритм, поковырять досконально МК, узнать плюшки и фишки, но нужен только результат и никого не волнует, насколько крутой программный автомат я сделал.
Бежать, да вот куда? Везде такая суета, ИМХО wacko.gif
А описывать структуры - я на самом деле когда-то делал, но для AVR/PIC/ARM7. Времени у меня было побольше тогда sm.gif
Ну это все так, лирика. Больше склоняюсь к варианту, что файла описания регистров IO-периферии мне хватает. Но другое дело, если они по-уродски будут структурированы в XMC или названия не понравятся - буду переписывать. Благо с XMC я занимаюсь чисто для себя, для расширения кругозора в области существующих МК.

Сообщение отредактировал Arlleex - Jul 6 2018, 10:06
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 05:16
Рейтинг@Mail.ru


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