Миландр

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

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




Начать новую тему Ответить на тему  [ Сообщений: 316 ]  На страницу Пред.  1 ... 18, 19, 20, 21, 22  След.
Автор Сообщение
 Заголовок сообщения: Re: Standard Peripherals Library MDR32F9x, VE1, VE3, VE4, VC
СообщениеДобавлено: 2018-ноя-27 08:52 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 336
Откуда: ПКК "Миландр"
По спецификации в регистре TST активен только 1-й бит, писать соответственно надо TST = 2. Остальные биты должны быть нулевыми.
Сам не пробовал, но может в этом дело.

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


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

Зарегистрирован: 2014-авг-11 19:26
Сообщения: 123
Vasiliy писал(а):
По спецификации в регистре TST активен только 1-й бит, писать соответственно надо TST = 2. Остальные биты должны быть нулевыми.
Сам не пробовал, но может в этом дело.

Да, мой косяк... уже замылился глаз после работы... но запись 0x02 тоже не влияет на появление VRef на пине. Странно...

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


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

Зарегистрирован: 2018-янв-05 23:41
Сообщения: 52
Vasiliy писал(а):
Определения находятся в MDR32F9Qx_rst_clk.h

Поверил на слово, проверять не стал. А сейчас понадобилось затактировать очередную периферию. Полез в этот файл - и ничего там не нашел!
Номера строк в студию!
Напоминаю, речь о позициях битов и масках на биты регистра MDR_RST_CLK->PER_CLOCK (спецификация на 1986ВЕ1Т, п. 13.8.8, таблица 69).


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

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 336
Откуда: ПКК "Миландр"
A_D писал(а):
Поверил на слово, проверять не стал. А сейчас понадобилось затактировать очередную периферию. Полез в этот файл - и ничего там не нашел!
Номера строк в студию!
Напоминаю, речь о позициях битов и масках на биты регистра MDR_RST_CLK->PER_CLOCK (спецификация на 1986ВЕ1Т, п. 13.8.8, таблица 69).


Не понял юмора....
Код:
MDR32F9Qx_rst_clk.h со строки 460:

#if defined (USE_MDR1986VE1T)
   #define RST_CLK_PCLK_CAN1           PCLK_BIT(MDR_CAN1_BASE)
   #define RST_CLK_PCLK_CAN2           PCLK_BIT(MDR_CAN2_BASE)
   #define RST_CLK_PCLK_USB            PCLK_BIT(MDR_USB_BASE)
   #define RST_CLK_PCLK_EEPROM         PCLK_BIT(MDR_EEPROM_BASE)
   #define RST_CLK_PCLK_RST_CLK        PCLK_BIT(MDR_RST_CLK_BASE)
   #define RST_CLK_PCLK_DMA            PCLK_BIT(MDR_DMA_BASE)
   #define RST_CLK_PCLK_UART1          PCLK_BIT(MDR_UART1_BASE)
        .......


вызов
Код:
  RST_CLK_PCLKcmd(RST_CLK_PCLK_CAN1, ENABLE);   

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


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

Зарегистрирован: 2018-янв-05 23:41
Сообщения: 52
Я пытался найти что-то типа этого
Код:
#define MDR_RST_CLK_PER_CLOCK_EEPROM_POS 3
#define MDR_RST_CLK_PER_CLOCK_EEPROM  (1 << MDR_RST_CLK_PER_CLOCK_EEPROM_POS)

Чтобы применить в коде так:
Код:
MDR_RST_CLK->PER_CLOCK |= MDR_RST_CLK_PER_CLOCK_EEPROM;
MDR_RST_CLK->PER_CLOCK &= ~MDR_RST_CLK_PER_CLOCK_EEPROM;


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

Зарегистрирован: 2014-авг-11 19:26
Сообщения: 123
A_D писал(а):
Vasiliy писал(а):
По спецификации в регистре TST активен только 1-й бит, писать соответственно надо TST = 2. Остальные биты должны быть нулевыми.
Сам не пробовал, но может в этом дело.

Да, мой косяк... уже замылился глаз после работы... но запись 0x02 тоже не влияет на появление VRef на пине. Странно...


Итак, отписываюсь, что всё заработало.
Ошибка была в том, что я посмотрев в даташит на адрес смещения регистров:
Вложение:
reg.PNG
reg.PNG [ 47.39 КБ | Просмотров: 1245 ]

