Перейти к содержанию
    

Добрый день!

Не поможет ли кто с кварцем XT1 в MSP430F5172?

Нужно завести на 25 МГц.

(В MSP430F5172 XT1 может работать на этой частоте, по DataSheet по крайней мере).

Вот код инициализации:

...

 

unsigned long i = 0; // Work variable.

//---------------------------------------------------------------------------

 

 

// Set of the pin select function.

// 0 - Port I/O, 1 - Function.

 

PJSEL = 0x30; // 4,5 - Quartz.

 

// Control disable of the Port Map.

 

PMAPKEYID = 0x2D52; // Set of the allowing acess to the Port map register.

PMAPKEYID = 0x0000; // Disable of the reconfiguration.

//

// Set of the Vcore voltage.

// The levels should be increased only step by step.

//

// 0 1,8 - 2,0 V Ft < 8 MHz

// 1 2,0 - 2,2 V 8 MHz < Ft < 12 MHz

// 2 2,2 - 2,4 V 12 MHz < Ft < 20 MHz

// 3 2,4 - 3,6 V 20 MHz < Ft < 25 MHz

 

SetVCoreUp (1); // Set of the level one

for (i = 0; i < 10000; i++); // Little delay.

SetVCoreUp (2); // Set of the level two

for (i = 0; i < 10000; i++); // Little delay.

SetVCoreUp (3); // Set of the level three

for (i = 0; i < 10000; i++); // Little delay.

 

// Set of the Clock parametrs.

 

// UCSCTL6 &= ~XT1OFF; // Switch on of the XT.

// UCSCTL6 &= ~XT1BYPASS; // Set of the external crystall.

// UCSCTL6 |= XTS; // Set of the hign frequency for XT1.

 

// UCSCTL6

// Btgining value 1100 0001 1100 1101 = 0xC1CD

// Bits 8-15. Control of the XT2 do not change. Bit 8 = 1 - XT2 unswitch.

// Bits 6,7 = 11. Maximum frequency for the XT1.

// Bit 5 = 1. High frequency work of the XT1.

// Bit 4 = 0. XT1 - resonator.

// Bit 2, 3 = 00. Unswitch of the internal capacitors.

// Bit 1 = 0. SMCLK switch on.

// Bit 0 = 0. XT1 switch on.

// The value is 1100 0001 1110 0000 = 0x C1E0

 

UCSCTL6 = 0xC1E0; // Set of the UCSCTL6 value.

 

// Check LFXT1 fault flag

 

i = 0; // Control of the XT1 failure. (1, if failure is occured)

while ((UCSCTL6 & XT1LFOFFG) && (i < 500000))

{

UCSCTL7 &= ~(XT1LFOFFG); // Clear LFXT1 fault flag

SFRIFG1 &= ~OFIFG; // Clear the global fault flag. In case the LFXT1 caused the global fault flag to get

// set this will clear the global error condition. If any error condition persists,

// global flag will get again.

i = i + 1;

}

 

if ((UCSCTL7 & XT1LFOFFG) == XT1LFOFFG)

{

Err_Init |= Err_XT1;

}

else

{

// UCSCTL4 |= SELA__XT1CLK; // Switch of the ACLK to XT1.

// UCSCTL4 |= SELS__XT1CLK | SELM__XT1CLK; // Switch of the SMCLK and MCLK clocks to XT1.

UCSCTL4 = 0; // Switch all of the clock to XT1.

}

 

...

 

Как видите, пробовал по-разному.

Отдельно кварц проверял и заменял.

Осциллоскопом видно, что заводится странно - не 25 МГц, а шумоподобно, на частоте около 500 КГц.

Пробовал на другой плате - то же самое.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кварц заведомо на основную гармонику? 25МГц-кварц может оказаться гармониковым (3-я, 5-я).

Примечания 5, 6 к характеристикам XT1 в HFM увидели?

Другие параметры кварца известны?

Нагрузочные конденсаторы есть? Какие?

Изменено пользователем Obam

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, сейчас посмотрю примечания.

 

,Да, по 12 пФ, как рекомендуют Supplier-ы кварца.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

"// Bit 5 = 1. High frequency work of the XT1."

"while ((UCSCTL6 & XT1LFOFFG) && (i < 500000))

{

UCSCTL7 &= ~(XT1LFOFFG); // Clear LFXT1 fault flag

SFRIFG1 &= ~OFIFG; // Clear the global fault flag. In case the LFXT1 caused the global fault flag to get

// set this will clear the global error condition. If any error condition persists,

// global flag will get again.

i = i + 1;

}"

 

В UCSCTL6 нет бита XT1LFOFFG - это раз.

