Миландр

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

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




Начать новую тему  Ответить на тему  [ 214 сообщений ]  На страницу « 111 12 13 14 15
Автор Сообщение
 Заголовок сообщения: Re: 1986ВЕ92У, MDR32F9Q2I
СообщениеДобавлено: 2019-окт-03 13:16 
Не в сети

Зарегистрирован: 2018-дек-17 15:20
Сообщения: 77
Организация: частное лицо
Я такой код использую для запуска RTC.
Выводы PE6, PE7 не инициализирую как аналоговые, поскольку после включения питания и так уже.
typedef volatile unsigned int 		__io_reg;

typedef struct {
	__io_reg CLOCK_STATUS;
	__io_reg PLL_CONTROL;
	__io_reg HS_CONTROL;
	__io_reg CPU_CLOCK;
	__io_reg USB_CLOCK;
	__io_reg ADC_MCO_CLOCK;
	__io_reg RTC_CLOCK;
	__io_reg PER_CLOCK;
	__io_reg CAN_CLOCK;
	__io_reg TIM_CLOCK;
	__io_reg UART_CLOCK;
	__io_reg SSP_CLOCK;
} _rst_clk;


typedef struct {
	__io_reg REG_00;
	__io_reg REG_01;
	__io_reg REG_02;
	__io_reg REG_03;
	__io_reg REG_04;
	__io_reg REG_05;
	__io_reg REG_06;
	__io_reg REG_07;
	__io_reg REG_08;
	__io_reg REG_09;
	__io_reg REG_0A;
	__io_reg REG_0B;
	__io_reg REG_0C;
	__io_reg REG_0D;
	__io_reg REG_0E;
	__io_reg REG_0F;
	__io_reg RTC_CNT;
	__io_reg RTC_DIV;
	__io_reg RTC_PRL;
	__io_reg RTC_ALRM;
	__io_reg RTC_CS;
} _bkp;

#define BASE_RST_CLK		  (0x40020000)
#define BASE_BKP			  (0x400D8000)

#define BKP 				  ((_bkp    *) BASE_BKP)
#define RST_CLK 			  ((_rst_clk*) BASE_RST_CLK)

#define RTC_PRL					32768 //Same as LSE frequency
#define RTC_CALIBRATING			0

#define CLK_BKP 				27

//Wait while WEC[6] = 1
#define WaitRTCRegReady()       while(BKP->RTC_CS & (1 << 6)) __NOP();


void InitializeRTC()
{
	//1. Enable BKP clock
	RST_CLK->PER_CLOCK |= (1 << (u32)(CLK_BKP & 0x1F));

	//2. Turn RTC OFF
	BKP->REG_0F &= ~(1 << 4);

	//3. Reset bits: RTC_SEL[3..2], HSE_RTC_EN[8], HSI_RTC_EN[9]
	BKP->REG_0F &= ~(0x03 << 2);
	RST_CLK->RTC_CLOCK &= ~(0x03 << 8);

	//4.Set LSE_ON[0] = 1, wait LSE_RDY[13] = 1
	BKP->REG_0F |= (1 << 0);             
	while (!(BKP->REG_0F & (1 << 13))) __NOP();  

	//5. RTC_SEL[3..2] = 1 - select LSE
	BKP->REG_0F |= (0x01 << 2);

	//6. Set CAL[12..5] - mask count of ticks from 2^20
	BKP->REG_0F &= ~(0xFF << 5);
	BKP->REG_0F |= ((u8)CALIBRATING) << 5;

	//7. Set RTC_PRL[19..0]: speed = LSE_SPEED / prl = 1Hz
	WaitRTCRegReady();
	BKP->RTC_PRL = RTC_PRL;

	//8. Set SECF[1] = 1
	WaitRTCRegReady();
	BKP->RTC_CS |= (1 << 1);
	WaitRTCRegReady();


	//9. Turn RTC ON
	BKP->REG_0F |= (1 << 4);
}


Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: 1986ВЕ92У, MDR32F9Q2I
СообщениеДобавлено: 2019-окт-03 15:45 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 456
Организация: Milandr
Откуда: ПКК "Миландр"
Sergey3141592 писал(а):
А у вас установлена на плате батарейка, которая поддерживает питание BKP домена?
Нет, батарейками не пользуемся. Программатор тоже отключал, чтобы через него батарейный домен не запитывался.

Но я RTC не включал. На сколько я понял, проблема проявляется раньше - не раскачивается сам генератор LSE, не выставляется LSE_RDY бит. В своем проекте я включаю LSE и перевожу на него тактирование ядра.


Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: 1986ВЕ92У, MDR32F9Q2I
СообщениеДобавлено: 2019-окт-03 16:06 
Не в сети

Зарегистрирован: 2018-дек-17 15:20
Сообщения: 77
Организация: частное лицо
ElectroAlex писал(а):
Добрый день.
Пробую запустить RTC с внешним кварцевый и не получается инициализировать запуск генератора от внешнего кварца. Таймер с внутренним LSI генератором работает, а при попытке включения LSE не запускается. Дефект странный: при первом старте после включения питания генератор LSE не включается (бит LSE_RDY всегда низкий), а если сделать программный или аппаратный сброс то генератор включается. Может кто сталкивался с такой проблемой?
Я полагал речь идет про запуск RTC с использованием LSE генератора, поэтому спросил про батарейку - может ли ее отсутствие влиять на значения, которые записываются в BKP регистры при старте контроллера.


Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: 1986ВЕ92У, MDR32F9Q2I
СообщениеДобавлено: 2019-окт-09 13:35 
Не в сети

Зарегистрирован: 2010-апр-18 12:59
Сообщения: 67
Организация: АО "МНИИ" АГАТ"
Решил проблему радикальные способом, т.к. Данный экземпляр микроконтроллера не хотел запускать генератор никак. Заменил микросхему и с теме кодом генератор запустился сразу во всех условиях. Мистика прям таки...


Вынести предупреждение
Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 214 сообщений ]  На страницу « 111 12 13 14 15

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


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

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


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

Перейти: 

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