Миландр

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

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




Начать новую тему  Ответить на тему  [ 28 сообщений ]  На страницу « 1 2
Автор Сообщение
 Заголовок сообщения: Re: Ethernet на 1986ВЕ3Т
СообщениеДобавлено: 2018-май-25 13:02 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1530
Откуда: Тула
Vasiliy писал(а):
Возможно некорректно выразился, имел ввиду - после запуска на HSI, бит HSE_ON включать не нужно. Поскольку не нужен функционал самого генератора HSE, а только внешняя частота пропущенная сквозь него.
Практика показывает, что включение BYPASS и не включение HSE_ON ведёт к зависанию, при переключении тактирования на HSE.
При тактировании от HSI вроде бы манипуляции с HS_CONTROL не требуются.

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


Вернуться к началу
 Заголовок сообщения: Re: Ethernet на 1986ВЕ3Т
СообщениеДобавлено: 2018-июн-01 13:28 
Не в сети

Зарегистрирован: 2014-ноя-05 07:19
Сообщения: 7
//*******************Настройки 25 МГц*/*******************************

MDR_RST_CLK->HS_CONTROL = 0x01; /* вкл. HSE осцилятора 25 MHz*/
//MDR_RST_CLK->HS_CONTROL = 0x03; /* вкл. HSE генератора 25 MHz*/
while ((MDR_RST_CLK->CLOCK_STATUS & (1 << 2)) == 0x00); /* ждем пока HSE выйдет в рабочий режим */

MDR_RST_CLK->CPU_CLOCK = 0x00000003; //CPU_C1 frequency 12,5MHz

//MDR_RST_CLK->PLL_CONTROL = ((1 << 2) | (3 <<8)); //вкл. PLL | коэф. умножения = 4 частота ядра 50 МГц
MDR_RST_CLK->PLL_CONTROL = ((1 << 2) | (5 <<8)); //вкл. PLL | коэф. умножения = 6 частота ядра 75 МГц
while((MDR_RST_CLK->CLOCK_STATUS & 0x02) != 0x02); //ждем когда PLL выйдет в раб. режим

MDR_RST_CLK->CPU_CLOCK = (3 /*источник для CPU_C1 - HSE/2 */
| (1 << 2) /*источник для CPU_C2 - PLL*/
| (0 << 4) /*предделитель для CPU_C3 - переферия работает на 75 МГц*/
| (1 <<8));/*источник для HCLK*/

MDR_RST_CLK->ETH_CLOCK=(1<<24)|(1<<28)|(1<<27)|(0<<16); //PHY_CLK_SEL = HSE, ETH_CLK_EN=1, PHY_CLK_EN=1, ETH_CLK = 75 MHz

С такими настройками работает от кварца 25МГц. Работающая периферия: Таймер, ETHERNET, CAN, UART.


Вернуться к началу
 Заголовок сообщения: Re: Ethernet на 1986ВЕ3Т
СообщениеДобавлено: 2018-окт-24 08:32 
Не в сети

Зарегистрирован: 2018-янв-19 07:44
Сообщения: 47
Организация: АО "Равенство"
prostoRoman писал(а):
Практика показывает, что включение BYPASS и не включение HSE_ON ведёт к зависанию, при переключении тактирования на HSE.
Я использовал стандартную библиотеку, а конкретно функции RST_CLK_HSEconfig (RST_CLK_HSE2config), и нарвался на баг или фичу (кому как) при переходе от демонстрационной платы к своей, на которой используется внешние генераторы 8 и 25 МГц. Если для демоплаты аргументом функции был RST_CLK_HSE_ON (RST_CLK_HSE2_ON), то для своей платы я задавал соответственно RST_CLK_HSE_ON | RST_CLK_HSE_Bypass (RST_CLK_HSE2_ON | RST_CLK_HSE2_Bypass). В результате на своей плате получил зависание в точке ожидания готовности HSE (HSE2).
Как оказалось, причина в реализации функций. На примере RST_CLK_HSEconfig:
/**
  * @brief  RST_CLK_HSEconfig - HSE (High Speed External) clock mode and source selection
  * @param  RST_CLK_HSE - mode selector
  *         @arg RST_CLK_HSE_OFF    -  switch off HSE clock generator
  *         @arg RST_CLK_HSE_ON     -  switch on HSE clock generator
  *         @arg RST_CLK_HSE_Bypass -  use external clock source
  * @retval None
  */
