Миландр

Ключевым подразделением нашей компании
является Центр Проектирования интегральных микросхем
Текущее время: 2021-окт-23 18:25

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 279 сообщений ]  На страницу « 115 16 17 18 19 »
Автор Сообщение
СообщениеДобавлено: 2021-июл-20 10:03 
Не в сети

Зарегистрирован: 2010-авг-30 19:12
Сообщения: 544
еще про неактуальную информацию
Модуль USB. Конечные точки имеют размер буфера 64 байта. Зачем нужен регистр MDR_USB->SEP[x].RXFDC_H ?
Модуль DMA (кровь слезы).
пункт 39.3.1 Таблица 374. заголовок "источник sreg" должно быть "источник sreq". Соседняя колонка - аналогично.
пункт 29.3.2
Цитата:
Блок содержит набор регистров, позволяющих настраивать контроллер, используя
ведомый APB интерфейс. Регистры занимают адресное пространство емкостью 4 кбайт.
Вот что пользователь МК (разработчик, программист) с ними может сделать? Даже проверить, что они реально существуют - проблема. А уж настраивать контроллер ...
пункт 29.4.1
Цитата:
контроллер находится не в тестовом режиме, что выполняется установкой в состояние
логического нуля разряда управления int_test_en bit[C].
во всей документации нет больше такого регистра (бита), а требование по его установке в 0 есть.


Вернуться к началу
СообщениеДобавлено: 2021-июл-20 11:43 
Не в сети
Support
Аватара пользователя

Зарегистрирован: 2018-авг-10 23:14
Сообщения: 448
Организация: АО «ПКК Миландр»
Откуда: Зеленоград
Professor Chaos писал(а): *
Рисунок 27. Убрать сигнал ETH2_CLK. Его в данных МК нет. Видимо, остался после копирования этого блока делителей частоты из спецификации на 1986ВЕ1.

28.4.2
Как понимать требование F_UART_CLK <= (5/3)*F_CPU_CLK ?
Покажите по рисунку 27, как можно сделать так, чтобы F_UART_CLK была БОЛЬШЕ, чем F_CPU_CLK. Я вижу только, что она может быть равна или меньше, но никак не больше. Максимум, что можно получить, это F_UART_CLK = HCLK =F_CPU_CLK.
Здравствуйте!

В дополнении к прошлому поясняющему письму сообщаю, что упоминание ETH2_CLK из спецификации на семейство микроконтроллеров 1986ВЕ9х будет убрано. Информация касательно соотношения частот CPU_CLK и UARTCLK (соответствующие подразделы "Тактовые сигналы" на контроллер UART из документации) будет убрана из спецификаций на следующие микроконтроллеры: 1986ВЕ9х, 1901ВЦ1Т, 1986ВЕ1Т, 1986ВЕ3Т - в этих микроконтроллерах частота периферийных блоков привязана к частоте ядра. Во всех других микроконтроллерах, выпускаемых компанией Миландр, частота периферийных блоков может быть независимой от частоты ядра, и в таком случае соотношение частот CPU_CLK и UARTCLK должно выполняться, поэтому информация об этом в соответствующих спецификациях останется. Спасибо за помощь.

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
СообщениеДобавлено: 2021-июл-21 10:53 
Не в сети
Support
Аватара пользователя

Зарегистрирован: 2018-авг-10 23:14
Сообщения: 448
Организация: АО «ПКК Миландр»
Откуда: Зеленоград
редактор писал(а): *
еще про неактуальную информацию
Модуль USB. Конечные точки имеют размер буфера 64 байта. Зачем нужен регистр MDR_USB->SEP[x].RXFDC_H ?
Модуль DMA (кровь слезы).
пункт 39.3.1 Таблица 374. заголовок "источник sreg" должно быть "источник sreq". Соседняя колонка - аналогично.
пункт 29.3.2
Цитата:
Блок содержит набор регистров, позволяющих настраивать контроллер, используя
ведомый APB интерфейс. Регистры занимают адресное пространство емкостью 4 кбайт.
Вот что пользователь МК (разработчик, программист) с ними может сделать? Даже проверить, что они реально существуют - проблема. А уж настраивать контроллер ...
пункт 29.4.1
Цитата:
контроллер находится не в тестовом режиме, что выполняется установкой в состояние
логического нуля разряда управления int_test_en bit[C].
во всей документации нет больше такого регистра (бита), а требование по его установке в 0 есть.
Здравствуйте!

Благодарим Вас за данные замечания. Подробнее по пунктам:
редактор писал(а):
>> Модуль USB. Конечные точки имеют размер буфера 64 байта. Зачем нужен регистр MDR_USB->SEP[x].RXFDC_H ?
Обратите, пожалуйста, внимание, что далее по описанию регистров для SEP[x].RXFDC нет разделения на старшую и младшую части, есть только один регистр. Упоминания SEP[x].RXFDC_H и SEP[x].RXFDC_L присутствуют только в таблице 160 "Описание регистров управления контроллером USB интерфейса", откуда при плановой корректировке они будут исключены, останется один регистр SEP[x].RXFDC, расположенный по адресам 0x188, 0x208, 0x288, 0x308 (для каждой оконечной точки режима SLAVE). Аналогично для регистра MDR_USB->HRXFDC в режиме HOST - в таблице 160 останется регистр HRXFDC, расположенный по адресу 0x88.
редактор писал(а):
Модуль DMA (кровь слезы).
пункт 39.3.1 Таблица 374. заголовок "источник sreg" должно быть "источник sreq". Соседняя колонка - аналогично.
Вы правы, любые упоминания sreg и reg недопустимы, так как нарушают целостность повествования в рамках модуля DMA. Помимо того, что будут исправлены заголовки столбцов в таблице 374 "Распределение каналов DMA", будут также исправлены таблицы из спецификации со следующими номерами: 417, 419.
редактор писал(а):
пункт 29.3.2

Блок содержит набор регистров, позволяющих настраивать контроллер, используя
ведомый APB интерфейс. Регистры занимают адресное пространство емкостью 4 кбайт.