Включили HFM, а проверяем флаг для LFM - это два.

 

"Copy-paste" погубит програмистский мир.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо. Помогло. Как хорошо, когда заводится кварц.

 

Что именно помогло?

 

Вот дожили: кварц завёлся - праздник.

Изменено пользователем Obam

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что именно помогло?

 

Если честно, 25 МГц кварц так и не смог завести. Все параметры кварца лучше предельно допустимых, указанных в

DataSheet, как минимум, в два раза. Первая гармоника. Отдельно, в приспособлении - отлично заводится, держит

минус 20.

С битом проверки наличия генерации - просто задержку ставил на 5 секунд - куда уж больше - не заводится.

 

Время сильно поджимает - отложил исследование на потом.

Поставил часовой кварц - он с песнями завёлся - и ФАПЧ-ем микроконтроллера получил требуемые 25 МГц.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чума!!! Ничего не работает, но "Помогло. Как хорошо…" и далее по тексту :)

 

С лажей исходника из поста #1 что было?

Изменено пользователем Obam

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чума!!! Ничего не работает, но "Помогло. Как хорошо…" и далее по тексту :)

 

С лажей исходника из поста #1 что было?

 

Косяк в коде исправил, но дело не в нём. Я уже писал, что условный цикл заменял на 5-секундную задержку.

Пока просто отложил. Сдам Заказ - попробую понять. TI косяков не делает - чисто моё недопонимание.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день.

тоже имею данную проблему на этом камне.

    PMM_setVCore(PMM_CORE_LEVEL_2); // Vcore setting of at max 3 for 24MHz MCLK
    //XT1
    PJSEL = BIT5 | BIT4;                           // Port select XT1

    UCSCTL6 &= ~(XT1OFF + XT1BYPASS);        // XT1 On
    UCSCTL6 |= XCAP_3 + XTS_L + XT1DRIVE_2;  // XT1 Selects high-freq. oscillator 12MHz

    //UCSCTL7 &= ~(XT1HFOFFG + XT1LFOFFG + DCOFFG);   // Clear XT1, DCO fault flags
    //SFRIFG1 &= ~OFIFG;                              // Clear fault flags

    // Loop until XT1 fault flag is cleared
    do {
        UCSCTL7 &= ~(XT1HFOFFG + XT1LFOFFG + DCOFFG);   // Clear XT1, DCO fault flags
        //UCSCTL7 &= ~XT1HFOFFG;                // Clear XT1 fault flags
        SFRIFG1 &= ~OFIFG;                              // Clear fault flags
    } while (UCSCTL7 & XT1HFOFFG);             // Test XT1 fault flag

    UCSCTL4  = SELA__REFOCLK + SELS__XT1CLK + SELM__XT1CLK;
                                              // Set ACLK  = REFO
                                              // Set MCLK  = XT1CLK
                                              // Set SMCLK = XT1CLK
    UCSCTL5  = DIVA_0 + DIVS_0 + DIVM_0;

и XT1HFOFFG всегда 1.

Пробовал режимы питания, CAP_0, CAP_1, CAP_2, CAP_3 хотя они вроде тольно дляLF

разные варианты, что видно по комментам, и даже разные кварцы.

Что не так ?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для начала, попроверяйте логику установки-сброса бит в операторах. 

Замените "плюсы" в правой части выражений на "|".

Это в смысле, что желание установить-сбросить настроечные биты задекларировано, но компилятор написанное интерпретирует иначе.

В отладчике пройдитесь по коду с построчной проверкой через регистры.

В-общем-то, можно в томже отладчике и биты регистров установить-сбросить с мониторингом на осцилографе наличия генерации.

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поменял на | но я и до этого проходил под отладкой.

Все работает верно до момента сброса флагов, вот их оно не сбрасывает, ни на такт.

Генерация отсутствует. все XT1HFOFFG,  XT1LFOFFG, DCOFFG == 1

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проверьте, что порт P J4,5 полностью настроен. А именно, работает только как выводы для генератора. (таблица внизу)

image.thumb.png.0443787e33d4bdb659ab4504dbf30e47.png

(XT1BYPASS д.б. == 0)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

UCSCTL6 |= XCAP_3 + XTS_L + XT1DRIVE_2;

XTS_L - для низкочастотных. Для ВЧ должна быть 1.  SLAU208Q pg.181

 

ps

On some devices, the XT1 oscillator also supports high-speed crystals or resonators when in highfrequency (HF) mode (XTS = 1). The high-speed crystal or resonator connects to XIN and XOUT and
requires external capacitors on both terminals. These capacitors should be sized according to the crystal
or resonator specifications.
pg 163  

(вроде как требуются внешние конденсаторы на кварц)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...