Миландр

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

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 316 ]  На страницу Пред.  1 ... 12, 13, 14, 15, 16, 17, 18 ... 22  След.
Автор Сообщение
 Заголовок сообщения: Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC
СообщениеДобавлено: 2015-ноя-15 15:36 
Не в сети

Зарегистрирован: 2015-июл-26 18:58
Сообщения: 28
8daemon писал(а):
светодиоды 0 или 1 зажигаются?

Они все у меня зажигаются, но как только убираю функцию /* CPU clock setup */ Setup_CPU_Clock(); и её вызов в мэйне.
Проблема начинается, как только я пытаюсь затактировать камень от внешнего HSE


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC
СообщениеДобавлено: 2015-ноя-15 17:39 
Не в сети

Зарегистрирован: 2015-июл-26 18:58
Сообщения: 28
Вообщем взял замечательный генератор начального кода, сделанный уважаемым участником этого форума AntonAS и сгенерировал вот такой простой код:

void CPU_init ( void ){
//Необходимая пауза для работы Flash-памяти программ
MDR_EEPROM->CMD |= (0 << 3);

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


MDR_RST_CLK->CPU_CLOCK = ((2 << 0)//источник для CPU_C1
| (0 << 2)//источник для CPU_C2
| (0 << 4)//предделитель для CPU_C3
| (1 << 8));//источник для HCLK

MDR_BKP->REG_0E |= (0 << 0); //режим встроенного регулятора напряжения DUcc
MDR_BKP->REG_0E |= (0 << 3); //выбор доп.стабилизирующей нагрузки
}//void CPU_init


После чего все сразу же заработало! Но вопрос применения библиотек Standart Peripherals остается открыт. Уважаемые форумчане, есть ли у кого работающая функция настройки тактирования от внешнего кварца, написанная с помощью библиотек Standart Peripherals?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC
СообщениеДобавлено: 2015-ноя-15 19:39 
Не в сети

Зарегистрирован: 2014-авг-11 19:26
Сообщения: 123
Пожалуйста:
Код:
// Используем внешний кварц или внутреннюю RC цепь?
#define USE_EXTERNAL_8MHZ 1

void ClockConfigure(void)
{
#if USE_EXTERNAL_8MHZ > 0   
   RST_CLK_HSEconfig(RST_CLK_HSE_ON);
  if (RST_CLK_HSEstatus() == SUCCESS)
  {
  RST_CLK_CPU_PLLconfig(RST_CLK_CPU_PLLsrcHSEdiv2, RST_CLK_CPU_PLLmul4);
  RST_CLK_CPU_PLLcmd(ENABLE);
  if (RST_CLK_CPU_PLLstatus() != SUCCESS)
  {
    while(1) ; // Ошибка старта PLL
  }

  RST_CLK_CPUclkPrescaler(RST_CLK_CPUclkDIV1);
  RST_CLK_CPU_PLLuse(ENABLE);
  RST_CLK_CPUclkSelection(RST_CLK_CPUclkCPU_C3);
   SystemCoreClockUpdate(); 
   
   RST_CLK_PCLKcmd(ALL_PORTS_CLK, ENABLE);
  }
   else
   {
      while(1) ; // Ошибка старта внешнего генератора
   }
#else      
   RST_CLK_HSIcmd(ENABLE);
   if (RST_CLK_HSIstatus() == SUCCESS)
   {
      // Встроенный генератор нв 8МГц * 2 = 16МГц тактовая частота
      RST_CLK_CPU_PLLconfig (RST_CLK_CPU_PLLsrcHSIdiv1, RST_CLK_CPU_PLLmul2);
      RST_CLK_CPU_PLLcmd(ENABLE);
      if (RST_CLK_CPU_PLLstatus() != SUCCESS)
      {
         while(1) ; // Ошибка старта PLL
      }
      RST_CLK_CPUclkPrescaler(RST_CLK_CPUclkDIV1);
      RST_CLK_CPU_PLLuse(ENABLE);
      RST_CLK_CPUclkSelection(RST_CLK_CPUclkCPU_C3);      
      SystemCoreClockUpdate(); 
      
      RST_CLK_PCLKcmd(ALL_PORTS_CLK, ENABLE);
   }
   else
   {
      while(1) ; // Ошибка старта встроенного генератора
   }
#endif
}


