Прошивка Lenovo P780 (прошивка радиомодуля). Прошивка радиомодуля lenovo Версия радиомодуля

Часто испытывает сильнейшее разочарование спустя небольшое время после приобретения смартфона.

Например, известнейший производитель Lenovo ориентирован на два различных рынка сбыта. Первый направлен на европейского потребителя, поэтому смартфоны производятся в Европе, а второй вид смартфонов «рождается» на китайском пространстве.

Если вы отмечаете проблемы с покрытием — возможно, дело в радиомодуле

Безусловно, ожидать одинакового качества от таких двух разных моделей нельзя. Если вам удалось приобрести Андроид, который стал часто преподносить «сюрпризы» в виде отсутствия связи, значит, вы умудрились приобрести китайский вариант .

К сожалению, «китаец» очень часто отказывается ловить сигнал сети 3G на частоте GSM 900.

Столкнувшись с такой проблемой, придётся вам вникнуть в некоторые технические параметры, чтобы понять, как прошить модуль связи Андроид.

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

Любые действия с мобильными телефонами следует производить аккуратно, поскольку незнание некоторых азов способно спровоцировать нежелательные результаты.

Кирпич — так называют смартфон, утративший свою функциональность

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

Даже если это так, вернуть аппарат не удастся, поэтому можно ознакомиться с информацией, как прошить радиомодуль, после чего проделать такие действия самостоятельно.

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

Если же вам китайское устройство подарили, придётся его самостоятельно усовершенствовать, «заставить» работать корректно и быстро, но для этого потребуется разобраться, какая прошивка радиомодуля является максимально эффективной.

Прошивка радиомодуля

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

Очень важно соблюдать алгоритм прошивки, не пропускать никаких подпунктов, чтобы не навредить и не спровоцировать ещё более серьёзный сбой.

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

Алгоритм прошивки

В самом начале столь ответственных действий важно получить Root-права на ваш Андроид. Далее закачайте TWRP-recovery и сохраните её на SD-карте.

Теперь понадобится закачать с Плей Маркета специальное программное обеспечение, которое поможет обновить Recovery. Отличным помощником при осуществлении таких действий может выступать утилита Mobileuncle MTK Tools.

Установите эту программу, запустите её и найдите пункт «Обновление Recovery». После того как вы кликните по этому пункту, система запросит место, куда был помещён файл Recovery. Безусловно, следует указать SD-карту.

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

После завершения процесса остаётся почистить кэш, удалив из смартфона все ненужные файлы. Для этого найдите пункт «Wipe cache/dev link», кликните и дождитесь завершения очистки. Теперь просто перезагрузите мобильный аппарат, после чего можете приступать к его использованию.

Для прошивки радиомодуля можно воспользоваться и другим способом. Для этого первоначально придётся закачать и сохранить желаемую версию прошивки, а также файл android-info.txt.

Прошивку распаковать, найти файл Radio.img, переместить его в новую папку, куда также забросить и файл android-info.txt.

Теперь эту папку назвать PC10IMG, а затем заархивировать в формате zip. Этот созданный архив переместить на SD-карту.

После таких действий выключить аппарат, извлечь аккумулятор на пять секунд, затем вновь его подключить, но только при зажатой клавише «громкость вниз».

В этом случае на экране появится программный запрос «Do you want to start update», на который должен последовать позитивный ответ, а именно — нажатие клавиши «громкость вверх».

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

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

М одель телефона «Lenovo P780», подобно прочим устройствам этой фирмы, предусматривает наличие разных вариаций радиомодуля. Из — за этого варианты китайского и европейского производства получают довольно значимые различия. Так, в случае с китайской модификацией знайте, что ваш смартфон не будет поддерживать 3G — сети при частотах GSM 900, в результате чего связь будет плохого качества и, скорее всего, прерывистой. Особенно — по мере отдаления от вышки мобильного оператора.

Отличия китайских и европейских серий «Lenovo P780»

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

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