как то на ночь глядя подумал, что надо считать не по байтам, а это адреса на 32-битный регистр и если у прошлого 0х38 адрес, то для получения 0х3С надо добавить RESERVED* в структуру... в итоге правильно будет так:
Код:
/* MDR_ADCIU_TypeDef structure */
typedef struct {
   __IO uint32_t   CTRL1;                  /*!< */
   __IO uint32_t   ANGAIN;                 /*!< */
   __IO uint32_t   DIGGAIN;                /*!< */
   __IO uint32_t   DMAEN;                  /*!< */
   __IO uint32_t   CTRL2;                  /*!< */
   __IO uint32_t   INTEN;                  /*!< */
   __IO uint32_t   STAT;                   /*!< */
   __IO uint32_t   F_DAT[8];               /*!< */
   __IO uint32_t   TST;               /* добавлено согласно даташиту для TST*/
}MDR_ADCIU_TypeDef;

Ошибка крайне банальная и глупая, но думаю поможет кому-либо описание решения.

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


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

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 336
Откуда: ПКК "Миландр"
У меня в MDR1986BE4.h это поле TST прописано, версия 1.5 c оф. сайта.

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


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

Зарегистрирован: 2014-авг-11 19:26
Сообщения: 123
А я брал с гита, как выше писал уже, версия для GCC. Видимо там не обновлено...

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


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

Зарегистрирован: 2018-янв-05 23:41
Сообщения: 52
В файлах MDR1986VE1T.h, MDR1986VE3.h отсутствуют макросы описания для позиции и маски 12 бита регистра MDR_POWER->PVDCS: PVDBEN - разрешение работы детектора напряжения питания батарейного домена. Надо бы добавить.
Посмотрел спецификацию на 1986ВЕ9х - там такого бита нет и в файле MDR32Fx.h он не описан. Это ошибка или так и должно быть?


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

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 336
Откуда: ПКК "Миландр"
Маски под бит добавили, скачать пока можно отсюда - https://github.com/StartMilandr/Pack_VE ... iceSupport

В 1986ВЕ9х нет бита PVDBEN, все включается разом битом PVDEN.

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


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

Зарегистрирован: 2018-янв-05 23:41
Сообщения: 52
Код функции MIL_STD_1553_Cmd не очень соответствует описанию инициализации блока в спецификации.
Открыть void MIL_STD_1553_Cmd(MDR_MIL_STD_1553_TypeDef * MIL_STD_1553x, FunctionalState NewState)
Код:
/**
  * @brief   Enables or disables the specified MIL_STD_1553 peripheral.
  * @param   MIL_STD_1553x: Select the MIL_STD_1553 peripheral.
  *         This parameter can be one of the following values:
  *         MIL_STD_15531, MIL_STD_15532.
  * @param  NewState: new state of the MIL_STD_1553x peripheral.
  *         This parameter can be: ENABLE or DISABLE.
  * @retval None
  */
void MIL_STD_1553_Cmd(MDR_MIL_STD_1553_TypeDef * MIL_STD_1553x, FunctionalState NewState)
{
   /* Check the parameters */
   assert_param(IS_MIL_STD_1553_ALL_PERIPH(MIL_STD_1553x));
   assert_param(IS_FUNCTIONAL_STATE(NewState));

   if(NewState == ENABLE){
      /* Enable the selected MIL_STD_1553 by clearingsetting the MR bit in the CONTROL register */
      MIL_STD_1553x->CONTROL &= ~MR_EN_Set;
   }
   else{
      /* Disable the selected MIL_STD_1553 by setting the MR bit in the CONTROL register */
      MIL_STD_1553x->CONTROL |= ~MR_EN_Reset;
   }
}
Закрыть

Согласно 21.4 спецификации:
Цитата:
Перед началом работы с контроллером в первую очередь необходимо сбросить контроллер, чтобы очистить все регистры сообщений. Это достигается установкой бита MR регистра CONTROL в логическую единицу. Затем бит необходимо сбросить в нуль.

В функции же он при включении сразу сбрасывается в 0 без предварительной установки в 1.
Кроме того не ясно, зачем для манипуляций с этим битом использовать две разных битовых маски:
Открыть
Код:
#define MR_EN_Set         ((uint32_t)0x00000001)   /*!< MIL_STD_1553 Enable mask */
#define MR_EN_Reset         ((uint32_t)0x0000FFFE)   /*!< MIL_STD_1553 Disable mask */
Закрыть

Почему нельзя обойтись одной?


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

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 336
Откуда: ПКК "Миландр"
Professor Chaos писал(а):
В функции же он при включении сразу сбрасывается в 0 без предварительной установки в 1.


Функция MIL_STD_1553_Cmd делает только то, что делает - переключает бит enable. Далее этой функцией можно реализовать то, что необходимо по спецификации.

Professor Chaos писал(а):
Кроме того не ясно, зачем для манипуляций с этим битом использовать две разных битовых маски... Почему нельзя обойтись одной?