Для тактирования от кварца или RC цепи с PLL *2 = 16Мгц тактовая частота. Проверенно не раз на ВЕ92 - прекрасно всё работает. Если нет - проверяйте соединения, кварц.... явно дело не в коде.

_________________
https://adelectronics.ru
Заходи, не стесняйся! ;)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC
СообщениеДобавлено: 2015-ноя-15 19:58 
Не в сети

Зарегистрирован: 2015-сен-13 22:57
Сообщения: 1
Необходима помощь!
Помогите разобраться с Ethernet для ВЕ3Т, на основе стандартной библиотеки и примеров, смог запустить Telnet и ping на Ethernet1. Но при попытке просто переинициализировать все те же настройки для Ethernet2 ничего не заработало. Кто-нибудь запускал на ВЕ3Т второй канал Ethernet?
И есть ли у Вас примеры с перенесенным стеком для ВЕ3Т?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC
СообщениеДобавлено: 2015-ноя-15 21:43 
Не в сети

Зарегистрирован: 2015-июл-26 18:58
Сообщения: 28
Для тактирования от кварца или RC цепи с PLL *2 = 16Мгц тактовая частота. Проверенно не раз на ВЕ92 - прекрасно всё работает. Если нет - проверяйте соединения, кварц.... явно дело не в коде.[/quote]

Уважаемый, A_D, я может что-то не то делаю, но при использовании регистровой записи, которую я получил от генератора начального кода пару постов выше, 1986ВЕ92У отлично тактируется и работает, при попытке использовать ваш код, опять отрицательный результат. Keil версии 5.11.0.0, версия пака от Миландр 1.4.0 Примеры из пака уже пробовал, тоже ничего...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC
СообщениеДобавлено: 2015-ноя-15 22:43 
Не в сети
Аватара пользователя

Зарегистрирован: 2011-авг-21 18:55
Сообщения: 262
Mr.Grey, поставьте Keil поновее, например 5.17 - с 5.11 вроде были глюки с SPL. И пройдите по шагам с помощью отладчика с заходом в функции и просмотром регистров периферии - это самый верной способ найти жука.

Кстати в своё время делал вот такой шаблон для запуска тактирования с помощью SPL - вроде работал (во вложении).

Цитата:
По поводу: <b>Бит PCLK[4] – RST_CLK установлен перед заданием тактирования?<b>
не совсем понял, использую функции Standart Peripherals которые шли в pack 1.4.0 от Миландра.


Ликбез, программа стартует с адреса во флеш 0x80000000 согласно ассемблерному файлу startup_MDR32F9Qx.s - смотрим, что внутри

Код:
; Reset handler
Reset_Handler    PROC
                 EXPORT  Reset_Handler             [WEAK]
        IMPORT  SystemInit
        IMPORT  __main
                 LDR     R0, =SystemInit <- старт программы по сбросу процессора (Reset Handler), сначала вызовется Си-функция SystemInit () из файла system_MDR32F9Qx.c
                 BLX     R0
                 LDR     R0, =__main <-потом вызовется собственно главная пользовательская функция main ()
                 BX      R0
                 ENDP


Смотрим SystemInit () в system_MDR32F9Qx.c

Код:
/* Reset the RST clock configuration to the default reset state */

  /* Reset all clock but RST_CLK & BKP_CLC bits */
  MDR_RST_CLK->PER_CLOCK   = (uint32_t)0x8000010; <- включение тактирования блока RST_CLK (после этого можно развлекаться с тактовыми частотами процессора - разгонять до 120 МГц и прочее) и блока батарейного домена BKP (не обязательно кстати)

Обнуление всего и вся
  /* Reset CPU_CLOCK bits */
  MDR_RST_CLK->CPU_CLOCK   &= (uint32_t)0x00000000;

  /* Reset PLL_CONTROL bits */
  MDR_RST_CLK->PLL_CONTROL &= (uint32_t)0x00000000;

  /* Reset HSEON and HSEBYP bits */
  MDR_RST_CLK->HS_CONTROL  &= (uint32_t)0x00000000;

  /* Reset USB_CLOCK bits */
  MDR_RST_CLK->USB_CLOCK   &= (uint32_t)0x00000000;

  /* Reset ADC_MCO_CLOCK bits */
  MDR_RST_CLK->ADC_MCO_CLOCK   &= (uint32_t)0x00000000;

  SystemCoreClockUpdate();


А после этого вызывается main() и начинается пользовательская настройка тактирования.