Рассмотрим же, как прошить радиомодуль и добиться качественного преобразования.Пошаговый процесс перепрошивания радиомодулей в моделях «Lenovo P780»:

1) Убедитесь в наличии правильно установленного «TWRP — recovery»;

2) скачайте предпочитаемый вами радиомодуль (все предлагаемые подходят под конфигурацию модели):

  • — модем типа V51 — (кликабельно).
  • — модем типа V52 - (кликабельно).
  • — модем типа V23 - (кликабельно).
  • — модем, подходящий смартфону от модели «Lenovo S920» - (кликабельно).

3) следующим шагом посетите «TWRP — recovery», кликните по пункту «Install» и активируйте приобретенный ранее архив с устанавливаемым радиомодулем, но перед этим пунктом сделайте «Wipe cache» и затем осуществите перезагрузку телефона.

Отныне вы четко знаете, как прошить радиомодуль. А значит, сможете при необходимости самостоятельно нормализовать настройки. Не бойтесь прошивать и пробовать модем. Все прошивки радиомодуля обратимы — поэтому пробуйте тот модем, что подойдет вам больше всего!

Помните, что все, что вы делает — вы делаете на свой страх и риск! Перед тем, как что-то сделать — 100 раз подумайте!

После того, как неожиданно упала дальность аппаратуры радиоуправления, после были заказаны новые радиомодули фирмы FrSky. Вот как раз заменой радиомодуля в пульте управления мы и займемся.

Краткое описание комплекта радиомодулей FrSky

FrSky DHT 8канальный DIY передатчик с функцией телеметрии Это в передатчик.

Приемник FrSky D8RSP 2.4Ghz (w/telemetry) с функцией телеметрии . А это будем использовать вместо приемника .

7 готовых каналов управления . Еще один канал СРРМ, где зашифрованы сигналы восьми каналов управления (по словам Термита — это весьма упростит схему будущего автопилота).

Возможность передачи телеметрии с приемника на пульт управления. В самом приемнике есть два АЦП, которые можно использовать для контроля напряжения на аккумуляторе прямо во время полета. А передатчик можно настроить на выдачу предупреждений, когда напряжение упадет ниже запрограммированного уровня. Об этом чуть ниже. Точно так же можно контролировать качество приема сигнала передатчика. Ну и присутствует возможность передавать свои какие-то данные по UART протоколу.

Дальность приема — заявлена до 1.5км, что с запасом хватит для визуального пилотирования. (От места моих полетов до одного села — всего около 300 метров — и то я туда не летаю — самолет на таком расстоянии — превращается в точку ). К тому же еще дополнительно была заказана Модульная антенна передатчика FrSky 2.4ГГц серии-V8 с коэффициентом усиления 5Дб . С этой антенной дальность должна вырасти еще больше.

Установка радиомодуля в передатчик

Разбираем пульт.

Демонтируем старый ВЧ модуль и старую антенну.

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

Вот, что должно получиться в результате:

Устанавливаем разъем антенны:

Вот, что получилось:

Теперь займемся установкой радиомодуля и платы управления. Для начала отключим от платы управления этот тумблер:

Он отвечает за режим работы радиомодуля передатчика, нам, для совместимости с нашим приемником, нужен режим 2-WAY (Compatible with telemetry receivers: D4FR/D6FR/D8R/D8R-II). Среднее положение тумблера, при котором он по сути не нужен.

Устанавливаем плату управления (на ней светодиод и кнопка) туда, как показано на фотографии. Может есть и более подходящее место для нее, но мне так показалось удобнее. Просто там даже отверстий сверлить не нужно — просто проткнуть наклейку на лицевой стороне. Крепим плату термоклеем.

Радиомодуль устанавливаем сразу возле антенны. Вот как на фотографии, тоже крепим его термоклеем, но перед этим подключаем к нему шлейф для снятия телеметрии (можно либо подпаять их к штырькам, либо использовать разъем типа BLS-4. Вот что получилось:

Теперь нужно подключить питание на радиомодуль и подать на него сигнал PPM с приемника. Конечно же, перед тем, как демонтировать старый радиомодуль провода нужно было подписать. Кстати, забавно, но из двух проводов питания: красного и черного — +5вольт было…. правильно. На черном. На красном была земля Но питание +5вольт нам не нужно. Радиомодулю FrSky нужны 12 вольт. Поэтому мы их возьмем сразу с аккумулятора. Вот как на фотографии. Кстати, на ней видно куда подпаивать разъем на подключение литий-полимерного аккумулятора для питания передатчика. С ним намного удобнее, чем с восемью пальчиковыми аккумуляторами.

Теперь займемся телеметрией. Раз уж она у нас есть, то ее нужно удобно с пульта забирать. Так как это у нас протокол UART, то я возьму разъем, который у меня является стандартом для этого протокола — разъем WH-4. Вот только его придется чуточку переделать. Нам такие длинные штырьки не особо нужны, а лишний 1мм со стороны проводов нам нужен, потому что у нас разъем будет снаружи. Слева — переделанный штырек, справа — стандартный с углового разъема.

Сверлим дырки для штырьков. На фотографии слабо, конечно, видно, но они там есть И при помощи суперклея приклеиваем разъем с модернизироваными штырьками.

А теперь займемся электрическими экспериментами. Дело в том, что для подключения радиомодуля FrSky к компьютеру нужен специальный шнур, который я забыл приобрести. Зато у меня есть шнур, которым я пользуюсь для подключения самого пульта к компьютеру (чтобы летать в симуляторе). Но проблема в том, что на его вход нужны сигналы уровней ТТЛ. А с радиомодуля FrSky выходят сигналы СОМ уровней. Не буду рассказывать, сколько было экспериментов, но в итоге оказалось, что с фрискаевского модуля идут сигналы уровней инвертированого ТТЛ. Т.е. «единичка» — это 0-1 вольт, а «ноль» — это 3,5-5 вольт. Т.е. чтобы использовать мой шнурок мне нужны были два инвертора.

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

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


Мощность передатчика до +20 dBm (возможна программная настройка с шагом 3 dBm). Имеется встроенная функция разнесённого приёма (Antenna Diversity) . Микросхема способна работать на частотах от 240 до 960 МГц с шагом 156 (240-480 МГц) или 312 Гц (480-960 МГц). Также микросхема имеет такие особенности как: таймер автоматического пробуждения, детектор низкого заряда батареи, 64-х байтный буфер приема/передачи, автоматический обработчик пакетов, датчик температуры, 8-ми разрядный АЦП, источник опорного напряжения, три вывода GPIO, различные виды модуляции сигнала (OOK, FSK, GFSK) и др.

Микросхема работает от 1.8 до 3.6 В питающего напряжения.

Особенности радиомодуля

На модуле отсутствуют какие-либо стабилизаторы напряжения, таким образом нужно соответствующее обеспечение питания и соответствующий уровень на логических входах. На модуле видна еще одна мелкая шестивыводная микросхема с маркировкой G4C. Это микросхема uPG2179TB, которая выполняет функцию переключения антенны между выводами TX и RX, обеспечивая тем самым возможность работы модуля как в режиме приема, так и в режиме передачи. Управление микросхемой переключателя осуществляется самой SI4432 по портам GPIO0 и GPIO1, которые, при инициализации нужно соответственно запрограммировать, для смены/установки режима приема/передачи. При этом данная схемотехническая конфигурация не позволяет использовать функцию разнесённого приема, а функционирование выводов GPIO0 и GPIO1 должно быть отведено только на управление переключателем uPG2179TB.

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

Схему модуля, именно того, который приведен на рисунке я не нашёл, но по информации из даташита можно установить распиновку модуля:

NSEL, SCLK, SDI, SDO - интерфейс SPI (работа с SI4432 сводится к записи и чтению регистров SI4432 по интерфейсу SPI);

NIRQ - вывод прерываний (если произошло событие прием/передача и пр., то уровень на этом выводе падает в 0, какие именно события будут приводить к прерываниям зависит от значений битов в соответствующих регистрах);

SDN - вывод управления режимом работы SI4432, если установить высокий уровень на SDN, то SI4432 переходит в режим Shutdown, в котором микросхема переходит в режим энергосбережения с током потребления 15 нА, при этом всё содержимое регистров возвращается к исходному состоянию и невозможна передача данных по SPI;

VDD - питание модуля от 1.8 до 3.6 В;

GND - «земля»;

GPIO0, GPIO1, GPIO2 - программируемые порты ввода/вывода (если не перепаивать модуль, то под свои цели можно запрограммировать только GPIO2, так как GPIO0 GPIO1 уже заняты для переключения режима приема/передачи).

Настройка модуля

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

Микросхемы SI4432 бывают разных ревизий: A, V, B. Определяется первой буквой в шифре, в моём случае BPS10P, значит ревизия B. Для разных ревизий имеются некоторые особенности в инициализации.

Подключение к контроллеру

Подключение модуля производится в соответствии с распиновкой приведенной выше. Для простого приёма или передачи данных выводы GPIO можно не заводить на входы микроконтроллера и оставить их висящими в воздухе. Выводы SPI подключаются к соответствующим выводам микроконтроллера, NIRQ можно повесить на любой свободный вывод микроконтроллера (наверное лучше на такой вывод, где можно получить внешнее прерывание по фронту). SDN можно завести на «землю» или на вывод МК, но при этом не забыть установить его в 0.

Чтение и запись по SPI

Производитель SI4432 предлагает использовать следующие функции для чтения и записи регистров по SPI.

Void SpiWriteRegister (U8 reg, U8 value) { //Отправка данных с двойной буферизацией //Выбор модуля путем установки NSEL в 0 NSS = 0; //Запись адреса регистра в буфер SPI МК //Установка старшего бита в адресе регистра необходима для проведения операции записи (всего 127 регистров) SPI1DAT = (reg|0x80); //Ожидание отправки байта while(SPIF1 == 0); SPIF1 = 0; //Запись желаемого значения регистра SI4432 в буфер SPI МК SPI1DAT = value; //Ожидание отправки байта while(SPIF1 == 0); SPIF1 = 0; //Отпуск модуля NSS = 1; }
Чтение:

U8 SpiReadRegister (U8 reg) { //Выбор модуля путем установки NSEL в 0 NSS = 0; //Запись адреса регистра в буфер SPI МК (старший бит адреса - 0) SPI1DAT = reg; //Ожидание отправки байта while(SPIF1 == 0); SPIF1 = 0; //Запись произвольных данных в буфер SPI МК //Во время отправки этих данных МК прочтет значение регистра SI4432 SPI1DAT = 0xFF; //Ожидание отправки байта while(SPIF1 == 0); SPIF1 = 0; //Отпуск модуля NSS = 1; //Чтение и возврат функции прочтенных полученных данных из регистра SI4432 return SPI1DAT; }

Инициализация. Начало работы

Рекомендуется произвести следующие манипуляции.

1) Установить вывод SDN в 0.
2) Подождать 15 мс, до отправки команд по SPI.
3) Прочитать статусы регистров прерываний.
4) Выполнить программный сброс.

SDN = 0; // SDN в 0 delay_ms(15); //чтение статусов ItStatus1 = SpiReadRegister(0x03); ItStatus2 = SpiReadRegister(0x04); //выполнение программного сброса SpiWriteRegister(0x07, 0x80); //запись 0x80 в регистр Operating & Function Control1 //ожидание возникновения прерывания while (NIRQ == 1); //чтение статусов ItStatus1 = SpiReadRegister(0x03); //read the Interrupt Status1 register ItStatus2 = SpiReadRegister(0x04); //read the Interrupt Status2 register
Чтение статусов очищает флаги прерываний и сбрасывает вывод NIRQ в 1 (когда происходит прерывание NIRQ сбрасывается в 0 и остается в этом состоянии до тех пор пока не будет прочтён соответствующий статусный регистр).

Установка частотных параметров

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

В этом файле уже выставлены подходящие значения по умолчанию. Изменять значения можно только в серых ячейках. Целесообразно менять в этом файле значение ячеек ответственных за скорость передачи (J9) и несущую частоту(B17). Обычно, чем меньше скорость передачи тем меньше вероятность возникновения ошибки в процессе передачи данных. Можно выбрать тип модуляции сигнала: FSK, GFSK, OOK.

OOK модуляция кодирует данные включением или выключением усилителя сигнала. Когда нет данных для передачи усилитель отключен, при передаче логического 0 усилитель отключен на время длительности одного бита, при передаче логической 1 усилитель включен на время длительности одного бита.

FSK основана на изменении частоты сигнала для передачи цифровых данных. Для передачи логического 0 частота несущего сигнала уменьшается на величину частоты отклонения, а для логической 1 увеличивается. Отличие GFSK от FSK в том, что GFSK применяет фильтр Гаусса к битам данных.

Производитель рекомендует использовать тип GFSK, так как при этом типе модуляции обеспечивается наилучшая эффективность работы и более чистый спектр сигнала по сравнению с другими типами доступных модуляций, что видно из рисунка (сравнение FSK и GFSK):

Конфигурирование регистров ответственных за частоту:

//установка центральной частоты 915 МГц SpiWriteRegister(0x75, 0x75); SpiWriteRegister(0x76, 0xBB); SpiWriteRegister(0x77, 0x80); //установка скорости передачи (9.6 kbps) SpiWriteRegister(0x6E, 0x4E); SpiWriteRegister(0x6F, 0xA5); SpiWriteRegister(0x70, 0x2C); //установка отклонения частоты (+-45 кГц) (необходимый параметр при GFSK модуляции) SpiWriteRegister(0x72, 0x48);

Передача пакета данных с помощью обработчика пакетов

Обработчик пакетов используется в режиме приёма и в режиме передачи. Можно передавать данные и без обработчика пакетов, в этом случае нужно описывать структуру пакета в регистрах самостоятельно. Обычно структура пакета выглядит следующим образом:

Преамбула (Preamble) - последовательность 0101… используемая для синхронизации приёмника и передатчика. SI4432 имеет встроенный детектор преамбулы. При настройке SI4432 в регистрах задаётся значение длины преамбулы и величины порога детектирования преамбулы. Если длина преамбулы или порог детектирования преамбулы будет меньше определённого значения, то возрастёт вероятность потери пакетов данных. Детектор преамбулы ищет преамбулу в соответствии с порогом детектирования. Если найдена соответствующая преамбула, то запускается механизм определения слова синхронизации (Sync Word).

Передаваемый пакет всегда начинается с преамбулы (010101… битовый паттерн), которая позволяет приемнику приготовится для приема передаваемых данных. Дина преамбулы, как и порог, зависят от настроек радио: типа модуляции, автоматической частотной подстройки (AFC). В SI4432 есть встроенный детектор преамбулы, который автоматически сравнивает полученные из эфира биты с битовым паттерном преамбулы, если детектор преамбулы обнаруживает предопределенную длину последовательности битов преамбулы в принятом сигнале, то SI4432 сообщает о приеме валидной преамбулы в статусных регистре или по выводу GPIO, если произведена соответствующая настройка GPIO.

Порог детектирования преамбулы - программируемая величина. В зависимости от типа модуляции (FSK, GFSK, OOK), задействования автоматической частотной подстройки (AFC) и разнесённого приёма (antenna diversity) производитель рекомендует выбирать длину преамбулы и порог детектирования преамбулы в соответствии с таблицей:

О AFC

При использовании автоматической частотной подстройки AFC происходит запись в регистры Frequency offset 1 и 2 значений сдвига между настроенными частотами приемника и передатчика. Эти значения можно использовать для более точной настройки частоты при этом отключить автоматическую подстройку частоты и уменьшить длину преамбулы и соответственно порог детектирования.


После успешного детектирования преамбулы, радио ожидает слова синхронизации. По его приходу сравнивает полученные биты. После успешного сравнения SI4432 начинает заполнять FIFO передаваемыми данными. Слово синхронизации, известная для приемника и передатчика последовательности битов, позволяет идентифицировать передаваемые данные.

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

Также в пакет добавляется контрольная сумма CRC.

Используя обработчик пакетов, микроконтроллер конфигурирует формат передаваемого пакета один раз при первичной настройке SI4432, затем, чтобы передать данные микроконтроллер должен просто записать их в соответствующий FIFO регистр SI4432.

Отключение заголовка, установка переменного количества байт передаваемых данных (количество переданных байт записывается автоматически в передаваемый пакет данных) и 2 байта для слова синхронизации:


О заголовках

Если использовать заголовок, то обработчик пакетов приемника производит фильтровку заголовка, тем самым идентифицируя с какого передатчика пришло сообщение.



Включение обработчика пакетов передатчика и CRC:

SpiWriteRegister(0x30, 0x0D);
Выбор источника модуляции FIFO и установка GFSK модуляции:


Источник модуляции - данные которые необходимо промодулировать, чтобы передать в эфир. В данном случае FIFO установлен источником. Но есть и прямой режим когда биты данных, с определенным таймингом, подаются на какой-либо вывод SI4432 (GPIOn, SDI, NIRQ).

Как было описано ранее, модуль имеет один вывод под антенну и переключатель режима прием передача на микросхеме uPG2179TB, выводы которой заведены на GPIO0 и GPIO1. Таким образом, можно запрограммировать GPIO на автоматическое переключение:

1) Использовать более высокое значение частоты отклонения для передатчика и более широкий диапазон для приемника.

2) Использовать AFC (Auto-frequency calibration), для этого необходимо увеличить длительность преамбулы.

3) Настроить регистр ответственный за нагрузочную ёмкость кварцевого резонатора:

Отправка пакета

Будем отправлять пакет раз в секунду.

//главный цикл while(1) { delay_ms(1000); /*Настройка содержания пакета*/ //установка длины передаваемых данных - 8 байт SpiWriteRegister(0x3E, 8); //запись 8 в регистр длины передаваемых данных //заполнение FIFO передаваемыми данными SpiWriteRegister(0x7F, 0x42); SpiWriteRegister(0x7F, 0x55); SpiWriteRegister(0x7F, 0x54); SpiWriteRegister(0x7F, 0x54); SpiWriteRegister(0x7F, 0x4F); SpiWriteRegister(0x7F, 0x4E); SpiWriteRegister(0x7F, 0x31); SpiWriteRegister(0x7F, 0x0D); //Отключение всех прерываний кроме прерывания по отправке пакета //Данное действие сделано для извещения МК о успешной отправке SpiWriteRegister(0x05, 0x04); SpiWriteRegister(0x06, 0x00); //Чтение регистров статусов прерываний, для очистки текущих прерываний и сброса NIRQ в лог. 1 ItStatus1 = SpiReadRegister(0x03); ItStatus2 = SpiReadRegister(0x04); /*активация передатчика*/ //При этом радиомодуль формирует пакет и отправляет его автоматически SpiWriteRegister(0x07, 0x09); //Ожидание прерывания по отправке while(NIRQ == 1); //чтение статусных регистров для очистки флагов прерываний ItStatus1 = SpiReadRegister(0x03); ItStatus2 = SpiReadRegister(0x04); }

Приём пакета данных с помощью обработчика пакетов

Инициализация радио

Инициализации приёмника аналогична инициализации передатчика. Необходимо сделать сброс и прочитать регистры статуса.

Установка частоты

//установка центральной частоты 915 МГц SpiWriteRegister(0x75, 0x75); SpiWriteRegister(0x76, 0xBB); SpiWriteRegister(0x77, 0x80);
Параметры радио: 9,6 kbps, модуляция GFSK, отклонение частоты 45 кГц, приёмный диапазон 112,1 кГц. В соответствии с калькулятором частоты заполняются следующие регистры:

SpiWriteRegister(0x1C, 0x05); //запись 0x05 в IF Filter Bandwidth регистр SpiWriteRegister(0x20, 0xA1); //запись 0xA1 в Clock Recovery Oversampling Ratio регистр SpiWriteRegister(0x21, 0x20); //запись 0x20 в Clock Recovery Offset 2 регистр SpiWriteRegister(0x22, 0x4E); //запись 0x4E в Clock Recovery Offset 1 регистр SpiWriteRegister(0x23, 0xA5); //запись 0xA5 в Clock Recovery Offset 0 регистр SpiWriteRegister(0x24, 0x00); //запись 0x00 в Clock Recovery Timing Loop Gain 1 регистр SpiWriteRegister(0x25, 0x13); //запись 0x13 в Clock Recovery Timing Loop Gain 0 регистр SpiWriteRegister(0x1D, 0x40); //запись 0x40 в AFC Loop Gearshift Override регистр SpiWriteRegister(0x72, 0x48); //запись 0x48 в Frequency Deviation регистр SpiWriteRegister(0x2A, 0x20); //запись 0x20 в AFC Limiter регистр

Установка структуры пакета

Аналогично передатчику: отключение заголовка, установка переменного количества байт передаваемых данных (количество переданных байт записывается автоматически в передаваемый пакет данных) и 2 байта для слова синхронизации:

SpiWriteRegister(0x33, 0x02);
Отключение фильтрации заголовков:

SpiWriteRegister(0x32, 0x00);
Непосредственная установка слова синхронизации 0x2DD4:

SpiWriteRegister(0x36, 0x2D); SpiWriteRegister(0x37, 0xD4);
Включение обработчика пакетов приемника и CRC:

SpiWriteRegister(0x30, 0x85);
Включение режима FIFO и GFSK модуляции:

SpiWriteRegister(0x71, 0x63);
Установка порога детектирования преамбулы 20 бит:

SpiWriteRegister(0x35, 0x28);
Установка GPIO на автоматическое переключение антенны:

SpiWriteRegister(0x0B, 0x12);// настройка GPIO0 для включения режима передачи TX SpiWriteRegister(0x0C, 0x15);//настройка GPIO1 для включения режима приема RX

О фиксированной длине пакета

При фиксированной длине пакета, данные о длине не включаются в пакет, а хранятся в регистре Transmit Packet Length как приемника, так и передатчика, при этом должен быть выставлен бит fixpklen в регистре Header Control 2 (см. )


Если не используется разнесенный прием, бит SGI в регистре AGC должен быть установлен для корректной работы контроля аналогового усиления:

SpiWriteRegister(0x69, 0x60);
Настройка регистра ответственного за нагрузочную ёмкость кварцевого резонатора:

SpiWriteRegister(0x09, 0xD7); //запись 0xD7 в регистр ответственный за нагрузочную ёмкость

Прием пакета

Активация приемника:

SpiWriteRegister(0x07, 0x05);//запись 0x05 в Operating Function Control 1 регистр
Включаем два прерывания:

1) прерывание по приему валидного пакета;
2) прерывание по ошибке CRC.

SpiWriteRegister(0x05, 0x03); //запись 0x03 в Interrupt Enable 1 регистр SpiWriteRegister(0x06, 0x00); //запись 0x00 в Interrupt Enable 2 регистр
Чтение статусных регистров для сброса прерываний:

ItStatus1 = SpiReadRegister(0x03); ItStatus2 = SpiReadRegister(0x04);
Главный цикл:

While(1) { //ожидание прерывания if(NIRQ == 0) { //Чтение статусных регистров ItStatus1 = SpiReadRegister(0x03); ItStatus2 = SpiReadRegister(0x04); if((ItStatus1 & 0x01) == 0x01)//произошла ошибка CRC { //отключение передатчика SpiWriteRegister(0x07, 0x01);//запись 0x01 в Operating Function Control 1 регистр //сброс RX FIFO SpiWriteRegister(0x08, 0x02);//запись 0x02 в Operating Function Control 2 регистр SpiWriteRegister(0x08, 0x00);//запись 0x00 в Operating Function Control 2 регистр //включение приёмника SpiWriteRegister(0x07, 0x05); } if((ItStatus1 & 0x02) == 0x02)//принят валидный пакет { //отключение передатчика SpiWriteRegister(0x07, 0x01);//запись 0x01 в Operating Function Control 1 регистр //Чтение длины принятых данных length = SpiReadRegister(0x4B);//чтение регистра Received Packet Length //Обработка принятых данных из RX FIFO for(temp8=0;temp8 < length;temp8++) { payload = SpiReadRegister(0x7F);//чтение FIFO Access регистра } //работа с массивом принятых данных { //... } //сброс RX FIFO SpiWriteRegister(0x08, 0x02);//запись 0x02 в Operating Function Control 2 регистр SpiWriteRegister(0x08, 0x00);//запись 0x00 в Operating Function Control 2 регистр //включение приёмника SpiWriteRegister(0x07, 0x05); } } }

Заключение

Вся информация по программированию модулей взята из .

В есть список всех Application Note, представляющих собой что-то вроде миркоотчётов связанных с работой SI4432. Кроме даташита и указанного Programming guide, есть среди Application Note еще один полезный документ - . В Programming guide также описана настройка трансмиттера для двусторонней связи. В карте регистров дано подробное описание всех регистров, режимов работы и настроек.

Теги:

  • радиомодуль
  • SI4432
  • SiliconLabs
Добавить метки

Статьи и Лайфхаки

Вопрос, что такое радиомодуль в телефоне , стали задавать себе пользователи после того, как возникла необходимость и желание использовать две сим-карты одновременно. До этого момента вопросом о радиомодуле в телефоне интересовались лишь любители ковыряться в мобильных аппаратах, а также мастера по ремонту мобильных телефонов.

Что даёт радиомодуль в телефоне

Радиомодуль в телефоне позволяет принимать и передавать сигналы сети, а это значит, что:
- вы можете звонить;
- вам могут звонить;
- приём и отправка текстовых и мультимедийных сообщений;
- и наконец – возможность пользоваться мобильным интернетом для посещения любимых социальных сетей и для работы!

Радиомодуль в телефоне – это небольшой участок на материнской плате, который принимает радиосигналы. Отвал радиомодуля или его неправильная установка, установка неподходящего плате радиомодуля, наличие рядом с ним металлических деталей, ведёт к снижению качества и силы сигнала вплоть до появления сообщения на экране «Сеть не найдена/Поиск сети».

Именно использование различных радиомодулей, различие в их установке производителями и говорит о том, что один телефон будет ловить в подземном переходе, второй телефон будет сбоить, а третий просто не будет показывать сигнал сети.

Помимо самой электроники, радиомодулем в телефоне нужно считать и специализированное программное обеспечение. Это библиотеки драйверов, которые заставляют работать и «общаться» между собой все аппаратные части телефона. Существует большое количество телефонов китайского производства, у которых сим-карты «вылетают» и требуют установки дополнительных патчей сим-карт, чтобы всё работало нормально. Бывает и так, что при обновлении операционной системы смартфона (прошивки) пропадает сигнал сети – тогда нужна версия драйверов и патчей по свежее.

Радиомодуль в телефоне и две сим-карты

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

В заключении напишем один тезис-определение. Что такое радиомодуль в телефоне? Это электронная часть в смартфоне, связанная с остальным «железом» с помощью драйверов, позволяющая работать с сетью оператора мобильной связи.