Миландр

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

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




Начать новую тему  Ответить на тему  [ 335 сообщений ]  На страницу « 113 14 15 16 1723 »
Автор Сообщение
 Заголовок сообщения: 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
Сообщения: 274
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 КБ]
218 скачиваний

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

Зарегистрирован: 2011-авг-21 18:55
Сообщения: 274
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
Сообщения: 274
Добавил бета-версию драйвера 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 МБ]
233 скачивания

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

Зарегистрирован: 2011-авг-21 18:55
Сообщения: 274
Сделал небольшие корректировки в своём паке: в 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 МБ]
289 скачиваний

_________________
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


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 335 сообщений ]  На страницу « 113 14 15 16 1723 »

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


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

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


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

Перейти: 

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