Миландр

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

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




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: UART на отладочной плате 1986EvBrd_64
СообщениеДобавлено: 2018-сен-13 20:53 
Не в сети

Зарегистрирован: 2018-июн-10 20:09
Сообщения: 1
Доброго времени суток.

Пытаюсь разобраться с отправкой данных от МК по UART.
Компилирую и загружаю следующий код в Keil:
Открыть Код
Код:
#include "MDR32Fx.h"                    // Device header
#include "MDR32F9Qx_config.h"           // Keil::Device:Startup_MDR1986BE9x
#include "MDR32F9Qx_dma.h"              // Keil::Drivers:DMA
#include "MDR32F9Qx_port.h"             // Keil::Drivers:PORT
#include "MDR32F9Qx_rst_clk.h"          // Keil::Drivers:RST_CLK
#include "MDR32F9Qx_uart.h"             // Keil::Drivers:UART



void LED_ini(void)
{
   PORT_InitTypeDef GPIO_ini;
   
   RST_CLK_PCLKcmd(RST_CLK_PCLK_PORTC, ENABLE);
   
   GPIO_ini.PORT_Pin        = PORT_Pin_0;
  GPIO_ini.PORT_OE         = PORT_OE_OUT;
  GPIO_ini.PORT_PULL_UP    = PORT_PULL_UP_OFF;
  GPIO_ini.PORT_PULL_DOWN  = PORT_PULL_DOWN_OFF;
  GPIO_ini.PORT_PD_SHM     = PORT_PD_SHM_OFF;
  GPIO_ini.PORT_PD         = PORT_PD_DRIVER;
  GPIO_ini.PORT_GFEN       = PORT_GFEN_OFF;
  GPIO_ini.PORT_FUNC       = PORT_FUNC_PORT;
  GPIO_ini.PORT_SPEED      = PORT_SPEED_FAST;
  GPIO_ini.PORT_MODE       = PORT_MODE_DIGITAL;
   
   PORT_Init(MDR_PORTC, &GPIO_ini);
}

uint16_t data;
void UART1_IRQHandler(void)
{
   if (UART_GetITStatusMasked(MDR_UART1, UART_IT_RX) == SET)
   {
      UART_ClearITPendingBit(MDR_UART1, UART_IT_RX);
      data = UART_ReceiveData(MDR_UART1);
      UART_SendData(MDR_UART1, data);
   }
}


void UART_ini(void)
{
   PORT_InitTypeDef GPIO_ini;
   UART_InitTypeDef uart_user_ini;
   
   RST_CLK_PCLKcmd(RST_CLK_PCLK_PORTA, ENABLE);
   
   GPIO_ini.PORT_Pin        = PORT_Pin_7;
  GPIO_ini.PORT_OE         = PORT_OE_OUT;
  GPIO_ini.PORT_PULL_UP    = PORT_PULL_UP_OFF;
  GPIO_ini.PORT_PULL_DOWN  = PORT_PULL_DOWN_OFF;
  GPIO_ini.PORT_PD_SHM     = PORT_PD_SHM_OFF;
  GPIO_ini.PORT_PD         = PORT_PD_DRIVER;
  GPIO_ini.PORT_GFEN       = PORT_GFEN_OFF;
  GPIO_ini.PORT_FUNC       = PORT_FUNC_OVERRID;
  GPIO_ini.PORT_SPEED      = PORT_SPEED_MAXFAST;
  GPIO_ini.PORT_MODE       = PORT_MODE_DIGITAL;
   
   PORT_Init(MDR_PORTA, &GPIO_ini);
   
   GPIO_ini.PORT_Pin        = PORT_Pin_6;
  GPIO_ini.PORT_OE         = PORT_OE_IN;
   
   PORT_Init(MDR_PORTA, &GPIO_ini);
   
   RST_CLK_PCLKcmd(RST_CLK_PCLK_UART1, ENABLE);
   
   NVIC_EnableIRQ(UART1_IRQn);
   
   UART_BRGInit(MDR_UART1, UART_HCLKdiv1);
   
   uart_user_ini.UART_BaudRate = 9600;
   uart_user_ini.UART_FIFOMode = UART_FIFO_OFF;
   uart_user_ini.UART_HardwareFlowControl = UART_HardwareFlowControl_TXE|UART_HardwareFlowControl_RXE;
   uart_user_ini.UART_Parity = UART_Parity_No;
   uart_user_ini.UART_StopBits = UART_StopBits1;
   uart_user_ini.UART_WordLength = UART_WordLength8b;
   
   UART_Init(MDR_UART1, &uart_user_ini);
   
   UART_ITConfig(MDR_UART1, UART_IT_RX, ENABLE);
   
   UART_Cmd(MDR_UART1, ENABLE);
}