Вот что пользователь МК (разработчик, программист) с ними может сделать? Даже проверить, что они реально существуют - проблема. А уж настраивать контроллер ...
С точки зрения программиста эта информация (а также из пункта 29.3.3 "Блок, подключенный к шине AHB") действительно может быть бесполезной, когда как для разработчиков данная информация позволяет понять, что доступ к регистрам будет медленнее, чем к памяти на шине AHB, а также то, что на шине APB не будет блочных транзакций, обращений по невыровненным по 32 разряда адресам. Информация будет оставлена.
редактор писал(а):
пункт 29.4.1

контроллер находится не в тестовом режиме, что выполняется установкой в состояние
логического нуля разряда управления int_test_en bit[C].


во всей документации нет больше такого регистра (бита), а требование по его установке в 0 есть.
Данный бит реализован по RTL внутри блока DMA и действительно внутри логики может влиять на обмен, однако, для пользователя это неважно, и должна быть создана абстракция от этого бита, поэтому любое упоминание о нём будет исключено из документации.

Огромное спасибо.

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
СообщениеДобавлено: 2021-июл-21 17:45 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1588
Откуда: Тула
Lampadov писал(а): *
редактор писал(а):
пункт 29.3.2
Блок содержит набор регистров, позволяющих настраивать контроллер, используя
ведомый APB интерфейс. Регистры занимают адресное пространство емкостью 4 кбайт.


Вот что пользователь МК (разработчик, программист) с ними может сделать? Даже проверить, что они реально существуют - проблема. А уж настраивать контроллер ...
С точки зрения программиста эта информация (а также из пункта 29.3.3 "Блок, подключенный к шине AHB") действительно может быть бесполезной, когда как для разработчиков данная информация позволяет понять, что доступ к регистрам будет медленнее, чем к памяти на шине AHB, а также то, что на шине APB не будет блочных транзакций, обращений по невыровненным по 32 разряда адресам. Информация будет оставлена.
Признаки, обуславливающие различия между "программистом" и "разработчиком" мне не известны, но обратить внимание специалиста, читающего документацию, на ограничения шины APB относительно AHB (информация выделена мной в цитате) будет уместно, можно дополнить СП.

_________________
сочувствующий…


Вернуться к началу
СообщениеДобавлено: 2021-июл-22 11:05 
Не в сети

Зарегистрирован: 2010-авг-30 19:12
Сообщения: 544
Если раздел ДМА подлежит правке, тогда есть следующие дополнительные пожелания.
1.Указать разницу между запросами req и sreq.
2.В табл.374 указать какие флаги являются источником req-запроса, а какие формируют sreq-запрос.
3.в п.29.3.7 указать как работает каждый метод защиты. (какая между ними разница помимо названия), и желательно, рекомендации по их применению.
4. Необязательный. В п.29.4.5, возможно, необходимо обратить внимание на допустимость (недопустимость) использовать в режимах b100, b101 в качестве адреса приемника (передатчика) адреса периферийных устройств.


Вернуться к началу
СообщениеДобавлено: 2021-июл-22 17:35 
Не в сети
Support
Аватара пользователя

Зарегистрирован: 2018-авг-10 23:14
Сообщения: 448
Организация: АО «ПКК Миландр»
Откуда: Зеленоград
prostoRoman писал(а): *
Lampadov писал(а): *
редактор писал(а):
пункт 29.3.2
Блок содержит набор регистров, позволяющих настраивать контроллер, используя
ведомый APB интерфейс. Регистры занимают адресное пространство емкостью 4 кбайт.


Вот что пользователь МК (разработчик, программист) с ними может сделать? Даже проверить, что они реально существуют - проблема. А уж настраивать контроллер ...
С точки зрения программиста эта информация (а также из пункта 29.3.3 "Блок, подключенный к шине AHB") действительно может быть бесполезной, когда как для разработчиков данная информация позволяет понять, что доступ к регистрам будет медленнее, чем к памяти на шине AHB, а также то, что на шине APB не будет блочных транзакций, обращений по невыровненным по 32 разряда адресам. Информация будет оставлена.
Признаки, обуславливающие различия между "программистом" и "разработчиком" мне не известны, но обратить внимание специалиста, читающего документацию, на ограничения шины APB относительно AHB (информация выделена мной в цитате) будет уместно, можно дополнить СП.
Здравствуйте!

Обратите, пожалуйста, внимание, что описанные мной дополнения к подразделам DMA, связанных с шинами AHB/APB, по большей части имеют отношение к официальной документации от ARM, как разработчика стандарта AMBA. Информация в спецификации не лишняя в том плане, что пользователь при желании, ознакомившись с документацией на стандарты от ARM, будет представлять, как на уровне архитектуры внутри микроконтроллера выполнено подключение блока DMA: что оно в общем виде выполнено для обмена данными в рамках высокоскоростной шины AHB-Lite, что регистры записываются через шину APB и так далее. Спасибо.

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
СообщениеДобавлено: 2021-июл-22 17:54 
Не в сети
Support
Аватара пользователя

Зарегистрирован: 2018-авг-10 23:14
Сообщения: 448
Организация: АО «ПКК Миландр»
Откуда: Зеленоград
редактор писал(а): *
Если раздел ДМА подлежит правке, тогда есть следующие дополнительные пожелания.
1.Указать разницу между запросами req и sreq.
2.В табл.374 указать какие флаги являются источником req-запроса, а какие формируют sreq-запрос.
3.в п.29.3.7 указать как работает каждый метод защиты. (какая между ними разница помимо названия), и желательно, рекомендации по их применению.
4. Необязательный. В п.29.4.5, возможно, необходимо обратить внимание на допустимость (недопустимость) использовать в режимах b100, b101 в качестве адреса приемника (передатчика) адреса периферийных устройств.
Здравствуйте!