P.S. Когда я стал писать свой bootloader - в startup я вообще удалил строки с SystemInit, чтобы не было путаницы, кстати в startup для 1986ВЕ1Т разработчики так и сделали, почему здесь оставили, не знаю - теперь я гарантировано знаю, что стартую с функции main(), но не надо забывать в main() включать тактирование блока RST_CLK
Код:
; Reset handler
Reset_Handler    PROC
                 EXPORT  Reset_Handler             [WEAK]
        IMPORT  __main
                 LDR     R0, =__main [b]<-потом вызовется собственно главная пользовательская функция main ()[/b]
                 BX      R0
                 ENDP


Вложения:
Template.zip [623.41 КБ]
Скачиваний: 179

_________________
Hack the Planet!
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC
СообщениеДобавлено: 2015-ноя-16 02:59 
Не в сети
Аватара пользователя

Зарегистрирован: 2011-авг-21 18:55
Сообщения: 262
smrandrey писал(а):
Необходима помощь!
Помогите разобраться с Ethernet для ВЕ3Т, на основе стандартной библиотеки и примеров, смог запустить Telnet и ping на Ethernet1. Но при попытке просто переинициализировать все те же настройки для Ethernet2 ничего не заработало. Кто-нибудь запускал на ВЕ3Т второй канал Ethernet?
И есть ли у Вас примеры с перенесенным стеком для ВЕ3Т?


Что за пример и библиотека? Как я думаю, в функции опроса надо как-то попытаться опрашивать оба канала Ethernet и складывать в разные буфера. Я знаю только один стек, который может мониторить два канала ethernet http://www.keil.com/pack/doc/mw/Network/html/index.html, но для этого нужен драйвер CMSIS Ethernet https://www.keil.com/pack/doc/CMSIS/Dri ... e__gr.html, которого, я чую, мы не дождёмся :(

_________________
Hack the Planet!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC
СообщениеДобавлено: 2015-ноя-16 09:31 
Не в сети

Зарегистрирован: 2010-июл-08 08:50
Сообщения: 734
Откуда: АО "ПКК Миландр"
R Max писал(а):
Код:
; Reset handler
Reset_Handler    PROC
                 EXPORT  Reset_Handler             [WEAK]
        IMPORT  __main
                 LDR     R0, =__main [b]<-потом вызовется собственно главная пользовательская функция main ()[/b]
                 BX      R0
                 ENDP

К слову сказать, __main - это не пользовательский main(), а внутренняя функция Keil, в которой происходит инициализация стека, кучи, областей памяти и т.д., а в конце вызывается уже пользовательский main().
(подробнее про __main можно прочитать в help на среду разработки)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC
СообщениеДобавлено: 2015-ноя-16 09:35 
Не в сети

Зарегистрирован: 2010-июл-08 08:50
Сообщения: 734
Откуда: АО "ПКК Миландр"
smrandrey писал(а):
Необходима помощь!
Помогите разобраться с Ethernet для ВЕ3Т, на основе стандартной библиотеки и примеров, смог запустить Telnet и ping на Ethernet1. Но при попытке просто переинициализировать все те же настройки для Ethernet2 ничего не заработало. Кто-нибудь запускал на ВЕ3Т второй канал Ethernet?
И есть ли у Вас примеры с перенесенным стеком для ВЕ3Т?

Посмотрите в отладке все ли регистры блока Ethernet2 проинициализированы, а также включен тактовый сигнал для Ethernet.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC
СообщениеДобавлено: 2015-дек-10 02:37 
Не в сети
Аватара пользователя

Зарегистрирован: 2011-авг-21 18:55
Сообщения: 262
Добавил бета-версию драйвера CMSIS Ethernet для 1986ВЕ1Т в свой пак - проверена на Keil 5.17 & MDK Middleware 6.5.0 - пример HTTP-, FTP-серверов на SD-карте и Telnet-клиента, аналогичный viewtopic.php?f=34&t=2664 во вложении, пак в папке Pack.


Вложения:
CMSIS_WebServerOnSD_Card.zip [5.64 МБ]
Скачиваний: 193

_________________
Hack the Planet!
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC
СообщениеДобавлено: 2015-дек-12 21:49 
Не в сети
Аватара пользователя