#define BufferSize         32

uint16_t SrcBuf1[BufferSize];

void DMA_UART_ini(void)
{
   DMA_ChannelInitTypeDef DMA_InitStr;
   DMA_CtrlDataInitTypeDef DMA_PriCtrlStr;
   
   RST_CLK_PCLKcmd(RST_CLK_PCLK_DMA,ENABLE);
   
   UART_DMACmd(MDR_UART1,UART_DMA_TXE, ENABLE);
   
   DMA_StructInit(&DMA_InitStr);
   
   DMA_PriCtrlStr.DMA_SourceBaseAddr = (uint32_t)SrcBuf1;
  DMA_PriCtrlStr.DMA_DestBaseAddr = (uint32_t)(&(MDR_UART1->DR));
  DMA_PriCtrlStr.DMA_SourceIncSize = DMA_DestIncByte;
  DMA_PriCtrlStr.DMA_DestIncSize = DMA_SourceIncNo;
  DMA_PriCtrlStr.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
  DMA_PriCtrlStr.DMA_Mode = DMA_Mode_Basic;
  DMA_PriCtrlStr.DMA_CycleSize = BufferSize;
  DMA_PriCtrlStr.DMA_NumContinuous = DMA_Transfers_1;
  DMA_PriCtrlStr.DMA_SourceProtCtrl = DMA_SourcePrivileged;
  DMA_PriCtrlStr.DMA_DestProtCtrl = DMA_DestPrivileged;
  /* Set Channel Structure */
  DMA_InitStr.DMA_PriCtrlData = &DMA_PriCtrlStr;
  DMA_InitStr.DMA_Priority = DMA_Priority_Default;
  DMA_InitStr.DMA_UseBurst = DMA_BurstClear;
  DMA_InitStr.DMA_SelectDataStructure = DMA_CTRL_DATA_PRIMARY;
  /* Init DMA channel */

  DMA_Init(DMA_Channel_UART1_RX, &DMA_InitStr);
}

void delay(void)
{
   uint32_t i;
   for (i=0;i<1000000;i++)
   {
      
   }
}

int main(void)
{
   uint8_t count=0;
   
   LED_ini();
   UART_ini();
   DMA_UART_ini();
   while (1)
  {
      PORT_SetBits(MDR_PORTC, PORT_Pin_0);
      delay();
      PORT_ResetBits(MDR_PORTC, PORT_Pin_0);
      delay();
      DMA_Cmd(DMA_Channel_UART1_RX, ENABLE);
      
      UART_SendData(MDR_UART1, count);
      count++;
  }
}
Закрыть

Далее подключаю кабель к отладочной плате и соединяю её по USB с ПК.
Открыть Порт на плате
Изображение
Закрыть

В итоге в COM Port данные не поступают.
В чем могут быть проблемы?


Вложения:
Комментарий к файлу: Тех описание платы
1986EvBrd_ВЕ92х_тех_описание.pdf [1.17 МБ]
Скачиваний: 61
Комментарий к файлу: Проект в Keil
UART_proj.rar [259.05 КБ]
Скачиваний: 15
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UART на отладочной плате 1986EvBrd_64
СообщениеДобавлено: 2018-сен-17 09:36 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 175
Откуда: ПКК "Миландр"
А почему UART настраивается на PA6, PA7?

Схемы этой платы найти не смог, но судя по методичке от гугла https://edu.milandr.ru/upload/iblock/f2 ... 3ab2c8.pdf
на разъем UART идут выводы PF0, PF1. Как и в текущих версиях плат.

_________________
Отдел технической поддержки support@milandr.ru


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

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


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

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


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

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