Jump to content

    

mag

Участник*
  • Content Count

    55
  • Joined

  • Last visited

Community Reputation

0 Обычный

About mag

  • Rank
    Участник

Контакты

  • ICQ
    Array

Информация

  • Город
    Array
  1. STM32F4 и HAL

    Конечно.
  2. STM32F4 и HAL

    Corvus, попробую немножко конкретизировать мой вопрос - информации по теме как настроить таймер достаточно. Думаю, что даже ref manuala будет в самый раз. Я хотел бы найти минимально необходимое для понимания работы описание функций и структур HAL. Чтобы не гадать как оно там сделано и что конкретно делает функция. Степеней свободы много. Аппаратура как заметили - сложная. По этой причине и описание на "обертку" должно быть и быть однозначным для интерпретации. :) Да, период работы таймера, но зачем его нужно задавать для режима "Output compare mode". Можно предположить, конечно, что есть возможность еще и менять "базу" таймера. В этом случае работает Autoreload в регистр счетчика? Хоть да, хоть нет, но функция/ее переменные должна быть описана полноценно иначе как можно ее использовать? Залез: /* Timer Output Compare functions **********************************************/ HAL_StatusTypeDef HAL_TIM_OC_Init(TIM_HandleTypeDef *htim); ................ /** * @brief TIM Time Base Handle Structure definition */ typedef struct { TIM_TypeDef *Instance; /*!< Register base address */ TIM_Base_InitTypeDef Init; /*!< TIM Time Base required parameters */ HAL_TIM_ActiveChannel Channel; /*!< Active channel */ DMA_HandleTypeDef *hdma[7]; /*!< DMA Handlers array This array is accessed by a @ref DMA_Handle_index */ HAL_LockTypeDef Lock; /*!< Locking object */ __IO HAL_TIM_StateTypeDef State; /*!< TIM operation state */ }TIM_HandleTypeDef; Ни больше ни меньше - столько же сколько и в описании на HAL drv. Прошу прощения, но пока описания на HAL скупое. scifi, зверь сложный. Но не всегда нужно выжать из него все :). Есть же и простые типовые задачи. В любом случае, речь не о том "ты за HAL или против HAL" :). Речь о истине - где почитать чтобы понять что же делает в своих потрохах HAL, и что этот самый HAL ждет от пользователя в качестве исходных данных. Пока ситуацию можно описать так - "пользователь, ты мне дай все что есть, а я там сам сделаю как смогу". При этом пользователю не дано чего -либо ожидать кроме HAL_StatusTypeDef. http://www.eevblog.com/forum/microcontroll...xx-hal-drivers/ нашел аналогичную темку.
  3. STM32F4 и HAL

    Corvus, нет, настрой "нормальный", без "мутности". Отказаться от HAL можно для случая когда все сам и долго и нудно. Если же хочется пользоваться готовыми и отлаженными вещами, что в терминологии ST названо middleware, то без HALа не пойдет дело. А по поводу параллелей, давайте на моем примере разберем: TIM_HandleTypeDef Data Fields TIM_TypeDef * Instance TIM_Base_InitTypeDef Init HAL_TIM_ActiveChannel Channel DMA_HandleTypeDef * hdma HAL_LockTypeDef Lock __IO HAL_TIM_StateTypeDef State TIM_Base_InitTypeDef Data Fields uint32_t Prescaler uint32_t CounterMode uint32_t Period uint32_t ClockDivision uint32_t RepetitionCounter Вот что нужно и нужно ли писать в выделенные поля и нужно ли и если да то зачем писать значение в uint32_t Period? Чтобы ответить на этот вопрос - пока вижу один путь - лезть в потроха HALа. Но мне кажется это не правильным (где же тогда скорость и удобство разработки; абстракция от аппаратуры?). если не сложно - ссылочку (похоже я не все нашел).
  4. STM32F4 и HAL

    Добрый день! Приступил к освоению Cortex. Имеется KIT STM32F4DISCOVERY. Первично, до заказа KIT, информация от ST, о их детище под названием HAL (и возможностях появляющихся ввиду его применения) порадовала (после 8 битных MCU). Но при "лобовом" столкновении, радость моя притаилась :). При попытке написания своего проекта возникли вопросы. Не до конца понятно как же работать с HALом? Где найти недостающую информацию? Поясню на примере: Есть желание использовать таймер в режиме "Output compare mode". HAL содержи функцию инициализации таймера HAL_TIM_OC_Init(). Ей нужно передать указатель на структуру: TIM_HandleTypeDef Data Fields TIM_TypeDef * Instance TIM_Base_InitTypeDef Init HAL_TIM_ActiveChannel Channel DMA_HandleTypeDef * hdma HAL_LockTypeDef Lock __IO HAL_TIM_StateTypeDef State TIM_Base_InitTypeDef Data Fields uint32_t Prescaler uint32_t CounterMode uint32_t Period uint32_t ClockDivision uint32_t RepetitionCounter Структура сделана универсальной на все случаи. Какие поля необходимы в требуемом мне режиме? В документации на HAL поля структуры описаны крайне лаконично. Проведения параллелей с Reference manual stm32f4хх не всегда возможно. Из примеров, поставляемых с KIT видно, что далеко не все поля структур заполняются при настройке таймера. Вообщем пока я не нашел "ключа" к HALу. Заниматься исследованием HALа методом проб и ошибок глупо; смотреть потроха функций HALа - больно трудоемко и непрактично. Подскажите, как Вы работаете с HALом? Может я не нашел нужной pdf?
  5. Всем участникам спасибо! Вопрос решился. Сделал мат. коррекцию и удовлетворился результатом. Вот кратенький отчет: Для частоты 1 МГц Измеряемые импедансы: 1) 50 + j0 Ом 2) 100 + j0 Ом 3) 50 - j44 Ом Показания анализатора: до калибровки 1) 49 - j2 Ом 2) 92 - j9 Ом 3) 45 - j40 Ом после калибровки 1) 50 - j0 Ом 2) 99 - j0 Ом 3) 50 - j42 Ом Для частоты 21 МГц Измеряемые импедансы: 1) 50 + j0 Ом 2) 100 + j0 Ом 3) 200 + j0 Ом 4) 50 - j19 Ом Показания анализатора: до калибровки 1) 55 + j11 Ом 2) 87 - j12 Ом 3) 117 - j61 Ом 4) 48 - j3 Ом после калибровки 1) 50 + j0 Ом 2) 100 - j3 Ом 3) 197 - j8 Ом 4) 50 - j20 Ом Теперь провести оптимизацию в низкочастотном измерительном тракте и думается все. Ну КЗ и ХХ думается на КВ не будут обладать значимыми паразитными параметрами - не те размеры по сравнению с длинной волны. 50 Ом - скорее всего обычный безиндуктивный резистор или кучка в параллель (насчет мощности еще вопрос). Думается что в КВ диапазоне должно получиться. Если нет - то как вариант покупная широкополосная согласованная нагрузка (скорее всего перебор). Реактивные и комплексные нагрузки делать не предполагал, поскольку общепринятая OSM калибровка предполагает использование только трех указанных эталонов. Насчет мощности на которой буду калиброваться - вы правы - наверное это 1 - 2 Вт (больше незачем). На этой мощности и измерения делать. А на рабочей 100 Вт можно разве что КСВ контролировать (с заведомо большим допуском чем несколько процентов). Спасибо за вопросы - лишний раз критически смотрю на проект.
  6. Благодарю за активное участие в моем вопросе! Улучшать направленность в железе накладно. Хочется математическую коррекцию. Попалось несколько статей от именитых R&S и Agilent. Картиночки красивые - структурные схемы приборов с указанием возникающих ошибок. Далее с применением калибровочных мер (ХХ, КЗ и 50 Ом) проводится математическая коррекция. Вроде бы как до 20 дБ удается улучшить направленность. Вот ищу эту самую математику. У меня по сути то однопортовый векторный анализатор (громко конечно сказал :)). По идее его коррекция не должна быть сильно сложной - OSM (full one-port calibration). Вообщем пытаюсь двигаться в этом направлении. Если интересна тема - то вот некоторые примеры: improved rf hardware and calibration methods for network analyzers и Vector Network Analyzer (VNA) Calibration: The Basics и Классификация и анализ методов калибровки векторных анализаторов цепей .
  7. Для целей проверки качества согласования с фидером (по сути КСВ) и 20дБ достаточно. Но мне хотелось иметь более ли менее достоверные параметры нагрузки. Направленности в 20дБ недостаточно для перекрытия указанного диапазона импедансов с желаемой погрешностью. Ответвитель сделал - направленность порядка 25-30 дБ. Ну насчет калибровочных эталонов на КВ как раз проблем думаю не будет - КЗ, ХХ и 50 Ом сделать можно (либо я не вижу пока подводных камней). А измерение - микроконтроллер, АЦП и тому подобное.
  8. Продолжая разработку столкнулся с очередным вопросом, касающимся направленного ответвителя. Напоминаю основные параметры: Частоты 0.2 - 30МГц. Мощность сигнала на входе СУ - до 100Вт (CW). Требования к модулю - измерение активного, реактивного импеданса (с учетом знака) нагрузки (в точке подключения фидера к СУ). Диапазон измерения модуля импеданса 0 - 300 Ом (ориентировочно) Хотелось бы иметь разумную ошибку измерения, скажем: +/-(0,05*Z +/- 2) Ом. Прототип НО: Прототип Суть вопроса: Как выяснилось, направленный ответвитель не является идеальным(!) ( :laughing: ). У изготовленного мной образца, переходное ослабление 20дБ (расчетное); реальное не измерял. Направленность порядка 25-30дБ (измеренная). Эти числа получены для частоты - 1 МГц. По причине малой направленности возникают значимые ошибки при определении параметров вектора коэффициента отражения, и как следствие - ошибки при вычислении импеданса нагрузки. Погрешность измерения импеданса нагрузки сильно возрастает при "уходе" от 50 Ом. Кроме того возникающие ошибки, естественно, частотно зависимые. Интуитивно понимаю необходимость программной коррекции, поскольку улучшать направленность НО можно, но более 35-40 дБ вряд ли получу и вопрос какой ценой. В идеале для моего диапазона импедансов и погрешности хотелось бы иметь направленность не ниже 40-45дБ. Поиск по теме приводит к векторным анализаторам. Но к сожалению кроме общих фраз о эталонах мер и методиках калибровки (одно портовая, двух и т.д.) толкового не нахожу. Хотелось бы найти алгоритм калибровки векторного анализатора (желательно практический). Кроме того было бы неплохо посмотреть на модель прибора, отражающую места возникновения ошибок. Вообщем прошу дать "вектор" куда смотреть. А может, кто-то сталкивался с такой проблемой и решение как всегда проще чем кажется? А может я в чем-то ошибаюсь?
  9. Proffessor, thank you! Кажется все складывается :rolleyes:
  10. Таким образом для случая комплексной нагрузки выходы "FORWARD" и "REFLECTED" так же дают "честные" векторы соответствующих волн? И импеданс нагрузки может быть определен из формулы KU = ( Zнагр - ρ ) / ( Zнагр + ρ )? Я правильно понял вас?
  11. Задача: сделать модуль измерения импеданса антенны (в точке запитки фидера). Модуль предполагается применять в согласующем устройстве (СУ). Основные параметры: Частоты 0.2 - 30МГц. Мощность сигнала на входе СУ - до 100Вт (CW). Требования к модулю - измерение активного, реактивного импеданса (с учетом знака) нагрузки (в точке подключения фидера к СУ). Диапазон измерения модуля импеданса 0 - 300 Ом (ориентировочно). Описание: Структура выбрана классическая - гетеродинное преобразование в ПЧ с анализом амплитудно-фазовых параметров на низкой частоте (эта часть работает, претензий пока нет). В качестве измерительной "головки" хочу применить направленный ответвитель. Ссылка на схему-прототип: прототип. Моя проблема: В случае, когда нагрузка является чисто активной - вопросов нет. На выходе "FORWARD" - напряжение пропорциональное напряжению падающей волны, а на выходе "REFLECTED" - напряжение пропорциональное напряжению отраженной волны. Зная, по сути, падающую и отраженную активные мощности легко нахожу сопротивление нагрузки. Не могу сообразить КАК определить параметры вектора отраженной мощности в случае когда нагрузка имеет реактивную составляющую? Прошу поделиться соображениями, ссылками теоретический материал - заранее благодарен. :laughing:
  12. :) Вопрос не в господах, а в конфигураторе :) А насчет строчек - кому как нравится. Я думаю что эта работа не благодарная. Лучше потратить время на полезный код.
  13. Господа, подскажите есть ли утилита для конфигурирования MSP430F4xx? Имеется ввиду возможноть настройки периферии посредством графического интерфейса.