Миландр

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

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




Начать новую тему  Ответить на тему  [ 12 сообщений ] 
Автор Сообщение
 Заголовок сообщения: Осваиваю 1986ве92у
СообщениеДобавлено: 2018-дек-13 14:35 
Не в сети

Зарегистрирован: 2018-дек-13 14:16
Сообщения: 6
Организация: ОАО ГОРИЗОНТ
Здравствуйте в связи с импортозамещением осваиваю 1986ве92у. Имеется отладочный комплект. С АЦП разобрался с тактированием вроде тоже, пытаюсь передать байт по COM порту. Не работает UART. На ногах уровень и все. Помогите советом мозг уже сломал. Заранее спасибо. Код :
void init_CLK(void)
{
	RST_CLK_HSEconfig(RST_CLK_HSE_ON);
	while(RST_CLK_HSEstatus()==ERROR);
	
	
	RST_CLK_CPU_PLLconfig(RST_CLK_CPU_PLLsrcHSEdiv1,RST_CLK_CPU_PLLmul2);
	RST_CLK_CPU_PLLuse(ENABLE);
	RST_CLK_CPU_PLLcmd(ENABLE);
	RST_CLK_CPUclkSelection(RST_CLK_CPUclkCPU_C3);
	RST_CLK_USB_PLLcmd(DISABLE);
	
	RST_CLK_PCLKcmd(RST_CLK_PCLK_TIMER1|RST_CLK_PCLK_PORTA|
				RST_CLK_PCLK_PORTB|RST_CLK_PCLK_PORTC|					 
				RST_CLK_PCLK_PORTD|RST_CLK_PCLK_PORTE|					 
	                         RST_CLK_PCLK_PORTF|RST_CLK_PCLK_TIMER3|                                        
				RST_CLK_PCLK_TIMER2|RST_CLK_PCLK_SSP1|					 
				RST_CLK_PCLK_UART1|RST_CLK_PCLK_CAN1|					 
				 ST_CLK_PCLK_DMA|RST_CLK_PCLK_EEPROM|	 		                
                                  RST_CLK_PCLK_ADC,                                       
                                                                  ENABLE);
	
	
	SystemCoreClock=16000000;
}

void init_USART(void)
{
	PORT_InitTypeDef  init_PORT;
	UART_InitTypeDef  init_UART;
	
	init_PORT.PORT_FUNC=PORT_FUNC_ALTER;
	init_PORT.PORT_SPEED=PORT_SPEED_MAXFAST;
	init_PORT.PORT_MODE=PORT_MODE_DIGITAL;
	
	
	init_PORT.PORT_OE=PORT_OE_OUT;
	init_PORT.PORT_Pin=PORT_Pin_5;
	PORT_Init(MDR_PORTB,&init_PORT);
	
	init_PORT.PORT_OE=PORT_OE_IN;
	init_PORT.PORT_Pin=PORT_Pin_6;
	PORT_Init(MDR_PORTB,&init_PORT);
	
	
	init_UART.UART_BaudRate=19200;
	init_UART.UART_WordLength=UART_WordLength8b;
	init_UART.UART_StopBits=UART_StopBits1;
	init_UART.UART_Parity=UART_Parity_No;
	init_UART.UART_FIFOMode=UART_FIFO_OFF;
	init_UART.UART_HardwareFlowControl=UART_HardwareFlowControl_TXE|UART_HardwareFlowControl_RXE;
	
	UART_BRGInit(MDR_UART1, UART_HCLKdiv2);
	UART_Init(MDR_UART1,&init_UART);
	UART_ITConfig(MDR_UART1,UART_IT_RX,ENABLE);
	UART_Cmd(MDR_UART1,ENABLE);
	
	
	
}


void init_ISR(void)
{
	
	
	
	NVIC_EnableIRQ (ADC_IRQn);
	NVIC_EnableIRQ (UART2_IRQn);
	
	
	__enable_irq();
}




Вернуться к началу
 Заголовок сообщения: Re: Осваиваю 1986ве92у
СообщениеДобавлено: 2018-дек-13 15:03 
Не в сети

Зарегистрирован: 2014-июн-25 09:29
Сообщения: 125
А почему прерывание от UART2, а не UART1?
   NVIC_EnableIRQ (UART2_IRQn);
Также неплохо бы показать участки кода, в которых вы что-нибудь делаете с UART.
Я обычно при начале задействования UART в проекте начинаю с того, что в безконечном цикле посылаю через UART какой-нибудь символ. А осциллом смотрю на выходе передатчика.


Вернуться к началу
 Заголовок сообщения: Re: Осваиваю 1986ве92у
СообщениеДобавлено: 2018-дек-13 15:21 
Не в сети

Зарегистрирован: 2018-дек-13 14:16
Сообщения: 6
Организация: ОАО ГОРИЗОНТ
Да ошибся пытался и второй UART задействовать может на нем заработает. Исправление не помогает. просто отправка байта UART_SendData(MDR_UART1,'U'); и все. Проект тестовый. В том то и дело что на ноге передатчика нет ничего.


Последний раз редактировалось max4447 2018-дек-13 15:33, всего редактировалось 1 раз.

Вернуться к началу
 Заголовок сообщения: Re: Осваиваю 1986ве92у
СообщениеДобавлено: 2018-дек-13 15:31 
Не в сети

Зарегистрирован: 2014-июн-25 09:29
Сообщения: 125
Давайте для очистки совести проинициализируем структуры для настройки порта и UART и деинициализируем UART с помощью функций
PORT_StructInit(), UART_StructInit() и UART_DeInit(). Всё-таки структуры созданы в стеке и не подвергаются начальной инициализации.


