Позднее Ctrl + ↑

Исследование TEF6686. Часть 9. Set_Bandwidth_Options

Часть 1. Исследование возможностей TEF6686
Часть 2. IF Bandwidth
Часть 3. Set_RFAGC
Часть 4. Патчи
Часть 5. Set_MphSuppression
Часть 6. Set_ChannelEqualizer
Часть 7. Set_LevelStep
Часть 8. Set_LevelOffset
Часть 9. Set_Bandwidth_Options
Часть 10. Get_AGC
Часть 11. Get_Processing_Status
Исследование TEF6686. Выводы

Set_Bandwidth_Options определяет, при каком проценте девиации включать принудительное расширение полосы.

Глянем панорамы:

Set_Bandwidth_Options = 133%

Set_Bandwidth_Options = 66%

Видим, что при Set_Bandwidth_Options = 66% график IF Bandwidth гораздо «грязнее», чем при 133%.

Посмотрим графики двух станций — одна местная, другая дальняя, слабая:

Что видим?
1) На графике местной станции 95.0 мГц видно, что при Set_Bandwidth_Options = 66% полоса ПЧ-фильтра расширяется до максимальных 311 кГц. И сужается до 236 кГц при Set_Bandwidth_Options = 133%.
2) На графике слабой станции 102.9 мГц видно, что при Set_Bandwidth_Options = 66% полоса ПЧ-фильтра расширяется до 90 кГц. И сужается до 70 кГц при Set_Bandwidth_Options = 133%. А самое главное — при сужении полосы падает Level.

Вывод

Опция работает как и должна: при малом значении Set_Bandwidth_Options раньше расширяет полосу фильтра ПЧ, а при большом — позже.
Особого смысла менять дефолтное значение 95% не вижу, особенно для DX.
Разработчики чипа со мной согласны:

Note: Adaptation of the default value is not advised in general but allows for specific performance fine-tuning on specific conditions.

4 мес   DX   esp32   TEF6686   Радио

Исследование TEF6686. Часть 8. Set_LevelOffset

Часть 1. Исследование возможностей TEF6686
Часть 2. IF Bandwidth
Часть 3. Set_RFAGC
Часть 4. Патчи
Часть 5. Set_MphSuppression
Часть 6. Set_ChannelEqualizer
Часть 7. Set_LevelStep
Часть 8. Set_LevelOffset
Часть 9. Set_Bandwidth_Options
Часть 10. Get_AGC
Часть 11. Get_Processing_Status
Исследование TEF6686. Выводы

Казалось бы, простая настройка, которая лишь изменяет показатель Level, чтобы компенсировать, например, шумы от активной антенны:

The level offset can be used as an overall correction for antenna noise level and is included in the weak signal handling and the level read value of Get_Quality. A standard use case is the compensation for AM active antenna circuits (typical offset setting = -30 dB).

Но есть нюансы. Давайте разбираться.
Посмотрим на панораму эфира с разными LevelOffset.

LevelOffset = 15

LevelOffset = 0

LevelOffset = -7

LevelOffset = -48

Что видим?
1) При LevelOffset = 15 видно, что эфир зашумлён, ТЕФ увеличивает IF Bandwidth до 100 кГц даже на пустых участках диапазона.
2) При LevelOffset = -48 ситуация противоположная: судя по IF Bandwidth, ТЕФ детектирует даже не все реальные станции.
3) При LevelOffset = 0 слабую станцию на 100.7 мГц по IF Bandwidth ещё видно , а при LevelOffset = -7 — уже нет. Я специально акцентирую на этом внимание. Подробности — ниже.

Посмотрим на график слабой станции 105.0 мГц:

Что видим?
1) Level = 10 при LevelOffset = 0.
2) Level = 3 при LevelOffset = -7.
3) При более высоких показаниях Level ТЕФ расширяет полосу фильтра ПЧ. Слышно лучше.

Вывод

LevelOffset действительно корректирует показания Level на указанное число единиц. Но стоит помнить, что ТЕФ ориентируется на эти показатели при работе. То есть при принудительном изменении Level реально на слух меняется приём станций, особенно слабых. Об этом, кстати, написано прямо в даташите:

The level offset ... is included in the weak signal handling.

Ранее я писал, что в одной из прошивок приёмника на ТЕФе увидел в коде, что автор по умолчанию применяет LevelOffset = -7.
Он пишет:

So the actual display level is 7dB higher than it really is. This is due to poor design and unbalanced connection to the FM input of the chip.

Во-первых, на мой взгляд, это не совсем так. ТЕФ действительно завышает показатель Level, но, видимо, не только по причине «poor design and unbalanced connection», а из-за того, что применяет плавное изменение Level в зависимости от состояния AGC, особенно на слабых сигналах. В этом мы убедились в предыдущей части исследований. Поэтому на пустых участках диапазона мы видим Level = ~5 дБмкВ.

Во-вторых, такая принудительная коррекция скорее вредит приёму дальних станций. На графиках видно, что при LevelOffset = -7 ТЕФ уже не распознаёт слабую станцию и не увеличивает IF Bandwidth. При автоматической настройке, вероятнее всего, он просто пропустит эту станцию. На слух слабую станцию при LevelOffset = -7 тоже слышно хуже. По итогу имеем явные проблемы с DX.

Я считаю, что LevelOffset лучше оставлять = 0. По крайней мере для DX.

4 мес   DX   esp32   TEF6686   Радио

Исследование TEF6686. Часть 7. Set_LevelStep

Часть 1. Исследование возможностей TEF6686
Часть 2. IF Bandwidth
Часть 3. Set_RFAGC
Часть 4. Патчи
Часть 5. Set_MphSuppression
Часть 6. Set_ChannelEqualizer
Часть 7. Set_LevelStep
Часть 8. Set_LevelOffset
Часть 9. Set_Bandwidth_Options
Часть 10. Get_AGC
Часть 11. Get_Processing_Status
Исследование TEF6686. Выводы

Долго я пытался разобраться, как работает эта опция.
Всё дело в очень мутном описании в даташите:

Selection of level correction as a function of the tuner front-end AGC.
The level step offset is included in the weak signal handling and the level read value of Get_Quality.
A setting of 0 dB will show no level change by full compensation of the actual -6 dB AGC attenuation step. Instead a setting of -6 dB will show the actual AGC attenuation step.

Судя по всему, это коррекция показателя Level в зависимости от текущего уровня АРУ входного каскада.

Посмотрим на панорамы с подключенной антенной

LevelStep = default

LevelStep = 0 дБ

LevelStep = — 6 дБ

Посмотрим на панорамы без подключенной антенны

Что видим?
1) Без подключенной антенны изменение настроек опции ни на что не влияет — AGC явно не срабатывает.
2) При LevelStep = 0 дБ показатель Level вырастает, а при LevelStep = -6 дБ — падает.
3) Разница при крайних показателях настроек LevelStep — примерно 28 дБ.
4) Меняются некоторые показатели, например, явно меняется IF Bandwidth.

Посмотрим также на графики одной станции:

Что видим?
1) На графиках видны сначала дефолтные настройки, затем LevelStep = — 6 дБ, затем 0 дБ.
2) Все показатели явно зависят от Level.

Вывод

Видимо, опция работает так.
После срабатывания AGC TEF автоматически корректирует показания Level, компенсируя величину среза AGC.

После этого, мы можем выбрать, что делать с Level при помощи опции LevelStep.
Если установить LevelStep = 0 дБ, мы получим Level с учётом компенсации среза AGC. Как бы «до AGC».
Если установить LevelStep = -6 дБ, мы получим Level, полученный после AGC без учёта компенсации.
Можно установить какие-то другие корректировки для каждого шага с целью гибкой обработки слабых сигналов, потому что алгоритмы ТЕФа реагируют на показания Level, как мы выяснили в предыдущих экспериментах.

Если не использовать эти корректировки, уже на первом шаге срабатывания AGC срежется 6 дБ, из-за чего показатель Level слабых станций может стать слишком малым, что помешает обнаружить наличие радиостанции на частоте.

Производитель не рекомендует без лишней необходимости менять эти параметры. Похоже, так оно и есть.

4 мес   DX   esp32   TEF6686   Радио
Ранее Ctrl + ↓