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

proga

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

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

  • Посещение

Сообщения, опубликованные proga


  1. Здравствуйте. Пытаюсь применить функцию Swap->Functions, но никак не получается это сделать. Я создал в CAPTURE гомогенный символ, состоящий из 8 gate. В каждом вентиле по два контакта. Соответствующим контактам каждого вентиля присвоил одинаковый PinGroup, то есть у меня получились две группы 1 и 2. Однако в PCB Designer при активировании команды Swap->Functions, я выбираю один из swap выводов и получаю сообщение (SPMHA2-23): No functions are swappable with the selected function ... pick again. Когда я пытаюсь произвести замену на уровне отдельных контактов, то есть задействую Swap->Pins, всё работает нормально, при выборе одного из выводов подсвечиваются остальные 7 контактов группы, с которыми я могу произвести замену. Что я делаю не так?

  2. Ошибка возникает при создании нетлиста, а именно на этапе Updating Allegro PCB Editor Board. Несмотря на то, что путь к созданной мной библиотеке корпусов прописан, программа её не обнаруживает. Собственно, всё написано в первом моём сообщении. В итоге, я перерисовал все корпуса в PCB Editor, так как, к сожалению времени у меня в обрез. Уже с этими корпусами на стадии создания нетлиста абсолютно никаких проблем не возникло. Проблема, возникшая у меня, в высшей степени странная: почему у меня корпуса не воспринимаются программой, а у вас с ними никаких проблем не возникает? Когда будет время, обязательно с этим разберусь. Большое спасибо за то, что пытались мне помочь!!!

  3. к сожалению, применение команды по очищению лишних падов

    Tools -> Padstack -> Modify Design Padstack -> Purge -> All
    в корпусах не привело к тому, что они стали видимы при создании нетлиста. Причём с корпусами, созданными в PCB Editor, изначально никаких проблем не наблюдается.
  4. К сожалению процедура Tools - Database check не помогла. Я пока только начинаю использовать PCB Editor в своей работе. Поэтому использовал для создания корпусов Package Designer, не учтя возможные проблемы с лицензией. Похоже это первые грабли, на которые я наступил, причём саданут они меня по лбу довольно сильно, так как корпусов я нарисовал немало. Загружаю один из проблемных DRA.

    SKE10.rar

  5. Здравствуйте. Возникла следующая проблема. В Package Designer я нарисовал несколько корпусов для компонентов моей схемы. Созданные dra и psm складировал в одну папку, путь к которой прописал в PCB Editor: User Preferences Editor -> Paths -> Library -> psmpath. Однако при попытке создать netlist схемы получаю ошибку. В netrev выводятся ошибки следующего вида:

     

     

    WARNING(SPMHNI-192): Device/Symbol check warning detected. [help]

     

    WARNING(SPMHNI-194): Symbol 'SKE10' for device 'SKE10B-05_SKE10_SKE10B-05' not found in PSMPATH or must be "dbdoctor"ed.

     

    Когда захожу в PCB Editor при выборе команды Place -> Manually ->Package Symbols я вижу в опциях созданные мной корпуса, однако при попытке выбора одного из них получаю ошибку

    W- (SPMHA1-230): Database has a non-recoverable corruption. Contact Cadence customer support.

    E- Cannot load symbol 'AG5100'

     

    Не могу понять, что не так. Может быть недостаточно просто указать путь к папке с новыми корпусами и процесс создания библиотеки не так тривиален? Или надо выполнить какие-либо действия по обновлению базы данных?

  6. К сожалению, нет. В итоге, я использовал трансивер физического уровня dp83640 с поддержкой протокола IEE 1588 и на его основе успешно реализовал поддержку протокола PTP в своём проекте. Я задавал вопрос в комьюнити STM по данной проблеме и, судя потому, как они резко прекратили обсуждения, после того, как я послал им проект, в котором можно наблюдать проявление данной проблемы, я сделал вывод, что это аппаратный баг, который делает невозможным реализацию протокола PTP только средствами контроллера STMF417. Хотя возможно я и ошибаюсь.

  7. Спасибо всем за советы. К сожалению они не помогли. Я просмотрел код через дизасемблер. Копилятор отработал нормально. Дело не в том, что некорректна проверка флага, а в том, что флаг изначально не сбрасывается, либо сбрасывается и тут же устанавливается логикой. Как я уже писал, при пошаговом прохождении этой части кода программа исполняется нормально. А вот при выполнении программы налету она застревает в этом цикле. Возникает ощущение, что логика всё же возвращает флаг на место, просто в пошаговом режиме почему-то не может этого сделать. Скорее всего я, что то делаю не так, хоть и ума не приложу в чём я ошибаюсь. Ну что ж, буду думать.

  8. Здравствуйте. Я разрабатываю программу на базе микроконтроллера STM32F417. У меня возникла проблема следующего характера. В одной части своей программы мне необходимо запретить DMA исполнение. Делаю я это стандартным способом

     

        
            DMA_Cmd(DMA1_Stream5, DISABLE); 
        while(DMA1_Stream5->CR & DMA_SxCR_EN);

    Однако программа в цикле застревает навечно. Если же я в отладчике пошагово исполняю этот кусок кода, то без проблем прохожу цикл.

    Если же я изменяю уровень оптимизации с O3 на O1, то программа начивает застревать раньше в подобном же блоке

        DMA_Cmd(DMA2_Stream0, DISABLE);
        while(DMA2_Stream0->CR & DMA_SxCR_EN);

    , который раннее при оптимизации O3 программа проходила без проблем. Прошу помощи в разрешении данной проблемы.

  9. Я сейчас разрабатываю программу на базе платы TE-STM32F417MCU. В ней я пытаюсь, в том числе, реализовать поддержку PTP протокола. Однако я столкнулся со следующей проблемой.Системный таймер, ответственный за PTP, генерирует прерывание, если его текущее время превышает значение, записанное в регистрах target time. При этом устанавливается флаг TSTS в регистре ETH_MACSR. Данный флаг очищается как только производится чтение из регистра ETH_MACSR, так гласит Reference manual. Однако в режиме отладки я наблюдал , что после прочтения регистра никакого снятия флага TSTS не происходит и программа застревает в обработчике. Вследствие этого пришлось ввести в обработчик цикл, который снова и снова считывает содержимое регистра ETH_MACSR

    до тех пор пока флаг TSTS не очищается. Однако этого я смог добиться только в режиме отладки. Когда же я прошиваю контроллер и запуская его на исполнение без программатора, то программа застревает в этом цикле навечно, т.е флаг TSTS так и не сбрасывается. Буду благодарен любым соображениям по этому поводу . Спасибо

  10. Такое поведение наблюдается, когда входы BOOTx недостаточно уверенно затянуты на соответствующие уровни: при включении питания процессор может попасть либо во строенный bootloader, либо вообще начать исполнять чушь из RAM, что и выглядит, словно программа не запустилась. Если же дать затем сброс при стабильном питании, а значит - стабильных уровнях на BOOTx, - всё запускается верно.

    Спасибо за информацию

  11. Я сейчас разрабатываю программу на базе платы TE-STM32F417MCU. Обнаружилась странная проблема. После прошивки контроллера, программа не стартует сразу после включения питания. Однако, если я принудительно (кнопкой) сбрасываю его, то программа начитает исполняться. Буду благодарен любым соображениям по этому поводу. Я пока грешу на неэффективность системы POR. Спасибо

  12. У меня возникла проблема следующего характера. В последнее время при попытке загрузить программу в контроллер стала появляться ошибка "Flash Timeout. Reset the Target and try it again." В программе не оперирую регистрами управления флешь-памятью. В своей работе я использую ST-LINK. В утилите STM32 ST-LINK Utility я получаю сообщение: "Cannot read memory! Disable Read Out Protection and retry." В окошке "Options Bytes" вижу, что Read out Protection: Level 1. Попытка изменить на Level 0 успехом не увенчалась. Раньше проблема решалась переустановкой Firmware программатора, однако теперь это лекарство уже не действует. Прошу помощи разобраться в причине данной проблемы и найти её решение. Спасибо.

  13. У меня возникла проблема следующего характера. В разрабатывамом мной проекте необходимо осуществлять передачу данных, оцифрованных в ADC, по Ethernet (UDP протокол). АЦП работает в режиме 500 кГц. Собственно код инициализации АЦП:

    	
    	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2 | RCC_AHB1Periph_GPIOC, ENABLE);
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
    ADC_DeInit();
    //CONFIGURE DMA FOR ADC
    DMA_InitStructure.DMA_Channel = DMA_Channel_0;
    DMA_InitStructure.DMA_PeripheralBaseAddr = ADC_DR_ADDRESS;
    DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)getbuf_ADC(0);
    DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;
    DMA_InitStructure.DMA_BufferSize = BUFSIZE_ADC;
    DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
    DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
    DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
    DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
    DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
    DMA_InitStructure.DMA_Priority = DMA_Priority_VeryHigh;
    DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Enable;
    DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull;
    DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
    /* DoubleBufferMode enable*/
    DMA_DoubleBufferModeConfig(DMA2_Stream0, (uint32_t)getbuf_ADC(1), (uint32_t)getbuf_ADC(0));
    DMA_DoubleBufferModeCmd(DMA2_Stream0, ENABLE);
    	DMA_Init(DMA2_Stream0, &DMA_InitStructure);
    //enable DMA interrupt
    DMA_ITConfig(DMA2_Stream0, DMA_IT_TC, ENABLE);
    NVIC_InitStructure.NVIC_IRQChannel = DMA2_Stream0_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
    	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);
       DMA_Cmd(DMA2_Stream0, ENABLE);
    //CONFIGURE GPIO FOR ADC; 
    /*ADC Channel 10 -> PC0*/
       GPIO_InitSt_C.GPIO_Pin = GPIO_Pin_0;
       GPIO_InitSt_C.GPIO_Mode = GPIO_Mode_AN;
       GPIO_InitSt_C.GPIO_PuPd = GPIO_PuPd_NOPULL;
       GPIO_Init(GPIOC, &GPIO_InitSt_C);
    /* ADC Common Init */
       ADC_struct.ADC_Mode = ADC_Mode_Independent;
       ADC_struct.ADC_Prescaler = ADC_Prescaler_Div8; //need	ADC_Prescaler_Div8
       ADC_struct.ADC_DMAAccessMode = ADC_DMAAccessMode_1;
       ADC_struct.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_20Cycles; //need ADC_TwoSamplingDelay_5Cycles
       ADC_CommonInit(&ADC_struct);
    	/* ADC Channels Init */
       ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
       ADC_InitStructure.ADC_ScanConvMode = DISABLE;
       ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
       ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
       ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
       ADC_InitStructure.ADC_NbrOfConversion = 1;
       ADC_Init(ADC1, &ADC_InitStructure);
       ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 1, ADC_SampleTime_3Cycles);
       ADC_DMARequestAfterLastTransferCmd(ADC1, ENABLE);
    /* Enable ADC1 DMA */
       ADC_DMACmd(ADC1, ENABLE);
    /* Enable ADC1 */
       ADC_Cmd(ADC1, ENABLE);

    Для управления сетью использую lwip_v1.3.2. Наблюдается следующая ситуация, изначально АЦП работает исправно, однако после того, как контроллер получает ARP пакет, содержащий MAC адрес собеседника, и начинает передавать ему данные, DMA АЦП тут же вылетает с ошибкой FIFO ERROR: FEIF0. Возникает ощущение, что DMA Ethernet отнимает доступ к шине у DMA ADC, в результате чего, тот не успевает вовремя забрать данные с приёмного буфера ADC. С другой стороны, скорость обновления небольшая, и у DMA ADC достаточно времени, чтобы забрать данные. Если, у кого-нибудь есть какие-либо соображения о причине неполадки, или же он уже встречался с такой проблемой, прошу высказаться. Спасибо.

  14. Здравствуйте. При создании компонента я хочу назначить ему определённую высоту. Однако я столкнулся со следующей проблемой. Когда я рисую place_bound_top компонента при помощи "Add Rect", то без проблем определяю параметр Package_Height_Max. Когда же мне необходимо получить place_bound_top не прямоугольной формы, то я создаю данный obstacle при помощи инструмента "Add Line". Однако при этом параметр Package_Height_Max в свойствах данного obstacle отсутствует.

    Скажите, пожалуйста, это техническое ограничение программы, или всё-таки для создания непрямоугольного obstacle можно применить другой, корректный способ.

  15. При редактировании REF DES я хочу изменить ширину линии шрифта. Для этого в options я изменяю параметр ширина линии (Line Width), однако визуально не наблюдаю никаких изменений (утолщение ширины линии в редакторе не происходит). Скажите, пожалуйста, что я неправильно делаю?

  16. В Layot после создания так называемых obstacles (рисунка шелкографии, outline и т.д.) возможно было их редактировать, перемещая отдельные сегменты относительно друг друга (это делалось при нажатой кнопке S). Скажите, пожалуйста, возможно ли и в PCB Design также оперировать отдельными сегментами, а не всем контуром сразу?

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