Вернуться к началу
 Заголовок сообщения: Re: Осваиваю 1986ве92у
СообщениеДобавлено: 2018-дек-13 15:46 
Не в сети

Зарегистрирован: 2018-дек-13 14:16
Сообщения: 6
Организация: ОАО ГОРИЗОНТ
Сделал эффекта нет.


Вернуться к началу
 Заголовок сообщения: Re: Осваиваю 1986ве92у
СообщениеДобавлено: 2018-дек-13 15:55 
Не в сети

Зарегистрирован: 2014-июн-25 09:29
Сообщения: 125
Странно, на вид вроде бы правильно сделано...
Разве что еще вот это прикрутить:
  init_UART.PORT_PD = PORT_PD_DRIVER;
А в отладчике смотрели? На UART_SendData(MDR_UART1,'U'); реально заходит?
Саму функцию init_USART() не забыли вызвать :-) ?


Вернуться к началу
 Заголовок сообщения: Re: Осваиваю 1986ве92у
СообщениеДобавлено: 2018-дек-13 16:15 
Не в сети

Зарегистрирован: 2018-дек-13 14:16
Сообщения: 6
Организация: ОАО ГОРИЗОНТ
Прикрутил эффекта нет. В UART_SendData заходит.


Вернуться к началу
 Заголовок сообщения: Re: Осваиваю 1986ве92у
СообщениеДобавлено: 2018-дек-13 16:37 
Не в сети

Зарегистрирован: 2009-сен-21 12:39
Сообщения: 538
SPL не пользуюсь, но вот это смущает:
Цитата:
init_UART.UART_HardwareFlowControl=UART_HardwareFlowControl_TXE|UART_HardwareFlowControl_RXE;
Вы что, режим аппаратного управления потоком данных используете?


Вернуться к началу
 Заголовок сообщения: Re: Осваиваю 1986ве92у
СообщениеДобавлено: 2018-дек-13 16:55 
Не в сети

Зарегистрирован: 2018-дек-13 14:16
Сообщения: 6
Организация: ОАО ГОРИЗОНТ
нет, как я понимаю данная строка разрешает прием и передачу UARTA. Или я что то не понял?


Вернуться к началу
 Заголовок сообщения: Re: Осваиваю 1986ве92у
СообщениеДобавлено: 2018-дек-13 17:10 
Не в сети

Зарегистрирован: 2014-июн-25 09:29
Сообщения: 125
На счет
init_UART.UART_HardwareFlowControl=UART_HardwareFlowControl_TXE|UART_HardwareFlowControl_RXE;
все правильно сделано.
А какой у вас кварц стоит? Частота ядра какая получается?


Вернуться к началу
 Заголовок сообщения: Re: Осваиваю 1986ве92у
СообщениеДобавлено: 2018-дек-13 17:16 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1487
Откуда: Тула
max4447, лучше выложите простейший демо-проект для демоплаты для кейл. Вероятно пока всё это будете делать - сами найдёте проблему. Если нет - пользователи быстренько найдут.
Так же попробуйте запустить демо-проект от миландра:
mdr1986x-pack-repo\source\emdr1986x-std-per-lib-doc\Examples\MDR1986VE9x\MDR32F9Q1_EVAL\UART\WordSend

Ещё может нужно дожидаться выхода PLL на режим после строки
    RST_CLK_CPU_PLLconfig(RST_CLK_CPU_PLLsrcHSEdiv1,RST_CLK_CPU_PLLmul2);
Открыть
    /* Enable HSE clock oscillator */
    RST_CLK_HSEconfig(RST_CLK_HSE_ON);
    /* Switch LED2 on and wait for HSE ready status */
    LEDOn(LED2);
    Delay(BLINK_DELAY);
    if (RST_CLK_HSEstatus() == SUCCESS)                     /* Good HSE clock */
    {
      /* Select HSE clock as CPU_PLL input clock source */
      /* Set PLL multiplier to 7                        */
      RST_CLK_CPU_PLLconfig(RST_CLK_CPU_PLLsrcHSEdiv1, 7);
      /* Enable CPU_PLL */
      RST_CLK_CPU_PLLcmd(ENABLE);
      /* Switch LED2 on and wait for PLL ready status */
      if (RST_CLK_HSEstatus() == SUCCESS)                     /* Good CPU PLL */
      {
        /* Switch LED2 off */
        LEDOff(LED2);
        /* Set CPU_C3_prescaler to 2 */
        RST_CLK_CPUclkPrescaler(RST_CLK_CPUclkDIV2);
        /* Set CPU_C2_SEL to CPU_PLL output instead of CPU_C1 clock */
        RST_CLK_CPU_PLLuse(ENABLE);
        /* Select CPU_C3 clock on the CPU clock MUX */
        RST_CLK_CPUclkSelection(RST_CLK_CPUclkCPU_C3);
        /* LED1 blinking with 7*HSE/2 clock as input clock source */
        BlinkLED1(BLINK_NUM, BLINK_DELAY);
      }
      else                                                    /* CPU_PLL timeout */
      {
        IndicateError();
      }
    }
    else                                                    /* HSE timeout */
    {
      IndicateError();
    }
Закрыть
и стоит вызывать SystemCoreClockUpdate()

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


Вернуться к началу
 Заголовок сообщения: Re: Осваиваю 1986ве92у
СообщениеДобавлено: 2018-дек-14 15:08 
Не в сети

Зарегистрирован: 2018-дек-13 14:16
Сообщения: 6
Организация: ОАО ГОРИЗОНТ
UARTы заработали (передача) но на другой плате в чем дело пока непонятно буду думать. Спасибо за ответы.


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

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


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

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


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

Перейти: 

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