Зарегистрирован: 2011-авг-21 18:55
Сообщения: 262
Сделал небольшие корректировки в своём паке: в wizard-файле RTE_Device.h и в драйверах CMSIS Ethernet в части клоков и информационных светодиодов. Драйвер проверен также на Keil.MDK-Middleware.7.0.0-beta.pack c Dual-Stack IPv4/IPv6 в режиме IPv4 (проект FTP-Server-а + DHCP) - всё работает. В DualStack необходимо использовать user-provided stack http://www.keil.com/pack/doc/mw/Network ... diffs.html


Вложения:
CMSIS_DRV_ETHERNET_FINAL.zip [2.68 МБ]
Скачиваний: 244

_________________
Hack the Planet!


Последний раз редактировалось R Max 2015-дек-17 23:52, всего редактировалось 4 раз(а).
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC
СообщениеДобавлено: 2015-дек-16 14:44 
Не в сети

Зарегистрирован: 2014-май-20 09:07
Сообщения: 93
Откуда: ЗАО "Московский Прожекторный завод"
Здравствуйте!
Использую CMSIS для 1986VE1T, подключил к своему проекту, пытаюсь проект скомпилировать. Линковщик ругается на следующий фрагмент кода в файле startup_MDR1986VE1T.s
Код:
#ifndef __START
#define __START _start
#endif
   bl   __START

Ругается следующими словами:
Код:
E:\Projects\embedded\EasyTCPIPProject\Debug/../CMSIS/CM1/DeviceSupport/MDR1986VE1T/startup/gcc/startup_MDR1986VE1T.S:262: undefined reference to `_start'


Что бы это значило?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC
СообщениеДобавлено: 2015-дек-16 15:07 
Не в сети

Зарегистрирован: 2014-май-20 09:07
Сообщения: 93
Откуда: ЗАО "Московский Прожекторный завод"
noob писал(а):
Здравствуйте!
Использую CMSIS для 1986VE1T, подключил к своему проекту, пытаюсь проект скомпилировать. Линковщик ругается на следующий фрагмент кода в файле startup_MDR1986VE1T.s
Код:
#ifndef __START
#define __START _start
#endif
   bl   __START

Ругается следующими словами:
Код:
E:\Projects\embedded\EasyTCPIPProject\Debug/../CMSIS/CM1/DeviceSupport/MDR1986VE1T/startup/gcc/startup_MDR1986VE1T.S:262: undefined reference to `_start'


Что бы это значило?

Хммм... Методом научного тыка исправил #define __START _start на
#define __START main
И проект собрался. Это, конечно, здорово. Но всё ли я правильно сделал?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC
СообщениеДобавлено: 2015-дек-16 15:12 
Не в сети

Зарегистрирован: 2014-мар-04 08:52
Сообщения: 53
Откуда: г. Зеленоград ЗАО "НТЦ ЭЛИНС"
Скорее всего не правильно. Вы откуда стартап взяли? Какой IDE используете для сборки?
_start наверное должен указывать на функцию, которая бы включала в себя: инициализацию data, bss, SystemInit (клоки) или ей подобное, и только потом вызов main.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC
СообщениеДобавлено: 2015-дек-16 15:32 
Не в сети

Зарегистрирован: 2014-май-20 09:07
Сообщения: 93
Откуда: ЗАО "Московский Прожекторный завод"
sguwenka писал(а):
Скорее всего не правильно. Вы откуда стартап взяли? Какой IDE используете для сборки?
_start наверное должен указывать на функцию, которая бы включала в себя: инициализацию data, bss, SystemInit (клоки) или ей подобное, и только потом вызов main.


Стартап я взял отсюда: https://github.com/eldarkg/emdr1986x-std-per-lib. Скачал папку CMSIS.
Добавил к себе в проект. Удалил оттуда папки, не относящиеся к MDR1986VE1T. Получилась следующая структура каталогов:
Код:
CMSIS (директория)
-CM1 (директория)
--CoreSupport (директория)
---core_cm1.h
---core_cmFunc.h
---core_cmInstr.h
--DeviceSupport (директория)
---MDR1986VE1T (директория)
----inc (директория)
-----MDR1986VE1T.h
----startup (директория)
-----gcc (директория)
------MDR1986VE1T.ld
------startup_MDR1986VE1T.S
-----system_MDR1986VE1T.c
-----system_MDR1986VE1T.h


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 316 ]  На страницу Пред.  1 ... 12, 13, 14, 15, 16, 17, 18 ... 22  След.

Часовой пояс: UTC + 3 часа


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

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


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

Найти:
Перейти:  
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB