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

mkru

Участник
  • Постов

    34
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о mkru

  • Звание
    Участник
    Участник
  1. Спасибо! Очень доступно объяснили.
  2. Я видел эту статью. Цена ошибки высока. И я бы хотел знать конкретные марки припоев. Кстати, за ссылку на книгу, спасибо!
  3. Есть бронза БрБНТ1.9 из которой изготовлена пружинящий контакт. Данный контакт одним концом припаивается к плате. Каким припоем можно качественно запаять бериллиевую бронзу? Возможно, есть определенная технология подготовки и пайки. Подскажите, пожалуйста, кто в курсе.
  4. Да, Вы опять правы. Проблема на выходе PLL. Установил PREDIV1=8 (на входе PLL=1МГц), а PLLMULL=16 (на выходе PLL=16МГц) - работает. А если PREDIV1=8 (на входе PLL=1МГц), а PLLMULL=2 (на выходе PLL=2МГц) - не работает.
  5. Если это сигнал PLLCLK, то я не учитывал значение этой частоты. Крайний рабочий диапазон при предделителе PREDIV1=7, частота кварца 8МГц, и PLLMUL=2 получается, что сигнал PLLCLK=2,3МГц, что значительно меньше рекомендованной в Reference Manual. Вывел на МСО сигнал PLLCLK_Div2. При значении PREDIV1=8..16МГц, на выходе МСО частота 1,11МГц, что не много отличается от должного при PREDIV1=8 (должно быть 1МГц) и значительно при PREDIV1=16 (должно быть 0,5МГц). При PREDIV1=7 и ниже, значение расчетное. Все таки мне кажется это проблема из-за ограничения частоты на входе PLL (1..24 МГц), а не на выходе (16..24 МГц). Но все равно, нужно придерживаться рекомендуемых параметров о которых я не знал. Спасибо всем за помощь! С тактированием более менее разобрался, пора взяться за изучение таймеров.
  6. Не, не помогает.. Программа доходит до оператора while, но частота не меняется. Бит PLLON=1, PLLRDY=0, SW=10, SWS=00. Т.е. задание на включение PLL и тактрирование от PLL контроллер получает, но в эти состояния не входит.
  7. Сначала сигнала на выходе МСО нет. Затем разрешается МСО и частота на выводе РА8 - 25МГц, потом выбирается источник тактирования HSI и частота устанавливается на 8МГц. Затем программа зацикливается и ожидает готовность включения PLL, частота на РА8 при этом не меняется и равна 8МГц. Это картина при PREDIV1 >= 8. Т.е. когда частота на входе PLL очевидно равна 1МГц и меньше.
  8. Т.к. эта проблема появляется при PREDIV1=8, что уменьшает частоту на входе PLL до 1 МГц то, видимо, как Вы и писали, блок PLL просто не заводится. Отладку уж трогать не буду, но если чего сам на STM32 сделаю, увеличю значение кварца и посмотрю как себя будет вести контроллер при PREDIV1. Спасибо scifi!
  9. Я полагаю 1..24МГц это гарантированный диапазон и PLL должен бы с ним нормально работать во всем диапазоне температур. А при комнатной температуре нижняя планка вполне могла бы опуститься до значения значительно ниже 1МГц. Но, возможно, Вы правы. Благодарю за ответ.
  10. Всем доброго дня! Взял отладку STM32VL Discovery (на STM32F100RBT6). Работаю с блоком RCC: беру частоту с внешнего кварца 8МГц (HSE) пропускаю через предделитель PREDIV1 и умножаю в блоке PLLMUL. Показания системной частоты SYSCLK снимаю осциллографом на выводе MCO (ножка PA8) см. рис. Так вот частота SYSCLK выдается предсказуемо до тех пор пока предделитель PREDIV1 установлен в значении от 1 до 7. А вот если PREDIV1 в значении от 8 и выше (до 16), то программа не выполняется до конца и зацикливается на строчке: while (!(RCC->CR & RCC_CR_PLLRDY));// Ожидание готовности PLL. В этот момент контроллер тактируется от внутреннего генератора (HSI), поэтому на выводе MCO вижу частоту 8МГц. В чем может быть проблема? Вот сам код: #include "stm32f10x.h" #include "stm32f10x_gpio.h" #include "stm32f10x_rcc.h" void init_PLL ( unsigned long int HSE_PREDIV,unsigned long int PLLMUL,unsigned long int HSI_OR_HSE) { // Проверяем тактируемся ли мы от HSI (), если мы уже сцеплины с HSI тогда можно начать подготовку двух других блоков HSE и PLL if((RCC->CFGR&RCC_CFGR_SWS) != RCC_CFGR_SWS_HSI)// МК тактируется не от HSI { RCC->CIR |= RCC_CIR_HSIRDYC; // сброс флага RCC_CR_HSIRDY RCC->CR |= RCC_CR_HSION; // Запуск HSI while (!(RCC->CR & RCC_CR_HSIRDY));// Ожидание готовности HSI. RCC->CFGR &= ~(RCC_CFGR_SW_0|RCC_CFGR_SW_1); // Переключаем на HSI while ((RCC->CFGR&RCC_CFGR_SWS) != RCC_CFGR_SWS_HSI); // Ожидание переключения на HSI. } RCC->CR &= ~RCC_CR_PLLON; // ВЫКЛЮЧАЕМ PLL. if(HSI_OR_HSE){ //определяем что заводить в PLL RCC->CFGR |= RCC_CFGR_PLLSRC_PREDIV1; // заводить в блок PLL HSE RCC->CFGR2 = HSE_PREDIV; //заносим делитель } else RCC->CFGR &= ~RCC_CFGR_PLLSRC_PREDIV1; // заводить в блок PLL HSI RCC->CFGR &= ~RCC_CFGR_PLLMULL; // Очистить биты PLLMULL RCC->CFGR |= PLLMUL; //Устанавливаем значение множителя PLLMULL RCC->CIR |= RCC_CIR_PLLRDYC; // сброс флага RCC_CR_PLLRDY RCC->CR |= RCC_CR_PLLON; // Запустить PLL. while (!(RCC->CR & RCC_CR_PLLRDY));// Ожидание готовности PLL. RCC->CFGR &=~RCC_CFGR_SW; // Очистить биты SW0 и SW1 RCC->CFGR |= RCC_CFGR_SW_PLL; //(Выбираем PLL источником для SYSCLK) while ((RCC->CFGR&RCC_CFGR_SWS)!=RCC_CFGR_SWS_PLL); // Ожидание переключения на PLL. } int main(void) { RCC->APB2ENR |= RCC_APB2ENR_IOPAEN; // Разрешение тактирования I/O порта A ( 0x00000004 ) GPIOA->CRH = 0x0000000B; // Вывод PA8 в альтернативную функцию (CNF0= 0; CNF1= 1; MODE0= 0; MODE1= 1; ) RCC->CFGR |= RCC_CFGR_MCO_SYSCLK; // Выбрать ситемный тактовый сигнал ( 0x04000000 ) init_PLL ( RCC_CFGR2_PREDIV1_DIV7, RCC_CFGR_PLLMULL2, RCC_CFGR_PLLSRC_PREDIV1); while (1){ }; } main.txt
  11. Схема работы, как я понимаю, будет такая: на одном порту сим работает постоянно, а на втором порту будут висеть две симки, которые можно будет переключать?
  12. Озадачился поиском 3-х симочного GSM-модуля. Пока нашел тока 2-х симочные SIM900-DS и HL6528. Может кто встречал такой? Как вариант, подскажите как из 2-х симочного реализовать 3-х симочный. Желательно, чтобы все три симки одновременно были на приеме (режим Dual-SIM Dual-Standby).
  13. Вообщем, проблема была в том, что у разъема были нарисованы полигоны и линии, а пина самого не было.. Там так явно не видно этого. Хотя текст "пин намбер" я как то умудрился туда вставить.. И, соответственно, это вызывало ошибку. Как то тяжко в этом редакторе начинать работать, много настроек.. Uree тебе спасибо, что помог разобраться..
  14. Спасибо за помощь! Хоть теперь понятна процедура. Если я вышлю библиотеку пинов и фоотпринтов, а также dsn файл, то это поможет обнаружить ошибку?
  15. Пути к падам, фоотпринтам и степ-моделям указаны. А что такое фронт-энд тул? Вот принтскрин окна, какие настройки указать? Вот еще.. в Import Logic нажимаю на Import Cadence и получаю сообщение об ошибках, суть которой, как я понял, что у символа 'CIR1600DRL1000UM' не указан пин "1". Но в Allegro Package я вижу, что Pin_Namber указан (---------------------------------------------------------------------) ( ) ( Allegro Netrev Import Logic ) ( ) ( Drawing : wd.brd ) ( Software Version : 16.6S019 ) ( Date/Time : Tue Jun 03 13:39:47 2014 ) ( ) (---------------------------------------------------------------------) ------ Directives ------ RIPUP_ETCH FALSE; RIPUP_DELETE_FIRST_SEGMENT FALSE; RIPUP_RETAIN_BONDWIRE FALSE; RIPUP_SYMBOLS ALWAYS; Missing symbol has error FALSE; SCHEMATIC_DIRECTORY 'D:/WORK/ElsterMetronica/PROJECT/TEST-EM/WD/allegro'; BOARD_DIRECTORY ''; OLD_BOARD_NAME 'wd.brd'; NEW_BOARD_NAME 'wd.brd'; CmdLine: netrev -$ -i D:/WORK/ElsterMetronica/PROJECT/TEST-EM/WD/allegro -y 1 -v D:/WORK/ElsterMetronica/PROJECT/TEST-EM/WD/#Taaaaaj05992.tmp ------ Preparing to read pst files ------ Starting to read D:/WORK/ElsterMetronica/PROJECT/TEST-EM/WD/allegro/pstchip.dat Finished reading D:/WORK/ElsterMetronica/PROJECT/TEST-EM/WD/allegro/pstchip.dat (00:00:00.09) Starting to read D:/WORK/ElsterMetronica/PROJECT/TEST-EM/WD/allegro/pstxprt.dat Finished reading D:/WORK/ElsterMetronica/PROJECT/TEST-EM/WD/allegro/pstxprt.dat (00:00:00.00) Starting to read D:/WORK/ElsterMetronica/PROJECT/TEST-EM/WD/allegro/pstxnet.dat Finished reading D:/WORK/ElsterMetronica/PROJECT/TEST-EM/WD/allegro/pstxnet.dat (00:00:00.00) ------ Oversights/Warnings/Errors ------ #1 ERROR(SPMHNI-191): Device/Symbol check error detected. ERROR(SPMHNI-195): Symbol 'CIR1600DRL1000UM' for device 'CIR1600DRL1000UM_CIR1600DRL1000' is missing pin '1'. #2 ERROR(SPMHNI-191): Device/Symbol check error detected. ERROR(SPMHNI-195): Symbol 'CIR1600DRL1000UM' for device 'CIR1600DRL1000UM_CIR1600DRL10_1' is missing pin '1'. #3 ERROR(SPMHNI-191): Device/Symbol check error detected. ERROR(SPMHNI-195): Symbol 'CIR1600DRL1000UM' for device 'CIR1600DRL1000UM_CIR1600DRL10_2' is missing pin '1'. #4 ERROR(SPMHNI-191): Device/Symbol check error detected. ERROR(SPMHNI-195): Symbol 'CIR1600DRL1000UM' for device 'CIR1600DRL1000UM_CIR1600DRL10_3' is missing pin '1'. ------ Library Paths ------ MODULEPATH = . C:/Cadence/SPB_16.6/share/local/pcb/modules PSMPATH = D:/WORK/Cadence/Library/My/PCB_Editor/Footprint/ D:/WORK/Cadence/Library/Dropbox/nii_allegrolib/ PADPATH = D:/WORK/Cadence/Library/Dropbox/nii_pins/ D:/WORK/Cadence/Library/My/PCB_Editor/Pins/ ------ Summary Statistics ------ #5 Run stopped because errors were detected netrev run on Jun 3 13:39:47 2014 DESIGN NAME : 'WD' PACKAGING ON Oct 28 2013 13:12:55 COMPILE 'logic' CHECK_PIN_NAMES OFF CROSS_REFERENCE OFF FEEDBACK OFF INCREMENTAL OFF INTERFACE_TYPE PHYSICAL MAX_ERRORS 500 MERGE_MINIMUM 5 NET_NAME_CHARS '#%&()*+-./:=>?@[]^_`|' NET_NAME_LENGTH 24 OVERSIGHTS ON REPLACE_CHECK OFF SINGLE_NODE_NETS ON SPLIT_MINIMUM 0 SUPPRESS 20 WARNINGS ON 5 errors detected No oversight detected No warning detected cpu time 0:00:42 elapsed time 0:00:00
×
×
  • Создать...