ODXC |
||
Oбнинское DX Сообщество |
|
|
|||||
|
|||||
|
|||||
|
|||||
Точное время MSK: | |||||
|
|||||
Сергей RW3XA, 05 Ноябрь 2011 Обновлено - сентябрь 2017 | |
Данный микроконтроллерный загрузчик предназначен для инициализации (записи) в синтезаторы на базе Analog Devices ADF4xxx (или других) значений управляющих регистров, определяющих частоты, режимы и все другие параметры работы синтезатора.
Загрузчик был сделан для синтезатора ADF4106 Александра RW3AZ А учитывая интерес других радиолюбителей и для экономии их времени выкладывается на всеобщее обозрение. Данный микроконтроллерный загрузчик предназначен для интеграции в плату синтезатора для автоматической инициализации (записи) в синтезаторы на базе Analog Devices ADF4xxx (или других) значений управляющих регистров, определяющих частоты, режимы и все другие параметры работы синтезатора. Четыре 3-х байтовых управляющих регистра записываются по протоколу SPI. Программа написана под микроконтроллер ATtiny13 (подойдет и для других 8-ногих ATtiny, но, возможно, потребуется коррекция Fuse bits).
Логика программы простая: через 100мс после включения начинается передача регистров с паузой в 1мс, после окончания передачи еще одна пауза в 100мс и программное отключение микроконтроллера (Idle mode). Схема, исходник в BASCOM, прошивка (.bin) и файл для симуляции в PROTEUS (.dsn/.pwi) находятся в архиве в конце описания.
Для подготовки конкретных значений регистров ADF4xxx, нужно изучить значения битов регистров в datasheet на соответствующую микросхему синтезатора и воспользоваться утилитой ADF4xxx_Rev5.1 из файлового архива или более свежими версиями ADI Int-N с сайта Analog Devices. Раньше был еще очень удобный онлайн калькулятор PLL Register Configuration Assistants на сайте Analog Devices, но уже несколько лет он почему-то недоступен. Регистры Function, N и R вычисляются утилитой ADF4xxx_Rev5.1, а вычисление регистра INIT (Initialization Latch) нужно сделать вручную с помощью datasheet. Но INIT регистр можно оставить и без изменения, со значениями как в прошивке - этого достаточно для большинства случаев. А вообще, конкретные значения битов в регистрах это отдельная тема.
PLL Register Configuration Assistants
Для редактирования прошивки проще использовать двоичный (бинарный) файл *.bin, т.к. он представляет из себя непосредственно коды микроконтроллера, в то время как HEX-файл (*.hex) есть формат специального представления, содержащий адреса, данные и контрольные суммы в одной строке и значительно хуже воспринимается, т.к. не рассчитан на ручное редактирование, соответственно выше вероятность ошибок и сложнее при редактировании…
Вариант программы для редактирования бинарного файла прошивки - HexEdit v1.03
Ниже приведен screenshot этой программы. Расположение и примерные значения четырех трехбайтовых регистров синтезатора выделены на скриншоте белым фоном и находятся начиная с адреса 280.
Взаимное расположение значений регистров в калькуляторах и прошивке
С помощью HexEdit v1.03 в прилагаемой прошивке необходимо заменить байты с адреса 280h на новые в соответствии с рассчитанными значениями. Затем программатором «зашить» прошивку в микроконтроллер ATtiny программатором или по ISP интерфейсу.
При прошивке ATtiny следует использовать следующие Fuses: CLKDIV8 = 0 (programmed), CKSEL= 10 (Select 9.6Mc internal clock).Последовательность действий. 1. С помощью HexEdit v1.03 в прилагаемой бинарной (файл *.bin) прошивке необходимо заменить байты с адреса 280h на новые в соответствии с рассчитанными значениями регистров. 2. Если программатор поддерживает бинарный формат, то перейти к п.3. Сконвертировать *.bin файл в формат HEX с помощью программы bin2hex.exe, для этого программу нужно выполнить со следующими параметрами: bin2hex.exe входной-файл-прошивки.bin выходной-файл-прошивки.hex 0 0000 цифры в конце нужны для автоматического выполнения – «0» задает выходной Intel формат, а «0000» базовый адрес. Имена файлов не должны быть более 8 символов (DOS формат 8.3). Например bin2hex loader.bin loader.hex 0 0000 3. Загрузить bin или hex прошивку в микроконтроллер ATtiny программатором или по ISP интерфейсу. При прошивке ATtiny следует использовать следующие Fuses: CLKDIV8 = 0 (programmed), CKSEL= 10 (Select 9.6Mc internal clock). Более подробную информацию о прошивке микроконтроллеров AVR можно ознакомиться здесь.
СхемаМикроконтроллер запитывается от источника питания синтезатора (VCC=3.3-3.6V).
При внутрисхемном программировании (ISP) следует помнить о соответствии VCC программатора и VCC синтезатора, т.е. чтобы VCC программатора не превысило значение VCC синтезатора. Кроме того, при этом необходимо отключать ADF4xxx подав на его пин CE логический «0».
Как уже говорилось, схема (Loader N1) сделана под синтезатор RW3AZ, она имеет совмещенные сигналы SPI и ISP, что несколько не удобно – нужно управлять пином CE при внутрисхемном программировании (ISP). В новых конструкциях оптимальнее использовать схему в которой сигнал LE перенесен на пин 2 или 3 (см. схему Loader N2) и, соответственно, для внутрисхемного программирования здесь не требуется никаких дополнительных переключений. Прошивка для этого варианта находится в архиве - adf-ldr2.bin. Назначение сигналов на конкретные пины микроконтроллера можно переопределить изменением исходного кода и перекомпиляцией программы.
Архив ADF_Loader.zip (475kB)
По запросу Александра RW3AZ, прошивка доработана для использования в режимах прием-передача, т.е. с оперативным переключением двух разнесенных частот. Управление производится по порту PB3 микроконтроллера ATtiny13, при переключении есть проверка на антидребезг. Новая прошивка с частотами F1=4965MHz, F2=5010MHz для ADF4009 испытана RW3AZ и находится в реальной работе у UR5LX. Прошивка и все сопутствующие файлы собраны в архиве ADF_Loader_V2.zip. Схема и расположение ячеек с программируемыми регистрами ADF4xxx для частот F1/F2 приведены ниже:
|
|