Jump to content

    

Igor_FPGA

Участник
  • Content Count

    12
  • Joined

  • Last visited

Everything posted by Igor_FPGA


  1. Всем огромное спасибо за критику. Переделал. Сделал близко по даташиту. Компоненты посчитал в калькуляторе плюс посмотрел Eval board. Прошу критику нового варианта. 3.3 В: 4В:
  2. Платка очень маленькая плюс есть ограничения по конструкции. Невозможно здесь соблюсти одну строгую топологию по даташиту, которую я видел конечно и пытался сделать близко к ней. Думаете чисто плохая топология? Катушку все-таки надо с другой стороны. Отверстия и пр. я исправлю.
  3. Добрый день. Бьюсь с проблемой уже недели 3 - все знакомые смотрели, никто не знает в чем проблема. На маленькой платке разместили два TPS63020. Перепробовали уже несколько топологий, разные люди паяли, с разными флюсами и т.д. Увеличивали емкость на входе, выходе, уменьшали, катушку ставили 2.2 мГн. Итог один: схема, которую приложил - без нагрузки кушает 14.4 мА. На выходе того, что должен 4В выдавать 0.85 В. Если выпаять TPS63020, который должен 4В выдавать и оставить только тот, который дает 3.3 будет 7.2 мА, если заменить ему катушку на 2.2 мГн, то 6.4 мА. Напряжение на выходе правильное. Собственно может быть кто может помочь, я в уже отчаялся, почему они так много потребляют без нагрузки? Почему 4В не запускается? Буду благодарен за любую помощь.
  4. Добрый день. Подключили к STM32F103ZFH 1Mx16 SRAM (CY62167EV30) по FSMC, согласно даташиту цикл чтения - 45 нс. На другой банк подключили китайский дисплей с контроллером ST7789S, шина 8 бит. Инициализировали одинаковым кодом (!), кроме CS конечно (ST7789S нужно бы как 8 бит, но проблема не в нем). Результат по осциллографу - период импульсов записи в дисплейный контроллер ~150-200 нс. Запись/чтение в SRAM - в лучшем случае 350 нс. Почему могут различаться скорости на шинах? Есть какие-нибудь идеи? Код инициализации обоих FSMC привел. Спасибо void FSMC_Init(void) { FSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure; FSMC_NORSRAMTimingInitTypeDef p; GPIO_InitTypeDef GPIO_InitStructure; /* Enable the FSMC Clock */ RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE | RCC_APB2Periph_GPIOF | RCC_APB2Periph_GPIOG, ENABLE); /*-- GPIO Configuration ------------------------------------------------------*/ /*!< NOR Data lines configuration */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_14 | GPIO_Pin_15; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOD, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOE, &GPIO_InitStructure); /*!< NOR Address lines configuration */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOF, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOG, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOD, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOE, &GPIO_InitStructure); /*!< NOE and NWE configuration */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOD, &GPIO_InitStructure); /*!< BLE and BHE configuration */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOE, &GPIO_InitStructure); /*!< NE2 configuration */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOG, &GPIO_InitStructure); /*-- FSMC Configuration ----------------------------------------------------*/ p.FSMC_AddressSetupTime = 0x01;//5; p.FSMC_AddressHoldTime = 0x00; // don't care p.FSMC_DataSetupTime = 2; //5; p.FSMC_BusTurnAroundDuration = 0x00; p.FSMC_CLKDivision = 0x00; // don't care p.FSMC_DataLatency = 0x00; // don't care p.FSMC_AccessMode = FSMC_AccessMode_A; FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM2; FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable; FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM; FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b; FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable; FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait = FSMC_AsynchronousWait_Disable; FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low; FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable; FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState; FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable; FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable; FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable; FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable; FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p; FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p; FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure); /*!< Enable FSMC Bank1_NOR Bank */ FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM2, ENABLE); } void SRAM_Init(void) { ... /*!< NE1 configuration */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOD, &GPIO_InitStructure); ... FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1; ... FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE); }
  5. Основное да - трекеры. Сумма, оформление меня не смущают. Присылайте резюме, части исходников, список проектов релевантных проектов STM32 + FreeRTOS/GSM.
  6. Центр, Достоевская/Новослободская
  7. Добрый день, на постоянную работу в офис в Москве требуется опытный программист STM32 микроконтроллеров. Необходим подтвержденный проектами, исходниками, знаниями опыт не менее 2-х лет с STM'кой, опыт с FreeRTOS, опыт с беспроводными модулями (наиболее желаемо - GSM, но и др. полезно/приемлимо). Важен дисциплинированный подход, удаленка/совместительство не рассматривается. Область разработки - носимые устройства. Зарплата - абсолютно адекватна рынку, обсуждается лично, т.к. сильно зависит от опыта. Присылайте резюме на: avromelec@gmail.com
  8. Ох, ну и обсуждение. Электродетонатор ))) Всем спасибо за участие. Исполнитель выбран, вопрос закрыт ;-)
  9. Здравствуйте, требуется отрассировать плату и предоставить проект + Gerber'ы. Плата по фотографии схемы, приложенной к сообщению. Посадочные места во второй картинке. Контур платы - окружность диаметра 70 мм. Ограничения под производство в Резоните. Вопросы и предложения с указанием цены + срока на почту: dmitry@crm.moscow Спасибо
  10. Добрый день. Нужно написать на C для компиляции в CodeVisionAVR: 1. Функцию общения по SPI с датчиком давления LPS331APTR ф. ST. Скорее даже две функции init() - для первоначального включения и отправки начальных параметров (я не знаю точно нужно это или нет - надо разобраться). И собственно int press() - для получения значения текущего давления. 2. Функцию общения с микросхемой драйвера шагового двигателя - TMC260. Также инициализация - нужно понять какие параметры есть - я скажу какие важны - их вынести как параметры функции init (<par1>, ... <parX>). И функцию общения с ним: go(char dir, int step) - двигаться в направлении dir step шагов. Предусмотреть разгон и торможение - частота следования шагов плавно нарастает и убывает - довольно просто по формуле - объясню. Возможно дальнейшее сотрудничество в подобном роде. Предложение на почту: avromelec@gmail.com Лучше сразу с условиями - ТЗ по-моему довольно понятное. Спасибо.
  11. Добрый вечер! Возникли несколько вопросов по временным ограничениям в Xilinx. 1. В кристалл заводится N групп сигналов (грубо говоря некая шина данных). Каждая группа имеет свою собственную частоту. Задержка от входа ПЛИС до вычислительной логики для каждой группы не принципиальна, но важно, чтобы все сигналы группы были синхронны, максимум разбегались друг относительно друга на 1-1.5 нс. Если бы в каждой группе был клок, то как я понимаю можно было бы задать Timing Name Net с фиксированным периодом. Я прав? 2. Клока в каждой группе нет, он синтезируется внутри ПЛИС, уникальный для каждой группы. Как синхронизировать сигналы между собой и ограничить их разбег друг относительно друга? 3. Некая группа сигналов была синтезированна внутри ПЛИС. Время прохождения до выходных пинов не принципиально, но важно, чтобы они не разбегались друг относительно друга (на 1-2 нс). Клок имеется. Как это можно реализовать? Спасибо.