Обратите, пожалуйста, внимание, что Вы используете не последнюю версию спецификации на семейство микроконтроллеров 1986ВЕ9х. Актуальная всегда доступна на странице любой микросхемы из семейства с официального сайта, в разделе "Документация" (пр. 1986ВЕ92У)
редактор писал(а):
1.Указать разницу между запросами req и sreq.
Поясняющая информация будет внесена в спецификацию.
редактор писал(а):
2.В табл.374 указать какие флаги являются источником req-запроса, а какие формируют sreq-запрос.
Обратите, пожалуйста, внимание, что флаги запроса DMA со стороны UART и SSP не отследить через стандартные статусные регистры рассматриваемых блоков (есть некоторые внутренние сигналы внутри RTL на блоки, в которых говорится, что данные имеются и можно начинать их пересылку). Для пользователя важно, что просто идёт пересылка данных с помощью DMA, о внутренних механизмах в данном случае ему знать не требуется. Для таймеров общего назначения и АЦП всё немного прозрачнее:

- Со стороны АЦП флаг запроса DMA отрабатывает по факту завершения преобразования, этот флаг легко отслеживается из регистра ADCx_STATUS, поле Flg_REG_EOCIF;
- Со стороны таймеров общего назначения вариативно можно выбрать, по какому событию будет отправлен запрос DMA согласно регистру DMA_RE каждого из таймеров, при этом отслеживать возникновение любого из событий можно в регистре STATUS.

Соответственно, для таймеров и АЦП информация с моей стороны в таблице с распределением каналов DMA будет внесена.
редактор писал(а):
3.в п.29.3.7 указать как работает каждый метод защиты. (какая между ними разница помимо названия), и желательно, рекомендации по их применению.
Обратите, пожалуйста, внимание, что информация из спецификации об упоминании сигналов HPROT будет полностью исключена, поскольку со стороны мастера (DMA) на шине AHB-Lite при подключении на периферийные блоки сигналы HPROT не подключены, то есть физически внутри он их отправляет (первый младший бит всегда единица, поскольку доступ к данным необходимо гарантировать всегда, остальные биты HPROT можем формировать в рамках настройки контроллера DMA), но в пустоту. Такое подключение регламентирует сама ARM, если не планируется вводить режимы защиты данных. Это ценное замечание с Вашей стороны.
редактор писал(а):
4. Необязательный. В п.29.4.5, возможно, необходимо обратить внимание на допустимость (недопустимость) использовать в режимах b100, b101 в качестве адреса приемника (передатчика) адреса периферийных устройств.
Спасибо за информацию. Эти пояснения можно не вводить в спецификацию.

Спасибо за обращение.

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
 Заголовок сообщения: Опечатки в спецификации
СообщениеДобавлено: 2021-авг-08 11:45 
Не в сети