void RST_CLK_HSEconfig(uint32_t RST_CLK_HSE)
{
  /* Check the parameters */
  assert_param(IS_RST_CLK_HSE(RST_CLK_HSE));
  /* Reset HSEON and HSEBYP bits before configuring the HSE */
  MDR_RST_CLK->HS_CONTROL &= ~((uint32_t)(RST_CLK_HSE_ON | RST_CLK_HSE_Bypass));
  /* Configure HSE (RCC_HSE_OFF is already covered by the code section above) */
  switch (RST_CLK_HSE)
  {
    case RST_CLK_HSE_ON:
      /* Set HSEON bit */
      MDR_RST_CLK->HS_CONTROL |= RST_CLK_HSE_ON;
      break;

    case RST_CLK_HSE_Bypass:
      /* Set HSEBYP and HSEON bits */
      MDR_RST_CLK->HS_CONTROL |= RST_CLK_HSE_ON | RST_CLK_HSE_Bypass;
      break;

    default:
      break;
  }
}
Видно, что RST_CLK_HSE_ON и RST_CLK_HSE_Bypass используются в аргументе функции не как битовые флаги, а как взаимоисключающие значения.
Так что передача в качестве аргумента (RST_CLK_HSE_ON | RST_CLK_HSE_Bypass) приводит к полному RST_CLK_HSE_OFF и ожидание готовности приведёт к зависанию.
Пришлось для внешнего генератора оставить только RST_CLK_HSE_Bypass (RST_CLK_HSE2_Bypass), тогда стало работать (но внутри функции всё равно задаётся RST_CLK_HSE_ON | RST_CLK_HSE_Bypass).
Зачем надо было так путать непонятно.


Вернуться к началу
 Заголовок сообщения: Re: Ethernet на 1986ВЕ3Т
СообщениеДобавлено: 2018-окт-24 08:49 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 473
Организация: Milandr
Откуда: ПКК "Миландр"
Если пользуетесь функциями SPL, то используйте их правильно:
1 - В шапке у функции написано какие параметры можно подавать на вход.
 
  * @param  RST_CLK_HSE - mode selector
 *         @arg RST_CLK_HSE_OFF    -  switch off HSE clock generator
 *         @arg RST_CLK_HSE_ON     -  switch on HSE clock generator
 *         @arg RST_CLK_HSE_Bypass -  use external clock source
2 - В макросе IS_RST_CLK_HSE(RST_CLK_HSE) видно какие значения являются валидными.
#define IS_RST_CLK_HSE(HSE)                  (((HSE) == RST_CLK_HSE_OFF) || \
                                              ((HSE) == RST_CLK_HSE_ON)  || \
                                              ((HSE) == RST_CLK_HSE_Bypass))
3 - Загляните в реализацию, там происходит именно то, что Вам было нужно
    case RST_CLK_HSE_Bypass:
      /* Set HSEBYP and HSEON bits */
      MDR_RST_CLK->HS_CONTROL |= RST_CLK_HSE_ON | RST_CLK_HSE_Bypass;
      break;


Вернуться к началу
 Заголовок сообщения: Re: Ethernet на 1986ВЕ3Т
СообщениеДобавлено: 2018-окт-24 10:47 
Не в сети

Зарегистрирован: 2018-янв-19 07:44
Сообщения: 47
Организация: АО "Равенство"
Vasiliy писал(а):
...
Ну да, конечно же я сам виноват, а как иначе? Если вы читали моё сообщение, то всё что вы написали я уже проделал. Я лишь написал это всё к тому, что вы путаете людей.
Если я не использую ваши функции, а пишу прямо в регистры, то я должен использовать RST_CLK_HSE_ON и RST_CLK_HSE_Bypass как флаги, которые могу объединить по "или".
В случае использования ваших функций, я почему-то должен применить другую интерпретацию и использовать RST_CLK_HSE_ON и RST_CLK_HSE_Bypass по отдельности.
За более 30 лет работы я нигде ни у кого такого не встречал, вы первые.


Вернуться к началу
 Заголовок сообщения: Re: Ethernet на 1986ВЕ3Т
СообщениеДобавлено: 2018-окт-24 11:21 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 473
Организация: Milandr
Откуда: ПКК "Миландр"
  * @param  RST_CLK_HSE - mode selector
  *         @arg RST_CLK_HSE_OFF    -  switch off HSE clock generator
  *         @arg RST_CLK_HSE_ON     -  switch on HSE clock generator
  *         @arg RST_CLK_HSE_Bypass -  use external clock source

#define RST_CLK_HSE_OFF                      ((uint32_t)0x00000000)
#define RST_CLK_HSE_ON                       ((uint32_t)0x00000001)
#define RST_CLK_HSE_Bypass                 ((uint32_t)0x00000002)
Достаточно очевидно, что это не флаги.
Спорить не буду, не используйте SPL если с регистрами проще.


Вернуться к началу
 Заголовок сообщения: Re: Ethernet на 1986ВЕ3Т
СообщениеДобавлено: 2018-окт-24 11:35 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1530
Откуда: Тула
Всё же работу напрямую с регистрами от передачи параметров в ф-цию библиотеки нужно различать. Совпадение есть совпадение.
Другое дело, что в СП (на всю серию) за много лет так и не появилось явного указания устанавливать бит HSE_ON в любом случае использования внешнего тактирования.

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


