Микросхема mrf49xa программа на си

Микросхема mrf49xa программа на си

Содержание

Конструкция создана на относительно новых и недорогих микросхемах MRF49XA.
Одна применена в приемной части , другая- в передающей.

Схема передатчика.
Состоит из управляющего контроллера и трансивера MRF49XA.

Схема приемника.
Собрана из тех же элементов , что и передатчик . Практически, отличие приемника от передатчика ( не беря во внимание светодиоды и кнопки ) состоит только в программной части .

MRF49XA малогабаритный трансивер , имеющий возможность работать в

трех частотных диапазонах .

Низкочастотный диапазон : 430,24 — 439,75 Mгц ( шаг 2,5 кГц ) .

Высокочастотный диапазон А : 860,48 — 879,51 МГц ( шаг 5 кГц ) .

Высокочастотный диапазон Б : 900,72 — 929,27 МГц ( шаг 7,5 кГц ) .

Границы диапазонов указаны при условии применения опорного кварца частотой 10 МГц ,

предусмотренного производителем .С опорными кварцами 11МГц устройства нормально работали на частоте 481 МГц .Детальные исследования на тему максимальной «затяжки» частоты относительно заявленной производителем не проводились.Предположительно она может быть не так широка , как в микросхеме ТХС101 , поскольку в даташите MRF49XA упоминается об уменьшенном фазовом шуме , одним из способов достижения которого является сужение диапазона перестройки ГУН .

Устройства имеют следующие технические характеристики .

Передатчик .

Мощность — 10 мВт .

