Миландр

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

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




Начать новую тему Ответить на тему  [ Сообщений: 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
Сообщения: 101
А почему прерывание от 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
Сообщения: 101
Давайте для очистки совести проинициализируем структуры для настройки порта и 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
Сообщения: 101
Странно, на вид вроде бы правильно сделано...
Разве что еще вот это прикрутить:
Код:
  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
Сообщения: 500
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
Сообщения: 101
На счет
Код:
init_UART.UART_HardwareFlowControl=UART_HardwareFlowControl_TXE|UART_HardwareFlowControl_RXE;

все правильно сделано.
А какой у вас кварц стоит? Частота ядра какая получается?


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

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1236
Откуда: Тула
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 + 3 часа


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

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


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

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