Вернуться к началу
 Заголовок сообщения: Re: Ethernet на 1986ВЕ3Т
СообщениеДобавлено: 2018-окт-24 12:06 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 473
Организация: Milandr
Откуда: ПКК "Миландр"
prostoRoman писал(а):
Другое дело, что в СП (на всю серию) за много лет так и не появилось явного указания устанавливать бит HSE_ON в любом случае использования внешнего тактирования.
Действительно. Спасибо за напоминание, завел тикеты писателям.


Вернуться к началу
 Заголовок сообщения: Re: Ethernet на 1986ВЕ3Т
СообщениеДобавлено: 2019-окт-17 10:52 
Не в сети

Зарегистрирован: 2019-май-16 10:57
Сообщения: 5
Организация: АО "НПП "Полет"
Добрый день. На одном из наших изделий не работает ethernet на 1986ВЕ3Т. Схема подключения согласно рекомендованной разработчиками МК. Проект рабочий - 9 изделий по той же схеме и с тем же ПО работают. Проверили в режиме короткого замыкания - приема нет. Питание все проверил. Что может влиять на работу ethernet? Или браковать контроллер?


Вернуться к началу
 Заголовок сообщения: Re: Ethernet на 1986ВЕ3Т
СообщениеДобавлено: 2019-окт-17 11:14 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1530
Откуда: Тула
Sonyck писал(а):
Проверили в режиме короткого замыкания - приема нет.
На уровне MAC или PHY?
Может есть проблемы с тактовой 25 МГц?

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


Вернуться к началу
 Заголовок сообщения: Re: Ethernet на 1986ВЕ3Т
СообщениеДобавлено: 2019-окт-18 10:24 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 473
Организация: Milandr
Откуда: ПКК "Миландр"
Поддерживаю вопрос от prostoRoman:
- Бит HSE2_Ready выставляется?
- Работает ли режим КЗ для второго блока Ethernet?

Дальше остается только схема. Кусок схемы с включением МК (с питаниями и конденсаторами) для проверки можно прислать на support@milandr.ru


Вернуться к началу
 Заголовок сообщения: Re: Ethernet на 1986ВЕ3Т
СообщениеДобавлено: 2019-окт-23 11:41 
Не в сети

Зарегистрирован: 2019-май-16 10:57
Сообщения: 5
Организация: АО "НПП "Полет"
prostoRoman писал(а):
Sonyck писал(а):
Проверили в режиме короткого замыкания - приема нет.
На уровне MAC или PHY?
Может есть проблемы с тактовой 25 МГц?
На уровне MAC.
Проблем с тактовой частотой нет. Тактирование 25 МГц. Проверяли осциллографом и оно идентично рабочему блоку.
Все эксперименты проводим на рабочем и нерабочем блоке, чтобы исключить ошибки.
Vasiliy писал(а):
Поддерживаю вопрос от prostoRoman:
- Бит HSE2_Ready выставляется?
- Работает ли режим КЗ для второго блока Ethernet?

Дальше остается только схема. Кусок схемы с включением МК (с питаниями и конденсаторами) для проверки можно прислать на support@milandr.ru
Используем HSE, а не HSE2. От HSE тактируется все, но не работает только Ethernet.
Режим КЗ на втором Ethernet тоже не работает.

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


Вернуться к началу
 Заголовок сообщения: Re: Ethernet на 1986ВЕ3Т
СообщениеДобавлено: 2019-окт-23 15:22 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 473
Организация: Milandr
Откуда: ПКК "Миландр"
С 49-й недели 2018 года выпускается третья ревизия, в ней устранены ошибки которые были в блоке Ethernet. Блок теперь такой, как в 1986ВЕ1Т в 6-й ревизии.

Библиотека SPL 1.4 имела ошибку в функции ETH_SendFrame(), некорректно обрабатывались указатели Head и Tail в линейном режиме. Эта ошибка раньше нивелировалась аппаратно, но в 3-й ревизии если в регистры будет прописано значение выходящее за диапазон памяти Ethernet, то обмен прекратится. С другими проблемами мы не сталкивались.

Обновите SPL или попробуйте сравнить Вашу реализацию работы с регистрами, с тем как это сделано в текущей версии SPL или тут https://github.com/StartMilandr/Pack_VE ... F9Qx_eth.c

Но если код во всех платах одинаков, тогда навряд ли дело в функции ETH_SendFrame(). Поэтому:
1 - Попробуйте запустить штатный пример с TCPIP, входит в примеры в паке 1.5.2\Examples\MDR1986VE1T\Ethernet , описание проекта - https://startmilandr.ru/doku.php/prog:ethernet:tcpip
2 - Если проект не работает, тогда пришлите схему включения МК на support@milandr.ru


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 28 сообщений ]  На страницу « 1 2

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


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

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


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

Перейти: 

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