Обновить
73
Александр Козлов@alcotel

Инженер-электронщик

0,3
Рейтинг
46
Подписчики
Отправить сообщение

Исходные коды прошивки программного UART

Куда-то пропали. 404, говорит.

Это не совсем честная проверка:

При соединении двух разных устройств скорости могут отличаться до 3%. (поэтому встроенный в STM RC-генератор производитель и пытается калибровать до 1,5%)

В случае появления семпла 0 переходим в состояние rec и остаемся в rec пока не примет (1+8+1+2=12 бит).

Поэтому логичнее было бы после появления сэмпла 0 взять 1+8+1+0,5 битовых интервалов. То есть, перейти в IDLE уже на середине первого стоп-бита. Тогда и второй стоп становится ненужным.

Ещё из оптимизаций: через DMA читать не весь GPIO->IDR, а только нужный байт. Дока на STM32F4 это позволяет, вроде. И тогда ядро может обрабатывать сразу по 4 сэмпла. По крайней мере это разгрузит ядро в IDLE.

А после появления 0 становится известно, какие именно сэмплы находятся на середине битовых интервалов, остальные сэмплы можно не обрабатывать. Тут загрузка ядра и так выходит меньше, чем в IDLE.

В FPGA я приём немного по-другому делал: сначала побитный CDR, потом уже обработка кадра. Так логика выходила проще. В мк это не так удобно - слишком много мелкой работы.

Интересно, но не очень понятно. Почему исходник для RDL нельзя было написать, пользуясь структурами и атрибутами самого SystemVerilog? Или VHDL. Или C+-. А то получается: хочешь писать RTL - вот тебе HDL, хочешь сгенерить регистры - пиши SystemRDL, хочешь собрать top - пиши Chisel, хочешь автоматизацию инструментов - вот тебе TCL, а ещё Python куда-то лезет. Прям адский зоопарк. Одно приятно, что опенсорсных инструментов достаточно.

А с общепринятым для ARM форматом описания регистров SVD (который понимают отладчики, и из которого тоже доку и заголовки для С генерят) этот RDL как-то взаимодействует?

Ключевое слово - в руках. А когда вместо рук...

вот такие надутые клешни

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

с точки зрения "стандартная методика" тут ваша идея не выдерживает критики

Вот и я об том же. В таких вещах стандартное намного лучше, чем нестандартный колхоз, естественно. Протолкнуть свою методику измерений в принципе тоже реально, но когда это поле ещё не занято. А тут - вроде бы и занято, поскольку ЛЭП и в 500 кВ вполне себе существуют, например, ничего сверхъестественного. Но запросы по точности у меня чуть-чуть побольше.

С измерением тока меньше проблем - воткнул мультиметр, куда захочешь, и по блютусу снял показания. Хоть мегавольт на нём.

Ну, не прямо "куда захочешь", конечно. Есть ещё утечка через коронный разряд, и, может, какие-то другие штуки надо учитывать. Но у нас и ток нагрузки ощутимый вполне, тоже рентген, 1-2 кВт.

Раз уж вы более-менее высоковольтными вещами занимаетесь - не поделитесь опытом? Вдруг какая-то информация вам ближе.

Нужно измерить примерно 200 кВ=, желательно хотя-бы 0,1%. Если ещё методика похожа на стандартную, которую юридически можно приложить к тестам - это было бы просто супер.

Запрашивал у нескольких поставщиков измериловки - молчок, успешные менеджеры по продажам не поддерживают разговор. Дешёвый запасной вариант есть, конечно - поставить на плату 1000-2000 готовых резисторов 0,1%. Монтаж SMD не особо дорогой для робота, да и 0,1% резсторы - 1,5-4 рубля за штуку уже в РФ, даже не в Китае. Но методику измерений придётся тогда как-то доказывать.

Подтверждаю. Не так давно тут ребята из Wiren Board опытом даже поделились. Литиевый аккум, который всегда на зарядке, как минимум вспухает. Лечится сменой типа аккума (на более дорогой, естественно) или понижением зарядного напряжения с 4,2 до 4,0 В. (Но пойди-найди даже на просторах миллиардного Китая готовый зарядник на нестандартное напряжение. За 3 рубля, естественно. Всем же именно 7 шапочек надо)))

Одну я буквально недавно паяльником подпалил -

Я бы не стал бравировать таким личным примером. Звучит как

Avito: Сожгу вашу STM. Надёжно. Не дорого. Клоны - дешевле. По договорённости сожгу ещё что-нибудь, даташит прилагать.

Тогда логично выходит. Стандартное у CE, FCC или EAC напряжение пробоя никто не отменял, а размер Вт/кг примерно постоянный. ТАшки - это вы ведь про такие большие зелёные напрочь залитые компаундом трансформаторы? Тогда, наверное, FCC и ГОСТ, остальных ещё не было))

Прикалывались тут недавно - в СГС ёмкость измеряется в сантиметрах. Ну в общем миллилитры, см3 которые - это ж тоже в какой-то степени ёмкость. И не в какой-то степени, а конкретно в третей. А ёмкость кондёра, который стандартно, не задумываясь, обычно ставят на любой порт цифрового питания -

километр
0,1 мкФ
0,1 мкФ

Но с тотальным переходом на Систему Идиниц всё поменялось. Как далеко до Таллинна? Оказывается, всего-то 30 мкФ))

;))

Вот и я решил - обманули, ЦАП забыли поставить! Смотрю логическим анализатором выход на наушники, и вижу только 0 и 1.

В памяти хранятся 0 и 1

Это раньше так было. Я вот взял более современную IDE, написал
const int x=42; , и у меня в памяти хранится 42, а не только 0 и 1.

Да, у STM набор делителей для SPI небольшой.

Таймером же можно задать практически любую частоту.

... и подать её на SPI-slave снаружи в качестве SCLK

Добавлю к предложениям @nerudo:

1) У осциллографов обычно есть режим послесвечения (persist обычно по-ихнему). Будет отлично видно пиковый джиттер периода.

2) Если есть анализатор спектра - естественно воспользоваться им. Можно будет пересчитать ширину полосы в среднеквадратичный джиттер фазы.

Если разрешения не хватает, можно уменьшить тактовую частоту мк. И логично было бы измерять на мк, загруженном другими полезными задачами, и а не while(1); .

Для чистоты эксперимента хорошо бы сравнить результаты с таким-же меандром, сформированным аппаратным таймером.

Как вы яхту назовёте, так она и поплывёт (с)

По идее можно назвать и soft serial , но с аппаратным ускорением!

Не очень понятно, для чего нужна Arduino. Разве нельзя воспользоваться /dev/i2c-xx самого ноутбука, когда он работает от сети?

У вас код хранится в RAM и Flash уже в виде напряжения. Так что тут никакого цифро-аналогового преобразования не происходит.

Приоритет срабатывает, когда запросы на DMA приходят одновременно. Если DMA уже начало обслуживать один запрос, следующие будут ждать независимо от приоритета.

Ядро мк тоже и в память, и на шину AHB любит совать свои грязные запросы. В вашем целевом мк, например, из мастеров есть ещё Ethernet и USB. Так что надеяться, что как на SPI, будет всё с точностью в наносекунды - не стоит.

А почему назвали ЦАПом? Это же по сути формирователь цифрового паттерна.

Чтобы изменить пиксель, нужно сначала считать байт из видеопамяти, (а это значит надо еще и реализовать чтение на уровне шины), наложить маску и записать обратно.

Памяти-то может и немного, но адресное пространство же огромное. Можно и побитную адресацию сделать, или полноценный bit-band.

Австралия этот там, где чиновник законы математики отменить пытался?

... и там, где один товарищ в 2001 году запатентовал колесо. Странное, короче, место.

Тут логика немного сломалась, или очепятка:

Но разряд разряду рознь: чтобы разряд умел b состояний, железа в него надо вложить примерно пропорционально b. Один триггер на два состояния, три — на три.

Не понятно, откуда взялась формула полной стоимости. Почему именно "железа в него надо вложить примерно пропорционально b"?

Почему не (b-1) ? Это количество порогов в b-ичной логике. Почему не b2 ? Это размер таблицы истинности логического элемента. Или (b-1)2 ? При таких вводных оптимум очень сильно смещается в сторону b=2. А ещё не учтено, как от b зависит быстродействие. Оно ведь в полную стоимость тоже входит.

В общем, на этой формуле можно было статью и закончить на самом деле.

В той же опте такого нет.

PAM-4

1
23 ...

Информация

В рейтинге
2 467-й
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Инженер встраиваемых систем, Разработчик электроники
Ведущий
От 280 000 ₽
Разработка электроники
Разработка печатных плат
FPGA
Программирование микроконтроллеров
Обработка звука