На вкус и цвет все фломастеры разные. Автор вполне имел право сделать так, как посчитал удобным для себя.

Библиотека не является продуктом компании и предоставляется в том виде каком есть. В первую очередь она предназначена для знакомства с программированием микроконтроллеров. В каком то смысле для упрощения понимания работы с блоками. Использовать ее или писать свой код решает программист.

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


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

Зарегистрирован: 2018-янв-05 23:41
Сообщения: 52
Ошибки в файле MDR32F9Qx_uart.c из пака версии 1.5

Функция void UART_IrDACmd(MDR_UART_TypeDef* UARTx, FunctionalState NewState) некорректно сбрасывает бит SIREN:
ARTx->CR |= CR_SIREN_Reset;
Открыть void UART_IrDACmd(MDR_UART_TypeDef* UARTx, FunctionalState NewState)
Код:
/**
  * @brief  Enables or disables the UART's IrDA interface.
  * @param  UARTx: Select the UART peripheral.
  *         This parameter can be one of the following values:
  *         UART1, UART2.
  * @param  NewState: new state of the IrDA mode.
  *         This parameter can be: ENABLE or DISABLE.
  * @retval None
  */
void UART_IrDACmd(MDR_UART_TypeDef* UARTx, FunctionalState NewState)
{
  /* Check the parameters */
  assert_param(IS_UART_ALL_PERIPH(UARTx));
  assert_param(IS_FUNCTIONAL_STATE(NewState));

  if (NewState != DISABLE)
  {
    /* Set SIREN bit in the UART CR register */
    UARTx->CR |= CR_SIREN_Set;
  }
  else
  {
    /* Reset SIREN bit in the UART CR register */
    UARTx->CR |= CR_SIREN_Reset;
  }
}
Закрыть


Функция void UART_BreakLine(MDR_UART_TypeDef* UARTx, FunctionalState NewState) некорректно сбрасывает бит BRK:
UARTx->LCR_H |= LCR_H_BRK_Reset;
Открыть void UART_BreakLine(MDR_UART_TypeDef* UARTx, FunctionalState NewState)
Код:
/**
  * @brief  Break transmit.
  * @param  UARTx: Select the UART peripheral.
  *         This parameter can be one of the following values:
  *         UART1, UART2.
  * @param  NewState: new state of the Line.
  *         This parameter can be: ENABLE or DISABLE.
  * @retval None
  */
void UART_BreakLine(MDR_UART_TypeDef* UARTx, FunctionalState NewState)
{
  /* Check the parameters */
  assert_param(IS_UART_ALL_PERIPH(UARTx));
  assert_param(IS_FUNCTIONAL_STATE(NewState));

  if (NewState != DISABLE)
  {
    /* Set BRK bit in the UART LCR_H register */
    UARTx->LCR_H |= LCR_H_BRK_Set;
  }
  else
  {
    /* Reset BRK bit in the UART LCR_H register */
    UARTx->LCR_H |= LCR_H_BRK_Reset;
  }
}
Закрыть


В обоих случаях в 1 устанавливаются все прочие биты, кроме нужного. Следует использовать оператор &=, а не |=
Например, правильно сброс бита сделан в функции void UART_Cmd(MDR_UART_TypeDef* UARTx, FunctionalState NewState):
UARTx->CR &= CR_EN_Reset;
Открыть void UART_Cmd(MDR_UART_TypeDef* UARTx, FunctionalState NewState)
Код:
/**
  * @brief  Enables or disables the specified UART peripheral.
  * @param  UARTx: Select the UART peripheral.
  *         This parameter can be one of the following values:
  *         UART1, UART2.
  * @param  NewState: new state of the UARTx peripheral.
  *         This parameter can be: ENABLE or DISABLE.
  * @retval None
  */
void UART_Cmd(MDR_UART_TypeDef* UARTx, FunctionalState NewState)
{
  /* Check the parameters */
  assert_param(IS_UART_ALL_PERIPH(UARTx));
  assert_param(IS_FUNCTIONAL_STATE(NewState));

  if (NewState != DISABLE)
  {
    /* Enable the selected UART by setting the UARTEN bit in the CR register */
    UARTx->CR |= CR_EN_Set;
  }
  else
  {
    /* Disable the selected UART by clearing the UARTEN bit in the CR register */
    UARTx->CR &= CR_EN_Reset;
  }
}
Закрыть


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

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 336
Откуда: ПКК "Миландр"
Спасибо, исправление войдет в следующее обновление.

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


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

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1270
Откуда: Тула
Vasiliy писал(а):
Спасибо, исправление войдет в следующее обновление.

Некая публичность и доступность библиотеки в итоге реализована через StartMilandr?

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


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

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


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

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


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

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