SENSIRION SVM41 Оценка
Общие Соображения
Для получения подробной информации о самом протоколе I2C и его подробной реализации обратитесь к документу Спецификация шины I2C NXP и руководство пользователя. Все команды SVM41 состоят из двух байтов (16 бит). Команды не должны сопровождаться CRC. Кроме того, данные, отправляемые на датчик и возвращаемые с него, передаются пакетами по два байта (16 бит), за которыми следует 1-байтовый (8 бит) CRC.
I2C Адрес
I2C-адрес датчика — 106 (десятичный; шестнадцатеричный: 0x6A). Заголовок I2C формируется адресом I2C, за которым следует бит чтения или записи.
I2C томtage Уровни
Входной и выходной объемtagУровни e указаны в разделе 6.1 спецификации NXP I2C-bus и руководства пользователя. Интерфейс датчика совместим с шиной I3.0C 5.5–2 В, т.е.tagуровни e в зависимости от объема поставкиtagуровень е.
Скорость протокола I2C
Датчик поддерживает «стандартный режим» I2C с максимальной тактовой частотой 100 кГц.
Последовательности I2C
Типичная последовательность обмена данными между мастером I2C (например, микроконтроллером в хост-устройстве) и SVM41 описана следующим образом и представлена на рисунке 1:
- SVM41 включен
- Мастер I2C запускает измерение всех датчиков, вызывая специальную команду.
- Мастер I2C периодически вызывает команду get signal и считывает данные в следующей последовательности:
- Мастер I2C отправляет команду получения сигналов.
- Ведущее устройство I2C либо ожидает ожидаемое время (как указано в таблице 2), либо опрашивает данные до тех пор, пока ведомое устройство не подтвердит чтение заголовка.
- Мастер I2C считывает данные сигнала.
- Мастер I2C может остановить измерение, отправив специальную команду.
После подтверждения команды запуска измерения SGP41 и STH4x начинают измерения. Данные измерений непрерывно сохраняются в микроконтроллере сampинтервал 1 с. Результирующие данные можно получить в любое время, отправив одну из команд получения сигналов. В случае сampling интервал мастером I2C больше 1 с, ведомый ответит теми же данными в течение 1 с. Когда выполняется выполнение команды, связь с датчиком невозможна, и датчик прерывает связь с условием NACK. После отправки одной из команд получения сигналов мастер может прочитать результаты измерения, отправив заголовок чтения I2C. Датчик подтвердит получение прочитанного заголовка и ответит данными. Длина данных ответа указана в таблице 2 и представлена в виде слов данных, где одно слово состоит из двух байтов данных (сначала старший бит), за которыми следует однобайтовая контрольная сумма CRC. Каждый байт должен быть подтвержден мастером с условием ACK, чтобы датчик продолжал отправлять данные. Если датчик не получает ACK от мастера после любого байта данных, он не будет продолжать отправлять данные.
После получения контрольной суммы для последнего слова данных должны быть отправлены условия NACK и STOP (см. рис. 1). Мастер I2C может прервать передачу чтения с помощью NACK, за которым следует условие STOP после любого байта данных, если он не заинтересован в последующих данных, например, в байте CRC или последующих байтах данных, для экономии времени. Обратите внимание, что данные не могут быть прочитаны более одного раза, и доступ к данным за пределами указанного объема вернет шаблон старших битов.Возможные последовательности команд I2C для связи с SVM41. Темные области указывают на то, что SVM41 управляет линией SDA (данные). Сначала мастер I2C отправляет заголовок записи, записывая 16-битную команду, за которой может следовать одно, четыре или шесть слов данных с байтами CRC. Для чтения измеренных данных мастер I2C отправляет заголовок чтения и получает одно, четыре или шесть слов данных с байтом CRC.
Расчет контрольной суммы
8-битная контрольная сумма CRC, передаваемая после каждого слова данных, генерируется алгоритмом CRC в соответствии со свойствами, указанными в таблице 1. CRC охватывает содержимое двух ранее переданных байтов данных.
Объект | Значение | Exampкод файла |
Имя и фамилия | CRC-8 | uint8_t CalcCrc(uint8_t data[2]) { uint8_t crc = 0xFF; for(int i = 0; i < 2; i++) { crc ^= data[i]; for(uint8_t бит = 8; бит> 0; –бит) { если (CRC & 0x80) { crc = (crc << 1) ^ 0x31u; } Еще { crc = (crc << 1); } } } возврат контрольной суммы; } |
Ширина | 8 бит | |
Защищенные данные | чтение и/или запись данных | |
многочлен | 0x31 (x8 + x5 + x4 + 1) | |
Инициализация | 0xFF | |
Отражение ввода | Ложь | |
Отразить вывод | Ложь | |
Окончательный XOR | 0x00 | |
Exampле | CRC (0xBE 0xEF) = 0x92 |
Контрольные суммы используются только для 2-байтовых пакетов данных. Сами коды команд уже содержат 3-битную CRC, поэтому контрольная сумма не должна добавляться.
I2C-команды
Доступные команды измерения SVM41 перечислены в таблице 2.
Command | Командный шестнадцатеричный. код | Функция | Отправить команду во время | Длина параметра, включая CRC [байты] | Длина ответа, включая CRC [байт] | Максимум. продолжительность [мс] |
svm41_start_measurement | 0x00 0x10 | – | режим ожидания | – | – | 1 |
svm41_get_signals | 0x04 0x05 | – | режим измерения | – | 12 | 1 |
svm41_get_raw_signals | 0x03 0xD2 | – | режим измерения | – | 12 | 1 |
svm41_stop_measurement | 0x01 0x04 | – | режим измерения | – | – | 50 |
svm41_get/set_temperature_offset | 0x60 0x14 | получить | режим ожидания или измерения | – | 3 | 1 |
набор | режим ожидания | 3 | – | 1 | ||
svm41_get/set_voc_parameters | 0x60 0xD0 | получить | режим ожидания или измерения | – | 18 | 1 |
набор | режим ожидания | 18 | – | 1 | ||
svm41_get/set_voc_parameters | 0x60 0xE1 | получить | режим ожидания или измерения | – | 18 | 1 |
набор | режим ожидания | 18 | – | 1 | ||
svm41_store_input_parameters | 0x60 0x02 | режим ожидания или измерения | – | – | 500 | |
svm41_get/set_voc_states | 0x61 0x81 | получить | режим измерения | – | 12 | 1 |
набор | режим ожидания | 12 | – | 1 | ||
svm41_get_device_version | 0xD1 0x00 | – | режим ожидания или измерения | – | 12 | 1 |
svm41_reset_device | 0xD3 0x04 | – | режим ожидания или измерения | – | – | 100 |
Начало измерений
Описание команды получения сигналов I2C.
Command | Командный шестнадцатеричный. код | Описание |
svm41_get_signals | 0x04 0x05 | Эта команда считывает относительную влажность, температуру, а также индекс VOC и NOx. Он возвращает 4×2 байта (+ 1 байт CRC каждый). |
Значения, возвращаемые командой I2C get signal.
Номер байта | Описание | Значение |
0, 1 | два байта | int16 обеспечивает относительную влажность (в % относительной влажности) с компенсацией смещения температуры с коэффициентом масштабирования 100, например, мощность +2'500 соответствует +25.00 % относительной влажности. |
2 | Байт CRC для байтов 0, 1 | – |
3, 4 | два байта | int16 предоставляет температуру (в °C) с коэффициентом масштабирования 200, например, выход +5'000 соответствует +25.00 °C. |
5 | Байт CRC для байтов 3, 4 | – |
6, 7 | два байта | int16 предоставляет индекс VOC (без единиц измерения) с коэффициентом масштабирования 10, например, выход +250 соответствует индексу ЛОС +25.0. |
8 | Байт CRC для байтов 6, 7 | – |
9, 10 | два байта | |
11 | Байт CRC для байтов 9, 10 | int16 предоставляет индекс NOx (без единиц измерения) с коэффициентом масштабирования 10, например, выход +250 соответствует индексу NOx +25.0. |
Получите необработанные сигналы
Описание команды получения необработанных сигналов I2C.
Command | Командный шестнадцатеричный. код | Описание |
svm41_get_raw_signals | 0x03 0xD2 | Эта команда считывает относительную влажность и температуру, которые не компенсируются температурным смещением, а также необработанные сигналы VOC и NOx (пропорциональные логарифму сопротивления слоя MOX). Он возвращает 4×2 байта (+ 1 байт CRC каждый). |
Значения, возвращаемые командой I2C, получают необработанные сигналы.
Номер байта | Описание | Значение |
0, 1 | два байта | int16 предоставляет некомпенсированную относительную влажность (в % относительной влажности) с коэффициентом масштабирования 100, например, мощность +2'500 соответствует +25.00 % относительной влажности. |
2 | Байт CRC для байтов 0, 1 | – |
3, 4 | два байта | int16 обеспечивает нескомпенсированную температуру (в °C) с коэффициентом масштабирования 200, например, выход +5'000 соответствует +25.00 °C. |
5 | Байт CRC для байтов 3, 4 | – |
6, 7 | два байта | uint16 напрямую предоставляет необработанный сигнал VOC SRAW_VOC (в тиках) без масштабирования. |
8 | Байт CRC для байтов 6, 7 | – |
9, 10 | два байта | uint16 напрямую предоставляет необработанный сигнал NOx SRAW_NOX (в тиках) без масштабирования. |
11 | Байт CRC для байтов 9, 10 | – |
Остановить измерение
Описание команды измерения остановки I2C
Command | Командный шестнадцатеричный. код | Описание |
svm41_stop_measurement | 0x01 0x04 | Эта команда останавливает рабочий режим всех датчиков и возвращает SVM41 в режим ожидания. |
Получение/установка смещения температуры для измерений RHT
Описание команды I2C для получения/установки смещения температуры.
Command | Командный шестнадцатеричный. код | Описание |
svm41_get_temperature_offset | 0x60 0x14 | Эта команда, отправленная без байтов параметров, считывает текущее смещение температуры, используемое для компенсации измерений RHT, возвращая 2 байта (+ 1 байт CRC). |
svm41_set_temperature_offset | 0x60 0x14 0xXX 0xXX 0xXX Example со значением по умолчанию: 0x60 0x14 0x00 0x00 0x81 |
Эта команда устанавливает смещение температуры, используемое для компенсации последующих измерений RHT при отправке вместе с входными 2 байтами (+ 1 байт CRC) = 0x.XX… 0xXX. |
Возвращаемые/вводные значения командой I2C get/set Temperature offset.
Номер байта | Описание | Значение |
0, 1 | два байта | int16 обеспечивает смещение температуры (в °C) с коэффициентом масштабирования 200, например, выход +400 соответствует +2.00 °C. По умолчанию 0 °C. |
2 | Байт CRC для байтов 0, 1 | – |
Получить/установить параметры алгоритма VOC
Описание команды получения/установки параметров VOC I2C.
Command | Командный шестнадцатеричный. код | Описание |
svm41_get_voc_parameters | 0x60 0xD0 | Эта команда, отправленная без байтов параметров, считывает текущие шесть параметров, используемых для алгоритма VOC, возвращая 6×2 байта (+ 1 байт CRC каждый). |
svm41_set_voc_parameters | 0x60 0xD0 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX |
Эта команда устанавливает четыре параметра, используемых для алгоритма VOC при отправке вместе с входными байтами 6×2 (+ 1 байт CRC каждый) = 0xХХ…0xXX. |
Exampфайл со значениями по умолчанию: | ||
0x60 0xD0 0x00 0x64 0xFE 0x00 0x0C 0xFC 0x00 0xB4 0xFA 0x00 0x32 0x26 0x00 0xE6 0xE6 |
Возвращаемые/вводные значения командой I2C get/set VOC parameters.
Номер байта | Описание | Значение |
0, 1 | два байта | int16 напрямую предоставляет значение VOC Index (без единиц измерения), представляющее средние условия. Значение по умолчанию: VOC Index = 100. Диапазон значений: 1–250. |
2 | Байт CRC для байтов 0, 1 | – |
3, 4 | два байта | int16 напрямую предоставляет время обучения (в часах), которое используется алгоритмом VOC для оценки своего смещения от истории. События продолжительностью более прибл. вдвое время обучения будет забыто. По умолчанию 12 часов. Диапазон 1–1 ч. |
5 | Байт CRC для байтов 3, 4 | – |
6, 7 | два байта | int16 напрямую предоставляет время обучения (в часах), которое используется алгоритмом VOC для оценки своего выигрыша от истории. События продолжительностью более прибл. вдвое время обучения будет забыто. По умолчанию 12 часов. Диапазон 1–1 ч. |
8 | Байт CRC для байтов 6, 7 | – |
9, 10 | два байта | int16 напрямую обеспечивает максимальную продолжительность стробирования (в мин). В течение этого периода средство оценки состояний алгоритма VOC замораживается, когда индекс VOC очень высок. По умолчанию 180 мин. 0 отключает эту функцию. Диапазон 0–3'000 мин. |
11 | Байт CRC для байтов 9, 10 | – |
12, 13 | два байта | int16 напрямую предоставляет начальное стандартное отклонение (без единиц измерения), используемое во время запуска датчика. Во время пускового периода более низкое значение увеличивает количество событий VOC, а более высокое значение уменьшает количество событий VOC. Значение по умолчанию — 50. Диапазон значений — 10–5 000. |
14 | Байт CRC для байтов 12, 13 | – |
15, 16 | два байта | int16 напрямую предоставляет коэффициент усиления для ampувеличить или ослабить выходной сигнал VOC Index. По умолчанию 230. Диапазон 1–1. |
17 | Байт CRC для байтов 15, 16 | – |
Получить/установить параметры алгоритма NOx
Описание команды I2C для получения/установки параметров NOx.
Command | Командный шестнадцатеричный. код | Описание |
svm41_get_nox_parameters | 0x60 0xE1 | Эта команда, отправленная без байтов параметров, считывает текущие шесть параметров, используемых для алгоритма NOx, возвращая 6×2 байта (+ 1 байт CRC каждый). |
svm41_set_nox_параметры | 0x60 0xE1 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX |
Эта команда устанавливает шесть параметров, используемых для алгоритма NOx, при отправке вместе с 6×2 входными байтами (+ 1 байт CRC каждый) = 0xХХ…0xXX. |
Exampфайл со значениями по умолчанию: | ||
0x60 0xE1 0x00 0x64 0xFE 0x00 0x0C 0xFC 0x02 0xD0 0x5C 0x00 0x32 0x26 0x00 0xE6 0xE6 |
Возвращаемые/вводные значения командой I2C get/set параметров NOx.
Номер байта | Описание | Значение |
0, 1 | два байта | int16 напрямую предоставляет значение индекса NOx (без единиц измерения), представляющее средние условия. Значение по умолчанию: VOC Index = 1. Диапазон значений: 1–250. |
2 | Байт CRC для байтов 0, 1 | – |
3, 4 | два байта | int16 напрямую предоставляет время обучения (в часах), которое используется алгоритмом NOx для оценки своего смещения от истории. События продолжительностью более прибл. вдвое время обучения будет забыто. По умолчанию 12 часов. Диапазон 1–1 ч. |
5 | Байт CRC для байтов 3, 4 | – |
6, 7 | два байта | int16 напрямую предоставляет время обучения (в часах), которое будет использоваться алгоритмом NOx для оценки своего выигрыша от истории; однако это не влияет на вывод индекса NOx. Этот параметр по-прежнему используется по соображениям согласованности с svm41_get/set_voc_parameters команды. Этот параметр всегда должен быть установлен на 12 часов (0x00 0x0C). |
8 | Байт CRC для байтов 6, 7 | Установите значение 0xFC. |
9, 10 | два байта | int16 напрямую обеспечивает максимальную продолжительность стробирования (в мин). В течение этого периода средство оценки состояний алгоритма NOx замораживается, когда индекс NOx очень высок. По умолчанию 720 мин. 0 отключает эту функцию. Диапазон 0–3'000 мин. |
11 | Байт CRC для байтов 9, 10 | – |
12, 13 | два байта | int16 напрямую предоставляет начальное стандартное отклонение (без единиц измерения), которое будет использоваться при запуске датчика; однако это не влияет на вывод индекса NOx. Этот параметр по-прежнему используется по соображениям согласованности с командами svm41_get/set_voc_parameters. Этот параметр всегда должен быть установлен на 50 (0x00 0x32). |
14 | Байт CRC для байтов 12, 13 | Установите значение 0x26. |
15, 16 | два байта | int16 напрямую предоставляет коэффициент усиления для ampповысить или ослабить выходной сигнал индекса NOx. По умолчанию 230. Диапазон 1–1. |
17 | Байт CRC для байтов 15, 16 | – |
Сохранение входных параметров в энергонезависимой памяти
Описание команды сохранения входных параметров I2C.
Command | Командный шестнадцатеричный. код | Описание |
svm41_store_input_parameters | 0x60 0x02 | Эта команда сохраняет все параметры, ранее отправленные на ведомое устройство. с помощью что собой представляет svm41_set_temperature_offset и / или svm41_set_voc_parameters команды в энергонезависимую память SVM41. Эти параметры не будут стерты при сбросе и будут использоваться соответствующими алгоритмами после запуска. Для сброса хранилища к заводским настройкам мастер должен установить все параметры на значения по умолчанию с последующим вызовом svm41_store_input_parameters команда. |
Получить/установить состояния алгоритма VOC
Описание команды I2C для получения/установки состояний VOC.
Command | Командный шестнадцатеричный. код | Описание |
svm41_get_voc_states | 0x61 0x81 | Эта команда, отправленная без байтов параметров, считывает состояния алгоритма VOC, возвращая 4×2 байта (+ 1 байт CRC каждый). Эти значения можно использовать для установки состояний (используя svm41_set_voc_states команда) после возобновления работы датчика, например, после короткого перерыва, пропуская начальную фазу обучения алгоритма VOC. |
svm41_set_voc_states | 0x61 0x81 0xXX 0xXX 0xXX 0xXX0xXX 0xXX 0xXX 0xXX 0xXX 0xXX0xXX 0xXX Exampль: 0x61 81 0x00 0x00 0x81 0x00 0x00 0x81 0x00 0x32 0x26 0x00 0x00 0x81 |
Эта команда устанавливает состояния алгоритма VOC при отправке вместе с входными байтами 4×2 (+ 1 байт CRC каждый) = 0xXX… 0xХХ, которые были извлечены svm41_get_voc_states команда раньше. Это можно использовать при возобновлении работы датчика, например, после короткого перерыва, пропуская начальную фазу обучения алгоритма VOC. |
Возвращаемые/вводные значения командой I2C get/set VOCstates.
Номер байта | Описание | Значение |
0, 1 | два байта | uint8[2] Массив из двух байтов, содержащий состояния алгоритма VOC. |
2 | Байт CRC для байтов 0, 1 | – |
3, 4 | два байта | uint8[2] Массив из двух байтов, содержащий состояния алгоритма VOC. |
5 | Байт CRC для байтов 3, 4 | – |
6, 7 | два байта | uint8[2] Массив из двух байтов, содержащий состояния алгоритма VOC. |
8 | Байт CRC для байтов 6, 7 | – |
9, 10 | два байта | uint8[2] Массив из двух байтов, содержащий состояния алгоритма VOC. |
11 | Байт CRC для байтов 9, 10 | – |
Возвращаемые/вводные значения командой I2C get/set VOCstates.
Номер байта | Описание | Значение |
0, 1 | два байта | uint8[2] Массив из двух байтов, содержащий состояния алгоритма VOC. |
2 | Байт CRC для байтов 0, 1 | – |
3, 4 | два байта | uint8[2] Массив из двух байтов, содержащий состояния алгоритма VOC. |
5 | Байт CRC для байтов 3, 4 | – |
6, 7 | два байта | uint8[2] Массив из двух байтов, содержащий состояния алгоритма VOC. |
8 | Байт CRC для байтов 6, 7 | – |
9, 10 | два байта | uint8[2] Массив из двух байтов, содержащий состояния алгоритма VOC. |
11 | Байт CRC для байтов 9, 10 | – |
Получить версию устройства
Описание команды I2C для получения версии устройства
Command | Командный шестнадцатеричный. код | Описание |
svm41_get_device_version | 0xD1 0x00 | Эта команда возвращает информацию об оборудовании, прошивке и протоколе, возвращая 4×2 байта (+ 1 байт CRC каждый). |
Значения, возвращаемые командой I2C get device version.
Номер байта | Описание | Значение |
0 | один байт | uint8 предоставляет основной номер версии микропрограммы. |
1 | один байт | uint8 предоставляет дополнительный номер версии прошивки. |
2 | Байт CRC для байтов 0, 1 | – |
3 | один байт | bool предоставляет состояние отладки прошивки. |
4 | один байт | uint8 предоставляет основной номер версии оборудования. |
5 | Байт CRC для байтов 3, 4 | – |
6 | один байт | uint8 предоставляет дополнительный номер версии оборудования. |
7 | один байт | uint8 предоставляет основной номер версии протокола. |
8 | Байт CRC для байтов 6, 7 | – |
9 | один байт | uint8 предоставляет дополнительный номер версии протокола. |
10 | один байт | uint8 игнорировать. |
11 | Байт CRC для байтов 9, 10 | – |
Сброс устройства
Описание команды сброса устройства I2C.
Command | Командный шестнадцатеричный. код | Описание |
svm41_reset_device | 0xD3 0x04 | Эта команда выполняет сброс устройства и перезапускает SVM41 в режиме ожидания. Перед выполнением сброса устройство подтвердит вызов. Все ранее установленные параметры, отправленные svm41_set_temperature_offset, svm41_set_voc_parameters, svm41_set_nox_параметры svm41_set_voc_states команды будут потеряны. Смещение температуры и параметры алгоритма VOC и NOx можно сохранить в энергонезависимой памяти SVM41, вызвав команду svm41_store_input_parameters команда. |
лист регистраций изменений
Время | Версия | Страницы | изменения |
Октября 2021 | 1.0 | Всё | Начальная версия |
Декабрь 2021 | 1.1 | Всё 10 |
Редакционные поправки Описания байтов 6–8 и 12–14 в Таблица 14 пересмотрен |
Головной офис и дочерние компании
Sensirion AG Laubisruetistr. 50 CH-8712 Staefa ZH Швейцария
телефон: +41 44 306 40 00
факс: +41 44 306 40 30
info@sensirion.com www.sensirion.com
Сенсирион Тайвань Ко. Лтд.
телефон: +886 3 5506701
info@sensirion.com
Sensirion Inc., США
телефон: +1 312 690 5858
info-us@sensirion.com
www.sensirion.com
Сенсирион Япония Ко. Лтд.
телефон: +81 3 3444 4940
info-jp@sensirion.com
www.sensirion.com/jp
Сенсирион Корея Ко. Лтд.
телефон: +82 31 337 7700~3
info-kr@sensirion.com
www.sensirion.com/kr
Сенсирион Китай Ко. Лтд.
телефон: +86 755 8252 1501
info-cn@sensirion.com
www.sensirion.com/cn
www.sensirion.com
Документы / Ресурсы
![]() |
Оценочная плата SENSIRION SVM41 [pdf] Инструкции SGP40, SGP41, Оценочная плата SVM41, SVM41, Оценочная плата, Плата |