Напряжение питания 2,2 — 3,8 В ( согласно даташиту на мс , на практике нормально работает

Ток , потребляемый в режиме передачи — 25 мА .

Ток покоя — 25 мкА .

Скорость данных — 1кбит / сек .

Всегда передается целое количество пакетов данных .

Помехоустойчивое кодирование , передача контрольной суммы.

Приемник .

Чувствительность — 0,7 мкВ .

Напряжение питания 2,2 — 3,8 В ( согласно даташиту на мс , на практике нормально работает

Постоянный потребляемый ток — 12 мА .

Скорость данных до 2 кбит / сек . Ограничена программно .

Помехоустойчивое кодирование , подсчет контрольной суммы при приеме .

Алгоритм работы .

Возможность нажатия в любой комбинации любого количества кнопок передатчика одновременно . Приемник при этом отобразит светодиодами нажатые кнопки в реальном режиме . Говоря проще , пока нажата кнопка ( или комбинация кнопок ) на передающей части , на приемной части горит , соответствующий светодиод ( или комбинация светодиодов ) .

Кнопка ( или комбинация кнопок ) отпускается — соответсвующие светодиоды сразу же гаснут .

Тест режим .

И приемник и передатчик по факту подачи на них питания входят на 3 сек в тест режим .

И приемник и передатчик включаются в режим передачи несущей частоты , запрограммированной в EEPROM , на 1 сек 2 раза с паузой 1 сек ( во время паузы передача выключается ) . Это удобно при программировании устройств . Далее оба устройства готовы к работе .

Программирование контроллеров .

EEPROM контроллера передатчика .

Все настройки EEPROM , упомянутые ниже , запишутся автоматически на свои места по факту подачи на контроллер питания после его прошивки .

В каждой из ячеек данные можно менять на свое усмотрение . Если в любую используемую для данных ячейку ( кроме идентификатора ) вписать FF , за следующим включением питания эта ячейка немедленно будет переписана данными по умолчанию .

Верхняя строка EEPROM после прошивки и подачи питания на контроллер передатчика будет выглядеть так …

80 1F — ( подиапазон 4хх МГц ) — Config RG

AC 80 — ( точное значение частоты 438 MГц ) — Freg Setting RG

98 F0 — ( максимальная мощность передатчика , девиация 240 кГц ) — Tx Config RG

C4 00 — ( АПЧ выключено ) — AFG RG

82 39 — ( передатчик включен ) — Pow Management RG .

Первая ячейка памяти второй строки ( адрес 10 h ) — идентификатор .

По умолчанию здесь FF . Идентификатор может быть любой в пределах байта ( 0 … FF ) . Это индивидуальный номер ( код ) пульта .

По этому же адресу в памяти контроллера приемника находится его идентификатор . Они обязательно должны совпадать . Это дает возможность создавать разные пары приемник / передатчик .

EEPROM контроллера приемника .

Все настройки EEPROM , упомянутые ниже , запишутся автоматически на свои места по факту подачи на контроллер питания после его прошивки .

В каждой из ячеек данные можно менять на свое усмотрение . Если в любую используемую для данных ячейку ( кроме идентификатора ) вписать FF , за следующим включением питания эта ячейка немедленно будет переписана данными по умолчанию .

Верхняя строка EEPROM после прошивки и подачи питания на контроллер приемника будет выглядеть так .

80 1F — ( подиапазон 4хх МГц ) — Config RG

AC 80 — ( точное значение частоты 438 MГц ) — Freg Setting RG

91 20 — ( полоса приемника 400 кГц , чувствительность максимальная ) — Rx Config RG

C6 94 — ( скорость данных — не быстрее 2 кбит/сек ) — Data Rate RG

C4 00 — ( АПЧ выключено ) — AFG RG

82 D9 — ( приемник включен ) — Pow Management RG .

Первая ячейка памяти второй строки ( адрес 10 h ) — идентификатор приемника .

Для корректного изменения содержимого регистров как приемника так и передатчика воспользуйтесь программой RFICDA , выбрав микросхему TRC102 ( это клон MRF49XA ) .

Примечания .

На фото передатчика перерезана дорожка положительной шины питания контроллера и продублирована проводом . Это сделано для предотвращения короткого замыкания через металлические корпуса кнопок ( при проектировании это не было учтено ) .

Обратная сторона плат — сплошная масса ( залуженная фольга ) .

Дальность уверенной работы в условиях прямой видимости — 200 м .

Количество витков катушек прм и прд — 6 . Если воспользоваться опорным кварцем 11 МГц вместо 10 МГц , частота «уйдет» выше около 40 МГц . Максимальная мощность и чувствительность в этом случае будут при 5 витках контуров прм и прд .

Конструкция создана на относительно новых и недорогих микросхемах MRF49XA.
Одна применена в приемной части , другая- в передающей.

Схема передатчика.
Состоит из управляющего контроллера и трансивера MRF49XA.

Схема приемника.
Собрана из тех же элементов , что и передатчик . Практически, отличие приемника от передатчика ( не беря во внимание светодиоды и кнопки ) состоит только в программной части .

MRF49XA малогабаритный трансивер , имеющий возможность работать в

трех частотных диапазонах .

Низкочастотный диапазон : 430,24 — 439,75 Mгц ( шаг 2,5 кГц ) .

Высокочастотный диапазон А : 860,48 — 879,51 МГц ( шаг 5 кГц ) .

Высокочастотный диапазон Б : 900,72 — 929,27 МГц ( шаг 7,5 кГц ) .

Границы диапазонов указаны при условии применения опорного кварца частотой 10 МГц ,

предусмотренного производителем .С опорными кварцами 11МГц устройства нормально работали на частоте 481 МГц .Детальные исследования на тему максимальной «затяжки» частоты относительно заявленной производителем не проводились.Предположительно она может быть не так широка , как в микросхеме ТХС101 , поскольку в даташите MRF49XA упоминается об уменьшенном фазовом шуме , одним из способов достижения которого является сужение диапазона перестройки ГУН .

Устройства имеют следующие технические характеристики .

Передатчик .

Мощность — 10 мВт .

Напряжение питания 2,2 — 3,8 В ( согласно даташиту на мс , на практике нормально работает

Ток , потребляемый в режиме передачи — 25 мА .

Ток покоя — 25 мкА .

Скорость данных — 1кбит / сек .

Всегда передается целое количество пакетов данных .

Помехоустойчивое кодирование , передача контрольной суммы.

Приемник .

Чувствительность — 0,7 мкВ .

Напряжение питания 2,2 — 3,8 В ( согласно даташиту на мс , на практике нормально работает

Постоянный потребляемый ток — 12 мА .

Скорость данных до 2 кбит / сек . Ограничена программно .

Помехоустойчивое кодирование , подсчет контрольной суммы при приеме .

Алгоритм работы .

Возможность нажатия в любой комбинации любого количества кнопок передатчика одновременно . Приемник при этом отобразит светодиодами нажатые кнопки в реальном режиме . Говоря проще , пока нажата кнопка ( или комбинация кнопок ) на передающей части , на приемной части горит , соответствующий светодиод ( или комбинация светодиодов ) .

Кнопка ( или комбинация кнопок ) отпускается — соответсвующие светодиоды сразу же гаснут .

Тест режим .

И приемник и передатчик по факту подачи на них питания входят на 3 сек в тест режим .

И приемник и передатчик включаются в режим передачи несущей частоты , запрограммированной в EEPROM , на 1 сек 2 раза с паузой 1 сек ( во время паузы передача выключается ) . Это удобно при программировании устройств . Далее оба устройства готовы к работе .

Программирование контроллеров .

EEPROM контроллера передатчика .

Все настройки EEPROM , упомянутые ниже , запишутся автоматически на свои места по факту подачи на контроллер питания после его прошивки .

В каждой из ячеек данные можно менять на свое усмотрение . Если в любую используемую для данных ячейку ( кроме идентификатора ) вписать FF , за следующим включением питания эта ячейка немедленно будет переписана данными по умолчанию .

Верхняя строка EEPROM после прошивки и подачи питания на контроллер передатчика будет выглядеть так …

80 1F — ( подиапазон 4хх МГц ) — Config RG

AC 80 — ( точное значение частоты 438 MГц ) — Freg Setting RG

98 F0 — ( максимальная мощность передатчика , девиация 240 кГц ) — Tx Config RG

C4 00 — ( АПЧ выключено ) — AFG RG

82 39 — ( передатчик включен ) — Pow Management RG .

Первая ячейка памяти второй строки ( адрес 10 h ) — идентификатор .

По умолчанию здесь FF . Идентификатор может быть любой в пределах байта ( 0 … FF ) . Это индивидуальный номер ( код ) пульта .

По этому же адресу в памяти контроллера приемника находится его идентификатор . Они обязательно должны совпадать . Это дает возможность создавать разные пары приемник / передатчик .

EEPROM контроллера приемника .

Все настройки EEPROM , упомянутые ниже , запишутся автоматически на свои места по факту подачи на контроллер питания после его прошивки .

В каждой из ячеек данные можно менять на свое усмотрение . Если в любую используемую для данных ячейку ( кроме идентификатора ) вписать FF , за следующим включением питания эта ячейка немедленно будет переписана данными по умолчанию .

Верхняя строка EEPROM после прошивки и подачи питания на контроллер приемника будет выглядеть так .

80 1F — ( подиапазон 4хх МГц ) — Config RG

AC 80 — ( точное значение частоты 438 MГц ) — Freg Setting RG

91 20 — ( полоса приемника 400 кГц , чувствительность максимальная ) — Rx Config RG

C6 94 — ( скорость данных — не быстрее 2 кбит/сек ) — Data Rate RG

C4 00 — ( АПЧ выключено ) — AFG RG

82 D9 — ( приемник включен ) — Pow Management RG .

Первая ячейка памяти второй строки ( адрес 10 h ) — идентификатор приемника .

Для корректного изменения содержимого регистров как приемника так и передатчика воспользуйтесь программой RFICDA , выбрав микросхему TRC102 ( это клон MRF49XA ) .

Примечания .

На фото передатчика перерезана дорожка положительной шины питания контроллера и продублирована проводом . Это сделано для предотвращения короткого замыкания через металлические корпуса кнопок ( при проектировании это не было учтено ) .

Обратная сторона плат — сплошная масса ( залуженная фольга ) .

Дальность уверенной работы в условиях прямой видимости — 200 м .

Количество витков катушек прм и прд — 6 . Если воспользоваться опорным кварцем 11 МГц вместо 10 МГц , частота «уйдет» выше около 40 МГц . Максимальная мощность и чувствительность в этом случае будут при 5 витках контуров прм и прд .

Ссылочки

Вот страничка на сайте микрочип, посвященная этому трансиверу.
Первой строчкой там даташит, второй строчкой — полезный аппноут AN1252 — Interfacing the MRF49XA Transceiver to PIC Microcontrollers, собственно про взаимодействие контроллера и трансивера.

Сознательно не даю ссылки на сами файлы, потому что уже напоролся один раз — с форума вела ссылка на старый даташит, который был уныл чуть больше чем полностью. Поэтому первое правило работы с незнакомыми (или забытыми) компонентами — скачайте последний даташит с сайта производителя.

Также будет полезен аппнот AN421 Antenna Selection Guide for the Si4020 and Si4320 ISM Band FSK Transmitter/Receiver Chipset от Silicon Labs (вот страничка). На название трансивера не смотрите, во-первых это аналог, во-вторых нам нужна только антенна.

Антенна

Предупреждаю сразу — в ВЧ технике я новичок, так что если будут какие-то замечания — приму с удовольствием.
В даташите на трансивер указано, что ВЧ-выходом является симметричный открытый коллектор. И, типа, хорошо с ним согласовывается диполь или петля. Ну если захочется несимметричной антенны (например, четвертьволновой штырь), то прямо в даташите есть схема согласователя:

Закупил я на всякий случай конденсаторов и индуктивностей.

С другой стороны, на vrtp.ru blaze собирал аналогичную схему, только он по своей практике индуктивности мотал проводом на оправке. Ну и антенна — четвертьволновой проводок.

Это пайка blaze. Приведена как вариант обвязки.

Так что каждый выбирает свой путь в ад. Я выбрал петлевую антенну, вычитанную из аппнота AN421.

Поскольку выходы у трансивера — открытый коллектор, то на антенну надо подать питание. Для этой антенны оно подается синей дорожкой по обратной стороне платы. Толщина текстолита указана 0.5 мм (а у меня как раз такой), так что не заморачивался и вырисовал точно по размерам.

Вот что получилось в итоге:

Сопряжение с контроллером

Ну тут вроде все понятно должно быть. На нижнем уровне — SPI, плюс пара ножек на организацию работы с прерываниями. Особо не задумывался, собрал платку по такой схеме:

В даташите обязательными к подключению были отмечены ножки с 1 по 5, но реальность оказалась гораздо более жестокая, и я не пожалел, что завел лишнии линии на МК.

Вообще, глядя на микросхемы с интерфейсом SPI кажется, что каждый разработчик стремится использовать его максимально извращенным способом.
Здесь тоже не обошлось без плясок с бубном.

Первый способ общения с контроллером: через регистры.

Для этого режима достаточно использовать только линии SPI. Адресация регистров происходит очень интересно — первые насколько бит (обычно 8, но может быть и меньше) содержат «адрес» регистра. Как только мы их зальем, то дальше происходит работа с выбранным регистром.
Например, так выглядит начало описания регистра AFCCREG:

Биты с 15 по 8 — это биты кода команды. Мы их передаем, чтобы указать, что хотим работать с регистром AFCCREG. У другого регистра будет другой код.
Ладно, к этому привыкнем. Не впервой. Но есть такой регистр, который называется STSREG — статус-регистр. У него нет такого кода. И в пометке указано, что чтение этого регистра надо начинать, послав первый бит 0 (у всех остальных регистров код команды начинается с 1). Вот тут и проявляется в полной мере один из финтов ушами. Посмотрим на диаграмму чтения этого регистра:

Нас интересует самая левая часть диаграммы. Как только мы прижали линию CS, то на линии SDO, еще без тактового сигнала, уже сразу появляется первый бит — бит состояния передачи. Этим вовсю пользуются в примерах: прижали CS, посмотрели на бит, поехали дальше, даже по SPI ничего не передавали.
При приеме мы факт самого приема определяем либо прочитав регистр статуса (а за ним сразу же можем вычитать байт из FIFO), либо есть специальная линия FINT.
Казалось бы — идиллия. Но, при передаче через SPI тратится драгоценное время на передачу кода регистра (в общем случае служебной информации столько же, сколько и полезной). Поэтому придумали упрощенный способ получить данные у трансивера.

Прямой доступ к регистрам FIFO
Небуферизированное общение

Можно настроить трансивер так, что данные будут просто появляться на ноге 6, а синхроимпульсы — на ноге 7. Но тут данные будут появляться, когда этого захочет трансивер, а не МК. То есть роли меняются — трансивер становится мастером, МК — слейвом.

С одной стороны гибко, с другой стороны — главное не запутаться в режимах и все правильно выставить.
Я у себя использовал комбинацию из первого и второго способов — передавал через регистры, принимал через прижатие FSEL.

Тут особо не заморачивался. Код выдрал из микрочиповского примера (ссылка на странице с даташитом), причесал из пиковских реалий для AVR, Получилось примерно такое:

В этом примере прерываний не использовал, тупо опрашивал ножки.

Читайте также:  Ускоритель твердения для строительных смесей
Оценить статью
Добавить комментарий