Зарегистрирован: 2021-май-26 16:53
Сообщения: 2
Организация: Ярославский радиозавод
При чтении документации, нашёл некоторое количество опечаток.
Спецификация "Версия 3.20.1 от 15.05.2020"
В "Таблица 92 – Описание бит регистра ADC_MCO_CLOCK" расшифровка битов 5,4 есть ошибка, должно быть ADC_C2
В "Таблица 94 – Описание бит регистра RTC_CLOCK" расшифровка битов "Биты выбора делителя для HSE_C1" неверна, должно быть просто HSE, не HSE_C2
В "Таблица 94 – Описание бит регистра RTC_CLOCK" расшифровка битов "Биты выбора делителя для HSI_C1" неверна, должно быть просто HSI, не HSI_C2
В "Таблица 98 – Описание бит регистра CAN_CLOCK" расшифровка битов 24 неверна, должно быть "на CAN1"
В "Таблица 141 – Описание регистров блока PVD" расшифровка "Флаг разрешения прерывания от датчика PVBD", а ранее было написано, что датчик Уровень срабатывания PBVD от BU CC" - как правильно называется датчик?
В "Таблица 488 – Электрические параметры микросхемы" и "Таблица 490 – Справочные данные" отсутствует параметр "Входное сопротивление АЦП" и "Выходное сопротивление ЦАП". Если брать параметр "входное сопротивление тракта АЦП" из раздела "23.7 Время заряда внутренней емкости", то он там заявлен как 500 Ом, что делает невозможным использование АЦП для контроля за входной сетью (то есть процессор питается ПОСЛЕ преобразователя, скажем, 24В в 3,3В, но должен контролировать именно 24В, для этого обычно используется резистивный делитель, который можно рассчитать только зная внутреннее сопротивление АЦП. С учётом того, что в моей схеме делитель имеет сопротивление 10кОм на корпус и показания АЦП весьма хорошо соответствуют показаниям внешнего вольтметра, я полагаю, что сопротивление АЦП не ниже 0,1МОм.
В главе "28.1.1 Основные характеристики модуля UART" написано "стартового и стопового бит, а та же бита контроля четности" - опечатка, имелось в виду "а так же"
Контроллер схемы компаратора, п. 25.4, в спецификации написано "сигнал Out может быть проинвертирован с помощью бита INV и выдан на вывод микросхемы OUT_COMP". Возникает вопрос: влияет ли бит INV на работу прерывания: при INV=0 прерывание генерируется по положительному фронту, а при INV=1 - по отрицательному? В даташите на STM32 чётко и ясно нарисовано, что формирование EXTI находится после инвертора, а значит, можно формировать прерывание по нужному переходу.
В "Таблица 278 – Описание бит регистра CHy_CNTRL" в описании CHSEL[1:0] написано "по входному каналу CHxi", хотя предполагается CHxy.
На "Рисунок 80. Структурная схема блока захвата на примере канала 1" в контроллере выбора фронтов на канале 3 нижний сигнал мультиплексора обозначен как FE CH2, а должен быть FE CH3.
В "28.9.1 Общая информация" есть фраза "(за исключением специально оговоренных случаев, прим. перев)" - примечание КАКОГО переводчика?
В "Таблица 364 – Регистр UARTLCR_H" указано примечание: "Резерв. Не модифицируйте. При чтении выдаются нули." - я так понимаю, что просто надо писать нули, потому что узнать, какое там значение, всё-равно невозможно?
В Таблице 298 - бит Cfg_M_REF "внутренне опорное" - пропущено "е"
В качестве пожелания, ОЧЕНЬ хотелось бы, чтобы прерывания INT1...INT4 (или хотя бы некоторые из них) УМЕЛИ работать по фронту сигнала, а не только по высокому уровню. КРАЙНЕ неудобно эмулировать подобное поведение постоянно включая и отключая прерывание через NVIC, на STM32 это реализовано намного удобнее.


Вернуться к началу
СообщениеДобавлено: 2021-авг-09 09:35 
Не в сети

Зарегистрирован: 2010-авг-30 19:12
Сообщения: 544
Цитата:
В качестве пожелания, ОЧЕНЬ хотелось бы, чтобы прерывания INT1...INT4 (или хотя бы некоторые из них) УМЕЛИ работать по фронту сигнала, а не только по высокому уровню.
Для этих целей рекомендуют использовать таймер в режиме захвата.

По дополнениям и уточнениям - список вопросов к описанию модуля USB
1. П.20.1 состояние сброса удерживать10 тактов от частоты CPU или USB. (В библиотеке цикл i<1000)
2. Поправить нумерацию битов в регистре SC (SCTXL[0:1] - SC_TX_LINE_STATE[1] SC_TX_LINE_STATE[2] в одном случае нумерация 0-1, в другом 1-2)
3. EPRDY - завершение передачи - наверное надо изменить на завершение транзакции (как для EPEN).
Иначе возникает неоднозначность - передача - это транзакция IN (в терминах USB 2.0). Но без установки этого флага EP не работает на прием (транзакция OUT/SETUP не будет выполнена).
4. Регистр MDR_USB->SIS бит SC_RESUME - наверное неточный перевод. Состояние повтора чего?? По смыслу вроде должно быть возобновление активности на линии после ее остановки (выход из SUSPEND режима). Но не понятно, зачем отдельный флаг, если активность можно определить по SOF/
5. Рис.40,41. Стрелки указывают какой кадр вызывает установку флага. Флаги выставляются по мере поступления кадров (то есть события вызываются со сдвигом по времени) или флаги выставляются по завершении транзакции (после фазы EOP).
6. Для большинства регистров значение неиспользуемых битов указано 0. В реальности отладчик показывает для многих регистров 1 в младшем разряде неиспользуемого поля.


Вернуться к началу
 Заголовок сообщения: Re: Опечатки в спецификации
СообщениеДобавлено: 2021-авг-09 12:06 
Не в сети
Support
Аватара пользователя

Зарегистрирован: 2018-авг-10 23:14
Сообщения: 448
Организация: АО «ПКК Миландр»
Откуда: Зеленоград
Python писал(а): *
При чтении документации, нашёл некоторое количество опечаток.
Спецификация "Версия 3.20.1 от 15.05.2020"
В "Таблица 92 – Описание бит регистра ADC_MCO_CLOCK" расшифровка битов 5,4 есть ошибка, должно быть ADC_C2
В "Таблица 94 – Описание бит регистра RTC_CLOCK" расшифровка битов "Биты выбора делителя для HSE_C1" неверна, должно быть просто HSE, не HSE_C2
В "Таблица 94 – Описание бит регистра RTC_CLOCK" расшифровка битов "Биты выбора делителя для HSI_C1" неверна, должно быть просто HSI, не HSI_C2
В "Таблица 98 – Описание бит регистра CAN_CLOCK" расшифровка битов 24 неверна, должно быть "на CAN1"
В "Таблица 141 – Описание регистров блока PVD" расшифровка "Флаг разрешения прерывания от датчика PVBD", а ранее было написано, что датчик Уровень срабатывания PBVD от BU CC" - как правильно называется датчик?
В "Таблица 488 – Электрические параметры микросхемы" и "Таблица 490 – Справочные данные" отсутствует параметр "Входное сопротивление АЦП" и "Выходное сопротивление ЦАП". Если брать параметр "входное сопротивление тракта АЦП" из раздела "23.7 Время заряда внутренней емкости", то он там заявлен как 500 Ом, что делает невозможным использование АЦП для контроля за входной сетью (то есть процессор питается ПОСЛЕ преобразователя, скажем, 24В в 3,3В, но должен контролировать именно 24В, для этого обычно используется резистивный делитель, который можно рассчитать только зная внутреннее сопротивление АЦП. С учётом того, что в моей схеме делитель имеет сопротивление 10кОм на корпус и показания АЦП весьма хорошо соответствуют показаниям внешнего вольтметра, я полагаю, что сопротивление АЦП не ниже 0,1МОм.
В главе "28.1.1 Основные характеристики модуля UART" написано "стартового и стопового бит, а та же бита контроля четности" - опечатка, имелось в виду "а так же"
Контроллер схемы компаратора, п. 25.4, в спецификации написано "сигнал Out может быть проинвертирован с помощью бита INV и выдан на вывод микросхемы OUT_COMP". Возникает вопрос: влияет ли бит INV на работу прерывания: при INV=0 прерывание генерируется по положительному фронту, а при INV=1 - по отрицательному? В даташите на STM32 чётко и ясно нарисовано, что формирование EXTI находится после инвертора, а значит, можно формировать прерывание по нужному переходу.
В "Таблица 278 – Описание бит регистра CHy_CNTRL" в описании CHSEL[1:0] написано "по входному каналу CHxi", хотя предполагается CHxy.
На "Рисунок 80. Структурная схема блока захвата на примере канала 1" в контроллере выбора фронтов на канале 3 нижний сигнал мультиплексора обозначен как FE CH2, а должен быть FE CH3.
В "28.9.1 Общая информация" есть фраза "(за исключением специально оговоренных случаев, прим. перев)" - примечание КАКОГО переводчика?
В "Таблица 364 – Регистр UARTLCR_H" указано примечание: "Резерв. Не модифицируйте. При чтении выдаются нули." - я так понимаю, что просто надо писать нули, потому что узнать, какое там значение, всё-равно невозможно?
В Таблице 298 - бит Cfg_M_REF "внутренне опорное" - пропущено "е"
В качестве пожелания, ОЧЕНЬ хотелось бы, чтобы прерывания INT1...INT4 (или хотя бы некоторые из них) УМЕЛИ работать по фронту сигнала, а не только по высокому уровню. КРАЙНЕ неудобно эмулировать подобное поведение постоянно включая и отключая прерывание через NVIC, на STM32 это реализовано намного удобнее.
Здравствуйте!

Спасибо за найденные замечания, Вы делаете огромный вклад в развитие документации. Обратите, пожалуйста, внимание, что на сегодняшний день актуальной версией спецификации на семейство микроконтроллеров 1986ВЕ9х является версия с номером 3.22.0 от 04.08.2021: в этой версии следующее Ваше замечание исправлено:
Python писал(а):
На "Рисунок 80. Структурная схема блока захвата на примере канала 1" в контроллере выбора фронтов на канале 3 нижний сигнал мультиплексора обозначен как FE CH2, а должен быть FE CH3.
Теперь по каждому отдельному пункту, при этом важно отметить, что замечания, принятые на исправление, будут исправлены при плановой корректировке спецификации со стороны технических писателей, о сроках не сообщается:
Python писал(а):
В "Таблица 92 – Описание бит регистра ADC_MCO_CLOCK" расшифровка битов 5,4 есть ошибка, должно быть ADC_C2
Замечание принято, будет исправлено.
Python писал(а):
В "Таблица 94 – Описание бит регистра RTC_CLOCK" расшифровка битов "Биты выбора делителя для HSE_C1" неверна, должно быть просто HSE, не HSE_C2
В "Таблица 94 – Описание бит регистра RTC_CLOCK" расшифровка битов "Биты выбора делителя для HSI_C1" неверна, должно быть просто HSI, не HSI_C2
Замечания приняты, будет исправлено как для HSI, так и для HSE.
Python писал(а):
В "Таблица 98 – Описание бит регистра CAN_CLOCK" расшифровка битов 24 неверна, должно быть "на CAN1"
Замечание принято, будет исправлено.
Python писал(а):
В "Таблица 141 – Описание регистров блока PVD" расшифровка "Флаг разрешения прерывания от датчика PVBD", а ранее было написано, что датчик Уровень срабатывания PBVD от BU CC" - как правильно называется датчик?
По RTL датчик обозначается как PVBD, поэтому правильно таблицу регистра PVDCS оставить в текущем виде, а строки таблицы с типовыми уровнями напряжений детектора питания, где имеются упоминания PBVD, скорректировать.
Python писал(а):
В "Таблица 488 – Электрические параметры микросхемы" и "Таблица 490 – Справочные данные" отсутствует параметр "Входное сопротивление АЦП" и "Выходное сопротивление ЦАП". Если брать параметр "входное сопротивление тракта АЦП" из раздела "23.7 Время заряда внутренней емкости", то он там заявлен как 500 Ом, что делает невозможным использование АЦП для контроля за входной сетью (то есть процессор питается ПОСЛЕ преобразователя, скажем, 24В в 3,3В, но должен контролировать именно 24В, для этого обычно используется резистивный делитель, который можно рассчитать только зная внутреннее сопротивление АЦП. С учётом того, что в моей схеме делитель имеет сопротивление 10кОм на корпус и показания АЦП весьма хорошо соответствуют показаниям внешнего вольтметра, я полагаю, что сопротивление АЦП не ниже 0,1МОм.
Входное сопротивление АЦП действительно достаточно мало и составляет примерно 500 Ом (фактически речь об RC-цепочке внутри УВХ), при этом внутренняя емкость конденсатора ключа в составе УВХ АЦП имеет номинал 15-20 пФ. Для качественных преобразований Вам необходимо и достаточно рассчитать максимальное выходное сопротивление источника Rain (см. подраздел 23.7 "Время заряда внутренней ёмкости" актуальной версии спецификации). Если внешняя обвязка вокруг контроллера АЦП сложная, то важно следить и за внешними емкостями, поскольку это может организовать внешнюю RC-цепь, и в момент открытия ключа на входе АЦП будет происходить перераспределение заряда между внешней и внутренней емкостями, что в конечном счете выльется на выходе АЦП в ошибку (так или иначе подразумевается, что есть разница в номиналах внешней и внутренней RC-цепочки в несколько раз и до порядков, соответственно, всегда будет происходить перетягивание каната). Соответственно, необходимо либо отказываться от внешней емкости, либо значительно увеличивать её, и таким образом при подключении внутренней емкости и при перезаряде их, общее изменение будет незначительным, так как внутренняя емкость будет много меньше внешней.
Python писал(а):
В главе "28.1.1 Основные характеристики модуля UART" написано "стартового и стопового бит, а та же бита контроля четности" - опечатка, имелось в виду "а так же"
Замечание принято, будет исправлено.
Python писал(а):
Контроллер схемы компаратора, п. 25.4, в спецификации написано "сигнал Out может быть проинвертирован с помощью бита INV и выдан на вывод микросхемы OUT_COMP". Возникает вопрос: влияет ли бит INV на работу прерывания: при INV=0 прерывание генерируется по положительному фронту, а при INV=1 - по отрицательному? В даташите на STM32 чётко и ясно нарисовано, что формирование EXTI находится после инвертора, а значит, можно формировать прерывание по нужному переходу.
Бит INV блока компаратора будет влиять на работу прерываний, но здесь важно провести аналогию, что фактически происходит, когда данный бит выставлен. Фактически в ОУ блока входы "+" и "-" меняются местами при выставленном бите INV, соответственно, теперь если уровень на входе "-" будет больше, чем на "+", то цифровой выход OUT будет выставлен в логическую единицу, при этом прерывание будет сформировано единожды и также при фронте приходящего сигнала.
Python писал(а):
В "Таблица 278 – Описание бит регистра CHy_CNTRL" в описании CHSEL[1:0] написано "по входному каналу CHxi", хотя предполагается CHxy.
Замечание принято, будет исправлено как в упоминаемом регистре, так и в регистре CHy_CNTRL2 (аналогичное поле, но применимое к CCR1).
Python писал(а):
В "28.9.1 Общая информация" есть фраза "(за исключением специально оговоренных случаев, прим. перев)" - примечание КАКОГО переводчика?
Замечание принято, упоминание "прим. перев" в целом необходимо исключать из текущего описания, поскольку речь о регистрах блока UART, где некоторые поля части регистров по сбросу не имеют значение нуля (см. таблицу 357 "Обобщенные данные о регистрах устройства" - исправление будет отправлять на эту таблицу).
Python писал(а):
В "Таблица 364 – Регистр UARTLCR_H" указано примечание: "Резерв. Не модифицируйте. При чтении выдаются нули." - я так понимаю, что просто надо писать нули, потому что узнать, какое там значение, всё-равно невозможно?
Обратите, пожалуйста, внимание, что писать в данные биты регистра UARTLCR_H вовсе не нужно, они физически никак не коммутируют с блоком внутри микроконтроллера. Обращайтесь, пожалуйста, исключительно к доступным для модификации полям регистра.
Python писал(а):
В Таблице 298 - бит Cfg_M_REF "внутренне опорное" - пропущено "е"
Замечание принято, будет исправлено.
Python писал(а):
В качестве пожелания, ОЧЕНЬ хотелось бы, чтобы прерывания INT1...INT4 (или хотя бы некоторые из них) УМЕЛИ работать по фронту сигнала, а не только по высокому уровню. КРАЙНЕ неудобно эмулировать подобное поведение постоянно включая и отключая прерывание через NVIC, на STM32 это реализовано намного удобнее.
К сожалению, в данном микроконтроллере внешние прерывания выполнены именно так и без большей функциональности, однако, альтернативой смело можно считать прерывания от таймера в режиме захвата, где можно настроить любой фронт для вызова прерываний. Обратите, пожалуйста, внимание на статью информационного портала отдела технической поддержки компании Миландр по таймерам общего назначения, из которой, наряду с документом спецификации, можно получить дополнительные сведения по работе таймеров в режиме захвата.

Спасибо.

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
СообщениеДобавлено: 2021-авг-09 15:56 
Не в сети
Support
Аватара пользователя

Зарегистрирован: 2018-авг-10 23:14
Сообщения: 448
Организация: АО «ПКК Миландр»
Откуда: Зеленоград
редактор писал(а): *
Цитата:
В качестве пожелания, ОЧЕНЬ хотелось бы, чтобы прерывания INT1...INT4 (или хотя бы некоторые из них) УМЕЛИ работать по фронту сигнала, а не только по высокому уровню.
Для этих целей рекомендуют использовать таймер в режиме захвата.

По дополнениям и уточнениям - список вопросов к описанию модуля USB
1. П.20.1 состояние сброса удерживать10 тактов от частоты CPU или USB. (В библиотеке цикл i<1000)
2. Поправить нумерацию битов в регистре SC (SCTXL[0:1] - SC_TX_LINE_STATE[1] SC_TX_LINE_STATE[2] в одном случае нумерация 0-1, в другом 1-2)
3. EPRDY - завершение передачи - наверное надо изменить на завершение транзакции (как для EPEN).
Иначе возникает неоднозначность - передача - это транзакция IN (в терминах USB 2.0). Но без установки этого флага EP не работает на прием (транзакция OUT/SETUP не будет выполнена).
4. Регистр MDR_USB->SIS бит SC_RESUME - наверное неточный перевод. Состояние повтора чего?? По смыслу вроде должно быть возобновление активности на линии после ее остановки (выход из SUSPEND режима). Но не понятно, зачем отдельный флаг, если активность можно определить по SOF/
5. Рис.40,41. Стрелки указывают какой кадр вызывает установку флага. Флаги выставляются по мере поступления кадров (то есть события вызываются со сдвигом по времени) или флаги выставляются по завершении транзакции (после фазы EOP).
6. Для большинства регистров значение неиспользуемых битов указано 0. В реальности отладчик показывает для многих регистров 1 в младшем разряде неиспользуемого поля.
Здравствуйте!

Спасибо за найденные замечания в спецификации на семейство микроконтроллеров 1986ВЕ9х. По пунктам:
редактор писал(а):
1. П.20.1 состояние сброса удерживать10 тактов от частоты CPU или USB. (В библиотеке цикл i<1000)
Обратите, пожалуйста, внимание, что 10 тактов - есть минимум, на протяжении которого необходимо выдерживать сигнал сброса RESET_CORE, чтобы после корректно задавать параметры шины USB. Время в 1000 тактов из библиотеки не являются нарушением, лично пробовал задавать именно 10 тактов, после этого параметры шины устанавливались правильно.
редактор писал(а):
2. Поправить нумерацию битов в регистре SC (SCTXL[0:1] - SC_TX_LINE_STATE[1] SC_TX_LINE_STATE[2] в одном случае нумерация 0-1, в другом 1-2)
SCTXL[1:0] указывает на разрядность поля внутри регистра (так по документации сделано везде, например, обратите, пожалуйста, внимание на поле EVENT_SEL регистра CNTRL блока таймеров общего назначения), в целом оперирование в столбце с расшифровкой функционального описания к данному полю не вводит пользователя в заблуждение, можно оставить для SC_TX_LINE_STATE значения "[1]" и "[2]".
редактор писал(а):
3. EPRDY - завершение передачи - наверное надо изменить на завершение транзакции (как для EPEN).
Иначе возникает неоднозначность - передача - это транзакция IN (в терминах USB 2.0). Но без установки этого флага EP не работает на прием (транзакция OUT/SETUP не будет выполнена).
Новый вариант описания "0 - оконечная точка не готова или завершила транзакцию ... после успешного завершения транзакции" оставляет тот же смысл, но является правильным с точки зрения работы протокола, поэтому исправление принято в работу.
редактор писал(а):
4. Регистр MDR_USB->SIS бит SC_RESUME - наверное неточный перевод. Состояние повтора чего?? По смыслу вроде должно быть возобновление активности на линии после ее остановки (выход из SUSPEND режима). Но не понятно, зачем отдельный флаг, если активность можно определить по SOF/
Действительно, "resume" переводилось дословно в рамках контекста описания на блок, но всё же лучше трактовать это как "возобновлять" (один из переводов слова "resume") или в рамках блока USB "состояние возобновления передачи". Важно понимать в отрыве от служебных пакетов SOF, которые транслируются постоянно для опознавания сети, и по которым можно установить активность в сети, что это часть протокола, которую реализовывать необходимо, и в контроллерах USB других производителей данная реализация также существует для соответствия стандарту (Вы правы, это напрямую связано с режимом Suspend - см. подраздел 7.1.4.5 "Resume" на стандарт USB 1.0).

Подумаю, как уместно реализовать изменения, спасибо.
редактор писал(а):
5. Рис.40,41. Стрелки указывают какой кадр вызывает установку флага. Флаги выставляются по мере поступления кадров (то есть события вызываются со сдвигом по времени) или флаги выставляются по завершении транзакции (после фазы EOP).
Флаги выставляются по факту завершения фазы EOP.
редактор писал(а):
6. Для большинства регистров значение неиспользуемых битов указано 0. В реальности отладчик показывает для многих регистров 1 в младшем разряде неиспользуемого поля.
Говоря об используемых полях регистров блока USB, то они действительно находятся в нуле, неиспользуемые зарезервированные поля рассматривать не имеет смысла: если там имеется какой-то логический уровень, то это может быть элементарная наводка при подключении шин для коммутации с ядром, при этом на работу это никак влиять не может.

Спасибо.

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
СообщениеДобавлено: 2021-авг-10 08:58 
Не в сети

Зарегистрирован: 2010-авг-30 19:12
Сообщения: 544
Цитата:
неиспользуемые зарезервированные поля рассматривать не имеет смысла: если там имеется какой-то логический уровень, то это может быть элементарная наводка при подключении шин для коммутации с ядром, при этом на работу это никак влиять не может.
Может огда обозначить их состояние ка 'X' - неопределено.
Цитата:
Обратите, пожалуйста, внимание, что 10 тактов - есть минимум, на протяжении которого необходимо выдерживать сигнал сброса RESET_CORE, чтобы после корректно задавать параметры шины USB.
и все таки 10 тактов от частоты CPU или USB?
возьмем условный код
for(volitile int i=10;i>0;i--);

Если 10 тактов частоты CPU, код будет работать и при CPU_CLK = 4 МГц, и при CPU_CLK = 80 МГц.
Если 10 Тактов частоты USB, то значение сброса надо выбирать из соотношения частот. Для CPU_CLK = 4 МГц i=120 (минимум) Для CPU_CLK = 80 МГц i=6 (минимум)

Еще вопрос.
Предположим проводится запись в EEPROM или FLASH. Код выполняется из ОЗУ, все прерывания запрещены. Если будет активен канал ДМА и он будет выполнять транзакцию FLASH->перефирия или FLASH->ОЗУ. Приведет ли данная ситуация к сбою или ограничения накладываются только на взаимодействие между CPU и контроллером FLASH.
Вопрос теоретический пока, однако не хотелось бы ходить по граблям, используя отлаженный код, который данную ситуацию не учитывает (ДМА почти не использую).


Вернуться к началу
СообщениеДобавлено: 2021-авг-10 10:09 
Не в сети

Зарегистрирован: 2020-дек-10 09:35
Сообщения: 43
Организация: Startex
редактор писал(а): *
Еще вопрос.
Предположим проводится запись в EEPROM или FLASH. Код выполняется из ОЗУ, все прерывания запрещены. Если будет активен канал ДМА и он будет выполнять транзакцию FLASH->перефирия или FLASH->ОЗУ. Приведет ли данная ситуация к сбою или ограничения накладываются только на взаимодействие между CPU и контроллером FLASH.
Вопрос теоретический пока, однако не хотелось бы ходить по граблям, используя отлаженный код, который данную ситуацию не учитывает (ДМА почти не использую).
Извиняюсь что влез в переписку с техподдержкой, но вопрос показался интересным. Рассуждалово:
1 - Если смотреть картинки в спецификации, то блок flash памяти подключен к busMatrix некоторой шиной, а busMatrix коммутирует доступ к flash от шин ядра или от шины DMA. Из этого важно лишь то, что flash висит на своей шине и отрабатывает транзации на этой шине.
2 - Далее, бит переключения режимов доступа к flash находится в самом блоке flash. Т.е. внешние блоки ничего не знаю про то, в каком режиме в текущий момент работает блок flash. Нет никаких левых сигналов на шине говорящих внешним блокам как можно работать с flash памятью.
3 - Получается, что блок flash сам парсит обращения на шине и реагирует на них в зависимости от того в каком режиме он работает.
- Либо он обрабатывает rd/wr по диапазону адресов на шине, бит EEPROM->CMD.COM = 0 (Обычный доступ)
- Либо он отрабатывает rd/wr на шине только для адресов регистров, бит EEPROM->CMD.COM = 1 (Регистровый доступ)

Получается, что если уж блок flash переведен в регистровый доступ, то ни ядро, ни DMA достучаться до памяти не смогут. Только до регистров.


Вернуться к началу
СообщениеДобавлено: 2021-авг-10 12:51 
Не в сети
Support
Аватара пользователя

Зарегистрирован: 2018-авг-10 23:14
Сообщения: 448
Организация: АО «ПКК Миландр»
Откуда: Зеленоград
редактор писал(а): *
Цитата:
неиспользуемые зарезервированные поля рассматривать не имеет смысла: если там имеется какой-то логический уровень, то это может быть элементарная наводка при подключении шин для коммутации с ядром, при этом на работу это никак влиять не может.
Может огда обозначить их состояние ка 'X' - неопределено.
Цитата:
Обратите, пожалуйста, внимание, что 10 тактов - есть минимум, на протяжении которого необходимо выдерживать сигнал сброса RESET_CORE, чтобы после корректно задавать параметры шины USB.
и все таки 10 тактов от частоты CPU или USB?
возьмем условный код
for(volitile int i=10;i>0;i--);

Если 10 тактов частоты CPU, код будет работать и при CPU_CLK = 4 МГц, и при CPU_CLK = 80 МГц.
Если 10 Тактов частоты USB, то значение сброса надо выбирать из соотношения частот. Для CPU_CLK = 4 МГц i=120 (минимум) Для CPU_CLK = 80 МГц i=6 (минимум)

Еще вопрос.
Предположим проводится запись в EEPROM или FLASH. Код выполняется из ОЗУ, все прерывания запрещены. Если будет активен канал ДМА и он будет выполнять транзакцию FLASH->перефирия или FLASH->ОЗУ. Приведет ли данная ситуация к сбою или ограничения накладываются только на взаимодействие между CPU и контроллером FLASH.
Вопрос теоретический пока, однако не хотелось бы ходить по граблям, используя отлаженный код, который данную ситуацию не учитывает (ДМА почти не использую).
Здравствуйте!
редактор писал(а):
Может огда обозначить их состояние ка 'X' - неопределено.
Вынесу на обсуждение с Главным конструктором данный вопрос. По остальным Вашим замечаниям и замечаниям пользователя @Python составлен большой тикет на исправление документации, спасибо.
редактор писал(а):
и все таки 10 тактов от частоты CPU или USB?
возьмем условный код
for(volitile int i=10;i>0;i--);

Если 10 тактов частоты CPU, код будет работать и при CPU_CLK = 4 МГц, и при CPU_CLK = 80 МГц.
Если 10 Тактов частоты USB, то значение сброса надо выбирать из соотношения частот. Для CPU_CLK = 4 МГц i=120 (минимум) Для CPU_CLK = 80 МГц i=6 (минимум)
Обратите, пожалуйста, внимание, что по RTL-описанию на блок отсчитываются такты процессора, а не блока USB.
редактор писал(а):
Еще вопрос.
Предположим проводится запись в EEPROM или FLASH. Код выполняется из ОЗУ, все прерывания запрещены. Если будет активен канал ДМА и он будет выполнять транзакцию FLASH->перефирия или FLASH->ОЗУ. Приведет ли данная ситуация к сбою или ограничения накладываются только на взаимодействие между CPU и контроллером FLASH.
Вопрос теоретический пока, однако не хотелось бы ходить по граблям, используя отлаженный код, который данную ситуацию не учитывает (ДМА почти не использую).
Пользователь @AndOrFin также высказал свои предположения, однако, обратите, пожалуйста, внимание, что всё несколько проще: Вы не можете работать с DMA и EEPROM вообще. Дело в том, что блок DMA действительно подключен на общую шину AHB (блок также подключен к шине APB для управления регистрами, однако, по AHB, если быть точнее, то по AHB-Lite, идёт обмен данными), и по рисунку 1 "Структурная блок-схема микроконтроллера 1986ВЕ9ху" актуальной версии спецификации может сложиться впечатление, что DMA связан и с EEPROM тоже, но это не так: контроллер DMA имеет отдельную шину при обмене, для простоты введено обозначение "M", которая связана с ОЗУ, внешней системной шиной и мостом AHB - APB, который связывает ядро и периферийные блоки - между этими составными частями микроконтроллера и блоком DMA Вы можете вести обмен, минуя ядро, при этом доступа физического у блока DMA к контроллеру EEPROM нет. Обратите, пожалуйста, внимание, что данная информация всё же представлена в документации в рамках рисунка 9 "Структурная схема организации памяти".

Спасибо за обращение.

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
СообщениеДобавлено: 2021-авг-10 13:54 
Не в сети
Support
Аватара пользователя

Зарегистрирован: 2018-авг-10 23:14
Сообщения: 448
Организация: АО «ПКК Миландр»
Откуда: Зеленоград
редактор писал(а): *
Цитата:
неиспользуемые зарезервированные поля рассматривать не имеет смысла: если там имеется какой-то логический уровень, то это может быть элементарная наводка при подключении шин для коммутации с ядром, при этом на работу это никак влиять не может.
Может огда обозначить их состояние ка 'X' - неопределено.
Цитата:
Обратите, пожалуйста, внимание, что 10 тактов - есть минимум, на протяжении которого необходимо выдерживать сигнал сброса RESET_CORE, чтобы после корректно задавать параметры шины USB.
и все таки 10 тактов от частоты CPU или USB?
возьмем условный код
for(volitile int i=10;i>0;i--);

Если 10 тактов частоты CPU, код будет работать и при CPU_CLK = 4 МГц, и при CPU_CLK = 80 МГц.
Если 10 Тактов частоты USB, то значение сброса надо выбирать из соотношения частот. Для CPU_CLK = 4 МГц i=120 (минимум) Для CPU_CLK = 80 МГц i=6 (минимум)

Еще вопрос.
Предположим проводится запись в EEPROM или FLASH. Код выполняется из ОЗУ, все прерывания запрещены. Если будет активен канал ДМА и он будет выполнять транзакцию FLASH->перефирия или FLASH->ОЗУ. Приведет ли данная ситуация к сбою или ограничения накладываются только на взаимодействие между CPU и контроллером FLASH.
Вопрос теоретический пока, однако не хотелось бы ходить по граблям, используя отлаженный код, который данную ситуацию не учитывает (ДМА почти не использую).
редактор писал(а):
Может огда обозначить их состояние ка 'X' - неопределено.
После уточнения информации у Главного конструктора микросхемы сообщаю, что описание к регистрам контроллера USB регламентирует состояние полей этих регистров, в том числе зарезервированных, по факту сброса до подачи тактирования на блок, после подачи тактирования на блок контроллер находится не в исходном состоянии, и считать информацию из спецификации актуальной неправильно. Спасибо.

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 279 сообщений ]  На страницу « 115 16 17 18 19 »

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти: 

Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB