Тема работы:
«Анализ построения сети удаленного контроля термодатчиков
на базе процессоров серии KW40X фирмы NXP»
Выполнил:
студент группы 319
Рыбаков Д.А.
Руководитель: доцент кафедры ТОР
Бакке А.В.
Проанализируем архитектуру построение BLE чипа KW40x. Рисунок 1.
На основе архитектуры BLE, представленного на рисунке 1 построим архитектуру сети многопользовательской передачи телеметрических данных (рисунок 2).
Рисунок 2.
Рассмотрим структуру адреса Bluetooth устройства (рисунок 3).
Рисунок 3.
Рассмотрим подпрограммную процедуру вызова функций настройки публичного MAC – адреса BLE – устройства.
void SetBleConfig()
{
SetBdAddress(); //настройка BLE - адреса
}
void SetBdAddress()
{
uint8_t* pChipID = ((uint8_t*)0x40048058); //адрес идентификатора MCU
uint32_t address = 0x00ABCDEF; //инициализирующее значение CRC24
for (int i = 0; i < 12; ++i) //идентификатор MCU расположен последовательно в трёх словах по 4 байта
{ uint32_t byte = *(pChipID + i);
address ^= byte << 16;
for (int j = 1; j <= 8; ++j) address = (address & 0x800000) != 0 ? (address << 1) (0x5D6DCB) : address << 1;
}
//будем менять только 3 младшие байта глобального адреса, а старшие остаются как есть
address &= 0x00FFFFFF;
gBDAddress_c[0] = gBDAddress_c[1] = gBDAddress_c[2] = 0x00;
*((uint32_t*)gBDAddress_c) |= address;
}
Функция SetAddress() создаёт и устанавливает публичный MAC – адрес BLE-устройства, оставляя в качестве уникального идентификатора организации (три старшие байта) идентификатор фирмы Freescale. Младшие три байта адреса формируются алгоритмом CRC24 из уникального идентификатора MCU, расположенного начиная с адреса 0x40048058.
Рассмотрим подпрограмму, которая отвечает за пересылку центральному устройству данные (мастеру – peerDeviceId) на установление новых параметров соединения.
bleResult_t SetMyConnectParameters(deviceId_t peerDeviceId)
{
bleResult_t result;
result = L2ca_UpdateConnectionParameters(peerDeviceId, 6, 6, 499, 1500, gcConnectionEventMinDefault_c, gcConnectionEventMaxDefault_c);
return result;
}
6 - (=7.5мс) – минимальный интервал между коннекциями = 1.25 мс
6 - (=7.5мс) - максимальный интервал между коннекциями = 1.25 мс
499 - ([499+1]*7.5мс = 3750мс) - latency – столько запросов (+1) имеет право проигнорировать периферийное устройство
1500 - supervisionTimeout – задаётся в 10 мс и определяет безответное время, по прошествии короткого центральное устройство определяет потерю связи.
Фрейм
- время между началами двух последовательных событий соединения задается
параметром
connInterval, который указывается в интервалах 1.25 мс и может лежать в пределах
от 7.5 мс до 4 с.
Вторым важным параметром
для пико сети BLE является параметр connSlaveLatency, определяющий количество
последовательных фреймов в течении которых ведомое устройство не прослушивает канал и
может на это время отключить трансивер. Данный параметр является
целым числом в
пределах от 0 до 499 и не должно превышать контрольного интервала супервизора -
параметр
connSupervisionTimeout.
Параметр connSupervisionTimeout может принимать значения в диапазоне от 100 мс до 32 с. Его назначение - обнаружение потери соединения с устройством из-за ухудшения качества канала связи или перемещения его за пределы досягаемости.
Рассмотрим процедуру подсчёта температуры и преобразование данных термистора. Для корректного расчёта необходимы данные следующих величин.
- Температурный коэффициент чувствительности (ТКЧ) термистора NXFT15WF104FA2B100 – 4250, используется для точного расчета температуры;
- Величина сопротивления (Ом) термистора (Rterm) при Т=25°С, находящегося в верхнем плече делителя, в нижнем плече которого находится постоянный резистор 100 000 Ом;
- Величина сопротивления (Ом) постоянного резистора в нижнем плече делителя = 100 000 Ом;
Далее определяем
макрос ADC12BIT (переключает режим
АЦП с 16 бит на 12 бит. Далее инициируется функция, которая
запускает аналогово-цифровое преобразование и возвращает полученные данные с АЦП в двоичном виде. Далее функция получает двоичные
данные с АЦП
и переводит в
температуру, применяя сглаживание, и возвращает её. Получаем
двоичные данные с АЦП, переводим данные АЦП в
сопротивление термистора, переводим сопротивление
термистора в температуру:
currTemp
= 1/(log(данные_АЦП/Rterm)/ТКЧ +
0.003354) - 273.15
Диаграмма состояний устройства BLE (рисунок 4).
После включения электропитания термодатчики Bluetooth LE должно зарегистрироваться в подсети. Для этого устройство должно переключиться в роль запрашивающего устройства и сформировать широковещательный запрос. Находящиеся в пределах досягаемости сканирующие узлы сети принимают пакет от запрашивающего устройства и заносят сведения о нем в таблицу доступных устройств. Тип запроса, номер подсети запрашивающего устройства и его адрес (номер устройства в подсети) определяются по информационной части пакета запроса. После регистрации в подсети устройство переходит в состояние парковки.
Рисунок 4.
•холостое состояние – низкое энергопотребление, работают только часы устройства
•состояние соединения – устройство подключено к пикосети
•состояние парковки – состояние подчинённого устройства, от которого не требуется участия в работе пикосети, но которое должно оставаться её частью
Промежуточные состояния (для подключения к пикосети новых подчинённых устройств):
•опрос – определение устройством наличия других устройств в пределах его досягаемости
•поиск опроса – ожидание устройством опроса
•ответ на опрос – устройство, получившее опрос, отвечает на него
•запрос – посылается одним устройством другому для установления с ним соединения (запрашивающее устройство становится ведущим, запрашиваемое–подчинённым)
•поиск запроса – устройство ожидает запрос
•ответ подчинённого устройства – подчинённое устройство отвечает на запрос ведущего
•ответ ведущего устройства – ведущее устройство отвечает подчинённому после получения от него ответа на запрос
Выводы: в ходе самостоятельной работы мною были изучены:
- архитектура построения сети BLE, изучена диаграмма состояний устройств BLE;
- изучены основы организации профилей BLE протоколов и их программная реализация;
- была спроектирована многопользовательская сеть передачи телеметрических данных в контексте модели OSI.