Генератор качающейся частоты с АЦП
- Войдите на сайт для отправки комментариев
Чт, 07/05/2020 - 14:38
Здравствуйте
Делаю ГКЧ с АЦП и выводом через сериал. Возникла проблема. Скорость установки и вывода частоты не устраивает. Видел измерители АЧХ фильтров которые по 1 герцу диапазон 100кгц до 30 мегагерц перебирали за 2 секунды. Выбрал микросхему si5351 микроконтроллер stm32f103c8t6. Подключение по порту 115200. В чем моя ошибка?
////////////////////////////////////////////////////////////////////////////// // Copyright©2016.JA2GQP.All rights reserved. // si5351a PLL test // 2017/5/20 // JA2GQP //--------------------------------------------------------------------------- // //AFIO_BASE->MAPR|=(1<<8)|(1<<6); //tim 1 && tim 2 Partial remap // i2c_master_enable(I2C1, I2C_REMAP); //SDA PB9, SCL PB8 // stm32f103 si5351a Arduino nano(UNO) // PB6(SCL1) ------ SCL ------ A5 // PB7(SDA1) ------ SDA ------ A4 // 3V3(3.3V) ------ VIN ------ 5V // GND ------ GND ------ GND ////////////////////////////////////////////////////////////////////////////// //---------- include Files --------------- #include "si5351a2.h" //---------- Initialization Program ---------------------- const int analogInputPin = PA0; void setup() { pinMode(analogInputPin, INPUT_ANALOG); Serial.begin(115200); Serial.setTimeout(10); i2c_master_enable(I2C1, I2C_REMAP); //SDA PB9, SCL PB8 Wire.begin(); Si5351_write(XTAL_LOAD_C,0x80); //Crystal Load Capasitance=8pF //si5351aSetFrequency2(78000000L); //CLK2 } //---------- Main program --------------------------------- void loop() { if (Serial.available()){ int chteniesporta = 0; chteniesporta = Serial.parseInt(); if (chteniesporta > 69000) { si5351aSetFrequency(chteniesporta); Serial.print(analogRead(analogInputPin)); } } }
Библиотека
Скрипт Python
ingfa, ну во-первых команда парсинт выполняется долго, таймаут по-умолчанию 1000мс . Во-вторых так вообще не делают. Через UART отсылают все данные для качания (нач. частота, кон. частота, шаг). И программа в мк начинает выполнять задачу.
по 1 герцу диапазон 100кгц до 30 мегагерц перебирали за 2 секунды
Ничего, что если сложить 1 период каждой частоты с таким шагом, то получится больше 5 секунд?
ingfa, ну во-первых команда парсинт выполняется долго, таймаут по-умолчанию 1000мс . Во-вторых так вообще не делают. Через UART отсылают все данные для качания (нач. частота, кон. частота, шаг). И программа в мк начинает выполнять задачу.
А как получить все данные измеренного напряжения с детектора связав их со значениями частоты? Применить другой способ передачи в компьютер FT245 или wifi, может есть способ проще? Как передать два значения использовать массив?
Да 5 секунд действительно только в идеале.
ingfa, ну для начала посмотреть как это сделано в серьёзных приборах. Типа NWT7. Исходники там есть. В идеале вообще сделать обмен своего девайса через UART по протоколу NWT, описание команд управления там тоже есть. Тогда можно будет использовать его программу. Я поступил проще -сделал сам NWT7 :)
Да я видел этот прибор. смотрел исходники. Ничего не понял так как новичек в программировании. Расскажите пожалуйста в кратце, как бы вы сделали правильно,если ни трудно, а я почитаю мануалы и разберусь со своим велосипедом, цель моя обучение.
ingfa, вам лучше повторить готовый проект ГКЧ на si5351, их в инете полно разных, причём даже под ардуино есть. Тыц.
Я же говорю хочу сделать то что понимаю. Чужого ни нужно. хочу научиться программировать. Поэтому мне нужны ответы на вопросы как залить две частоты одновременно и как вывести измеренное значение связанное с частотой. Что б не тормазило.
Я понимаю как то прибор работает, супергетеродинная схема si5351 выдает две частоты, основную на которой идет измерение и минус 455кгц. детоктор на ad8307 детектирует 455 кгц и выдает на ацп. далее контролер каким то образом отдает измеренное напряжение на
ком порт компьютера или через блутуч или через преобразователь ttl usb. Но например разработчик пишет подать на вход r 10 и получишь 10 измеренных значений. А где это в коде я не вижу и как это связанно со значение частоты я не понимаю.
Чужого ни нужно. хочу научиться программировать. Поэтому мне нужны ответы на вопросы как залить две частоты одновременно и как вывести измеренное значение связанное с частотой. Что б не тормазило.
А то что кто-то тут сейчас сядет и будет по твоему индивидуальному заказу программировать за тебя (чтобы ты научился программировать) - это не чужое уже. Все свои.
Чужого ни нужно. хочу научиться программировать.