Битакс \
Ресурсы \
Работа с акселерометром LIS3LV02DL и LIS3LV02DQ...
|
Работа с акселерометром LIS3LV02DL и LIS3LV02DQ
|
скачать в pdf
|
Краткое описание
- Напряжение питания 2.16В — 3.3В
- 1.8В-совместимые выводы
- I²C/SPI цифровой интерфейс
- Выбор представления данных 16/12 бит
- Генерация прерывания по движению
- Настройка порога прерывания
- Встроенное само-тестирование
Микросхемы LIS3LV02DL и LIS3LV02DQ представляют собой трехосевой акселерометр,
который состоит из чувствительного элемента и интерфейсного элемента,
передающего по последовательным интерфейсам I²C/SPI измеренное ускорение.
Специальный процесс производства инерциальных сенсоров и исполнительных
механизмов в кремнии, разработанный компанией ST, используется для реализации
чувствительного элемента, способного детектировать ускорение.
Интерфейсный элемент выполнен по технологии CMOS настроенной на лучшее
соответствие характеристикам чувствительного элемента. При разработке
специальной схемы эта технология позволила получить высокую степень интеграции.
Акселерометры имеют выбираемый пользователем диапазон измерений ±2g
и ±6g и способны измерять ускорение по всем осям с полосой пропускания
640Гц. Полоса пропускания может быть выбрана в соответствии с требованиями их
применения.
Способность проводить само-тестирование позволяет пользователю проверить
работоспособность акселерометра.
Можно задать пороговое значение для ускорения, превышение которого хотя-бы по
одной оси вызовет генерацию прерывания акселерометром.
LIS3LV02DL и LIS3LV02DQ доступны в пластиковом SMD корпусе и специфицируются
на температурном диапазоне от -40ºC до +80ºC.
LIS3LV02DL и LIS3LV02DQ принадлежат к семейству изделий подходящих для решения
множества задач:
- детектирование свободного падения
- активация функций в портативных устройствах движением
- противоугонные системы и инерциальная навигация
- устройства ввода для игр и виртуальной реальности
- мониторинг и компенсация вибрации
- определение угла наклона
Рисунок 1: Блок-схема акселерометров LIS3LV02DL и LIS3LV02DQ.
Таблица 1: Описание выводов акселерометров LIS3LV02DL и LIS3LV02DQ.
№ | Название | Описание |
1 | RDY/INT | Готовность данных/сигнал прерывания |
2 | SDO | SPI Serial Data Out |
3 | SDA | I²C SDA |
SDI | SPI Serial Data In |
SDO | 3-х проводный интерфейс Serial Data In |
4 | VDD_IO | Питание для интерфейсных выводов |
5 | SCL_SPC | Тактовый сигнал для I²C и SPI |
6 | CS | Выбор цифрового интерфейса (1 — I²C; 0 – SPI) |
7 | NC | Внутренне никуда не подключен |
8 | CK | Дополнительный тактовый вход. Если не используется оставить не соединенным или соединить с GND. |
9 | GND | 0 источника питания |
10 | RES | Либо не соединять, либо соединить с VDD_IO |
11 | VDD | Источник питания |
12 | RES | Соединить к VDD |
13 | VDD | Источник питания |
14 | GND | 0 источника питания |
15 | RES | Либо не соединять, либо к GND |
16 | GND | 0 источника питания |
Терминология
Чувствительность
Чувствительность характеризует коэффициент передачи сенсора и может быть легко
определена приложением к нему ускорения в 1g. Сенсор может измерять постоянные
ускорения. Можно запомнить выходное значение сенсора когда интересующая ось
направленна к центру Земли, и выходное значение после поворота оси на 180
градусов (ось направленна в небо). В результате к акселерометру будет приложено
ускорение равное ±1g. Реальную чувствительность сенсора можно получить вычитая
большее значение из меньшего и деля полученную разность пополам. Это значение
почти не меняется от температуры и с течением времени. Допуск чувствительности
задает интервал значений чувствительности для большого количества сенсоров.
Уровень 0
Уровень смещения нуля описывает отклонение выдаваемого сигнала от идеального, в
условиях отсутствия ускорения сенсора. В стабильном состоянии, на горизонтальной
поверхности, сенсор должен измерить 0g по оси X и 0g по оси Y, тогда как ось Z
должна измерить 1g. Выдаваемое значение должно находиться точно в середине
динамического диапазона сенсора. Смещением уровня нуля будет называться
отклонение выдаваемого значения от идеального. Оно в какой-то степени является
результатом «нагрузки», действующей на прецизионный MEMS сенсор. Вследствие
этого уровень нуля может немного измениться после установки акселерометра на
печатную плату или под действием большой механической нагрузки. Смещение немного
меняется в зависимости от температуры. Уровень нуля является стабильным для
сенсора в течении всего его срока службы. Допуск уровня нуля задает интервал
значений смещения для совокупности сенсоров.
Само-тестирование
Само-тестирование позволяет проверить механическую и электрическую части
сенсора, путем перемещения инерционной массы под действием тестовой
электростатической силы. Если бит ST регистра CTRL_REG1 установлен в '0',
функция само-тестирования выключена. Если бит ST регистра CTRL_REG1 установлен в
'1', к сенсору прикладывается стимулирующая сила, тем самым моделируется
определенное ускорение. В результате в выдаваемых акселерометром значениях будет
зафиксировано изменение, которое соотносится с выбранным диапазоном измерений и
зависит от напряжения питания и чувствительности акселерометра. В режиме
само-тестирования, акселерометр выдает значения, которые являются алгебраической
суммой сигналов вызванных ускорением, действующим на сенсор и тестовой
электростатической силы. Акселерометр работает правильно, если выходные значения
изменяются в пределах амплитуды, в спецификации.
Функциональные возможности
Как уже говорилось, LIS3LV02DL и LIS3LV02DQ это высокопроизводительные, мало
потребляющие, 3-х осевые акселерометры с цифровым выходом. Они состоят из
чувствительного элемента и интерфейсной части, передающей во внешний мир
информацию об измеренном ускорении.
Чувствительный элемент
Для создания поверхностного микро-механического акселерометра используется
запатентованный тех. процесс. Технология позволяет выполнять подвешенные
кремниевые структуры, которые соединены с подложкой всего в нескольких точках,
называемых якорями. Эти структуры способны свободно перемещаться в направлении
распознаваемого ускорения. Для того чтобы обеспечить совместимость с
традиционными техниками корпусирования микросхем, специальная крышка,
предотвращающая блокирование подвижных частей после фазы отливки пластикового
корпуса, помещена над чувствительным элементом.
Когда прикладывается ускорение к сенсору, контрольная масса сдвигается со своей
начальной позиции и приводит к разбалансировке емкостного полу-моста. Эта
разбалансировка измеряется интегрированием заряда, вызванного импульсом
напряжения поданным на чувствительный конденсатор.
В состоянии покоя номинальное значение емкости конденсаторов около нескольких
пФ, под действием ускорения максимальное изменение емкости доходит до 100фФ.
Интерфейсный блок
Измерительная цепь состоит из мало-шумящего конденсаторного усилителя, который
переводит в напряжение емкостную разбалансировку MEMS-сенсора, а также трех
ΣΔ аналого-цифровых преобразователей, по одному на каждую ось,
которые переводят вырабатываемый сигнал в цифровой битовый поток.
ΣΔ — преобразователи соединены с восстанавливающим фильтром,
который убирает высокочастотные шумовые компоненты, вызванные квантованием и
выдает цифровые слова высокой разрядности, но на низкой частоте.
Усилитель и ΣΔ преобразователи работают на частотах 61.5 и 20.5
кГц соответственно.
Данные на выходе восстанавливающего фильтра, выдаются с частотой в интервале от
40 до 2560Гц, которая зависит от выбранной пользователем степени децимации.
Данные об ускорении могут быть получены через I²C/SPI интерфейс, а значит
микросхема легко может быть сопряжена с микроконтроллером.
LIS3LV02DL и LIS3LV02DQ имеют сигнал готовности данных (RDY), который
сигнализирует о готовности новых измерений. Таким образом, в цифровых системах,
где задействован этот акселерометр, упрощается синхронизация данных.
Акселерометры могут быть настроены на генерацию сигнала прерывания от модуля
инерциальной активации, от детектора направления и свободного падения.
Необходимые настройки можно выполнить для каждой чувствительной оси
акселерометра в отдельности.
Заводская калибровка
Акселерометры LIS3LV02DL и LIS3LV02DQ имеют заводскую калибровку чувствительности
и смещения уровня нуля. Корректирующие значения записаны во внутренней
энергонезависимой памяти. Как только акселерометр включается, эти значения
загружаются в регистры, к которым можно обращаться во время работы. Таким образом,
можно работать с акселерометром без проведения этапа самостоятельной калибровки.
Советы по применению
Питание для ядра акселерометра подается по линии Vdd, а для
пинов ввода-вывода по линии Vdd_IO. Как можно ближе к выводу Vdd должны быть
установлены развязывающие по питанию конденсаторы (100нФ керамические, 10мкФ
алюминиевые).
Для того чтобы микросхема работала правильно, на нее должны быть поданы
одновременно все необходимые источники напряжения и земли. Допускается
отключение Vdd с сохранением Vdd_IO, в этом случае модуль обмена данными
сохранит своё рабочее состояние, а цепь измерения ускорений будет отключена.
Для доступа к настройкам акселерометра и чтения измеренного ускорения
используются последовательные интерфейсы I²C/SPI. Для работы с интерфейсом
I²C, сигнал CS должен быть подтянут в высокое состояние, а сигнал SDO
должен быть оставлен плавающим.
Посредством интерфейса I²C/SPI могут быть запрограммированы назначение,
пороги срабатывания и временные диаграммы для выхода RDY/INT.
Цифровые интерфейсы
Доступ к регистрам, встроенным в LIS3LV02DL и LIS3LV02DQ, может быть выполнен как по
интерфейсу I²C, так и по интерфейсу SPI. Последний может быть настроен на
работу в 3-х или 4-х проводном режиме.
Оба интерфейса отображены на одни и те-же выводы. Для выбора интерфейса
I²C, вывод CS должен быть подтянут в высокое состояние (подсоединен к
Vdd_IO).
Распределение выводов последовательных интерфейсов и их назначение указаны в
Таблице 1.
Интерфейс I²C
LIS3LV02DL и LIS3LV02DQ на шине I²C реализуют slave-устройство. I²C
применяется для записи и чтения содержимого регистров.
Далее в тексте используется следующая, относящаяся к шине I²C, терминология.
Термин | Описание |
Передатчик | Устройство, которое посылает данные в шину. |
Приемник | Устройство, которое принимает данные с шины. |
master | Устройство, которое инициирует и завершает передачу, генерирует тактовые сигналы. |
slave | Устройство, к которому обращается master. |
В интерфейсе I²C используются два сигнала: SCL – линия тактирования и
SDA - линия данных. Последняя является двунаправленной и используется как для
передачи, так и для приема данных. Обе линии через внутренний подтягивающий
резистор соединены с Vdd_IO. Когда интерфейс свободен обе линии находятся в
высоком состоянии.
Интерфейс I²C совместим как с высокоскоростным режимом (400 кГц), так и с
обычным.
Управление через I²C
Обмен по шине начинается с подачи сигнала START (ST). Сигнал START определен как
переход линии SDA из высокого состояния в низкое, в то время как сигнал SCL
удерживается в высоком состоянии. После того как master передаст сигнал START
шина считается занятой. Следующий байт данных, передающийся после сигнала START,
содержит 7 бит данных адреса slave-устройства, а 8-ой бит информирует будет ли
master получать данные от slave или наоборот записывать их в него. Каждое
устройство в системе сравнивает первые семь битов после сигнала START со своим
адресом. Если они совпадают, устройство считает себя адресатом получаемой
информации. Акселерометры LIS3LV02Dx имеют адрес(SAD) 00111010b.
Передача данных обязательно должна проходить с подтверждением. Передатчик должен
освободить линию SDA на время передачи сигнала подтверждения. Приемник должен
удерживать линию SDA в низком состоянии на протяжении всего высокого состояния
тактового импульса. Приемник, к которому обратились, обязан после приема каждого
байта данных генерировать сигнал подтверждения.
I²C встроенный в LIS3LV02Dx работает как slave-устройство, которое должно
строго придерживаться следующего протокола. После того, как slave-устройство
вернет подтверждение(SAK) на отправленный адрес, посылается 8-битный
суб-адрес(SUB). В нем 7 младших бит представляют собой адрес регистра, а 8-ой
бит разрешает автоинкремент адреса. Если 8-ой бит поля SUB установлен в '1',
чтение/запись блока данных будет проведено по возрастающим адресам. Если же этот
бит установлен в '0', чтение/запись блока данных пройдут по одному и тому же
адресу.
Адрес slave-устройства содержит бит чтения/записи. Если бит установлен в '1'
(чтение), то после отправки суб-адресного байта должен быть выдан повторный
сигнал START(SR); если бит установлен в '0'(запись), master должен передавать
данные на slave без смены направления передачи.
Таблица 2: Master пишет один байт в slave
Master | ST | SAD+W | |
SUB | | DATA | | SP |
Slave | | | SAK |
| SAK | | SAK | |
Таблица 3: Master пишет несколько байт в slave
Master | ST | SAD+W | |
SUB | | DATA | |
DATA | | SP |
Slave | | | SAK |
| SAK | | SAK |
| SAK | |
Таблица 4: Master принимает один байт от slave
Master | ST | SAD+W | |
SUB | | SR | SAD+R |
| | NMAK | SP |
Slave | | | SAK |
| SAK | | |
SAK | DATA | | |
Таблица 5: Master принимает несколько байт от slave
Master | ST | SAD+W | |
SUB | | SR | SAD+R |
| | MAK | |
MAK | | NMAK | SP |
Slave | | | SAK |
| SAK | | |
SAK | DATA | | DATA |
| DATA | | |
Данные(DATA) передаются в байтовом формате. Каждая передача DATA состоит из 8
бит. Количество байт передающихся за сеанс передачи не ограниченно. DATA
передаются старшим битом вперед. Если приемник выполняет какую-либо операцию и
не может принять следующий байт данных, он может удержать тактовую линию SCL
в низком состоянии, тем самым принуждая передатчик перейти в состояние ожидания.
Передача данных продолжится только в том случае, если приемник готов к
следующему байту и освободил линию данных. Если slave-приемник не подтвердил
свой адрес (например, он не может принимать данные потому, что занят выполнением
критической функции), линия данных должна быть оставлена им в высоком состоянии.
Master в свою очередь может прервать обмен данными. Сигнала STOP(SP) посылается
переходом линии SDA из низкого состояния в высокое, в то время как на линии SCL
установлено высокое состояние. Каждый обмен данными должен завершаться
генерацией сигнала STOP.
Для чтения нескольких байт, необходимо установить в единицу старший бит
суб-адресного поля. Другими словами SUB(7) должен быть в '1', в то время как
SUB(6-0) представляют адрес первого читаемого регистра.
В приведенных выше примерах обмена, MAK означает сигнал подтверждения от master,
а NMAK — отсутствие подтверждения.
Интерфейс SPI
LIS3LV02DL и LIS3LV02DQ являются slave-устройствам на шине SPI. SPI позволяет
писать и читать регистры акселерометра.
Для обмена данными этим интерфейсом используются 4 провода: CS, SPC, SDI и SDO.
CS – разрешение последовательного порта, управляется masterом. Сигнал
переходит в низкое состояние при старте обмена и возвращается в высокое при
завершении.
SPC — тактовый сигнал последовательного порта, управляется masterом.
Устанавливается в высокое состояние если сигнал CS в высоком(нет обмена).
SDI и SDO — соответственно вход и выход данных последовательного порта.
Эти линии управляются по спадающему фронту сигнала SPC и читаются по
нарастающему фронту сигнала SPC.
Команды чтения и записи завершаются за 16 тактовых импульсов, или кратно 8 в
случае чтения или записи блока данных. Длительность бита определяется временем
между двумя спадающими фронтами сигнала SPC. Первый бит(бит 0) начинается с
первым спадающим фронтом SPC, сразу после спадающего фронта CS, в то время как
последний бит (бит 15, бит 23, …) начинается с последним спадающим
фронтом SPC, непосредственно перед нарастающим фронтом CS.
Бит 0. RW-бит. Когда '0' данные DI(7:0) пишутся в акселерометр. Когда '1',
данные DO(7:0) читаются из акселерометра. Во втором случае микросхема будет
управлять линией SDO при старте бита 8.
Бит 1. MS-бит. Если '0', в случае чтения/записи блока данных адрес меняться не
будет. Если '1', в случае чтения/записи блока данных, адрес будет автоматически
увеличиваться.
Биты 2-7. адрес AD(5:0). Это поле адреса индексируемого регистра.
Биты 8-15. данные DI(7:0)(режим записи). Это данные, которые будут записаны в
акселерометр (старший бит первым).
Биты 8-15. данные DO(7:0)(режим чтения). Это данные, которые будут прочтены из
акселерометра (старший бит первым).
В случае работы с блоком данных должны быть добавлены последующие тактовые
импульсы. Если MS-бит установлен в '0', адрес чтения/записи останется
неизменным. Если MS-бит установлен в '1', адрес чтения/записи увеличивается.
Функциональное назначение и работа выводов SDI и SDO остаются неизменными.
SPI в 3-х проводном режиме
3-х проводный режим активируется установкой в '1' бита SIM в регистре CTRL_REG2.
В 3-х проводном режиме также возможна операция чтения/записи блока данных.
Карта регистров LIS3LV02DL и LIS3LV02DQ
В таблице ниже представлен список 8-битных регистров акселерометров LIS3LV02DL и LIS3LV02DQ и связанных
с ними адресов.
Название регистра
|
Тип
|
Адрес регистра
|
Значение по умолчанию
|
Комментарий
|
Бинарный |
Шестнад. |
| rw | 0000000-0001110 | 00-0E | | Зарезервированы |
WHO_AM_I | r | 0001111 | 0F | 00111010 | |
| rw | 0010000-0010101 | 10-15 | | Зарезервированы |
OFFSET_X | rw | 0010110 | 16 | Калибровка | Грузится при старте |
OFFSET_Y | rw | 0010111 | 17 | Калибровка | Грузится при старте |
OFFSET_Z | rw | 0011000 | 18 | Калибровка | Грузится при старте |
GAIN_X | rw | 0011001 | 19 | Калибровка | Грузится при старте |
GAIN_Y | rw | 0011010 | 1A | Калибровка | Грузится при старте |
GAIN_Z | rw | 0011011 | 1B | Калибровка | Грузится при старте |
| | 0011100-0011111 | 1C-1F | | Зарезервированы |
CTRL_REG1 | rw | 0100000 | 20 | 00000111 | |
CTRL_REG2 | rw | 0100001 | 21 | 00000000 | |
CTRL_REG3 | rw | 0100010 | 22 | 00001000 | |
HP_FILTER_RESET | r | 0100011 | 23 | Случайное | Фиктивный регистр |
| | 0100100-0100110 | 24-26 | | Не используются |
STATUS_REG | rw | 0100111 | 27 | 00000000 | |
OUTX_L | r | 0101000 | 28 | Выход | |
OUTX_H | r | 0101001 | 29 | Выход | |
OUTY_L | r | 0101010 | 2A | Выход | |
OUTY_H | r | 0101011 | 2B | Выход | |
OUTZ_L | r | 0101100 | 2C | Выход | |
OUTZ_H | r | 0101101 | 2D | Выход | |
| r | 0101110 | 2E | | Зарезервирован |
| | 0101111 | 2F | | Не используется |
FF_WU_CFG | rw | 0110000 | 30 | 00000000 | |
FF_WU_SRC | rw | 0110001 | 31 | 00000000 | |
FF_WU_ACK | r | 0110010 | 32 | Случайное | Фиктивный регистр |
| | 0110011 | 33 | | Не используется |
FF_WU_THS_L | rw | 0110100 | 34 | 00000000 | |
FF_WU_THS_H | rw | 0110101 | 35 | 00000000 | |
FF_WU_DURATION | rw | 0110110 | 36 | 00000000 | |
| | 0110111 | 37 | | Не используется |
DD_CFG | rw | 0111000 | 38 | 00000000 | |
DD_SRC | rw | 0111001 | 39 | 00000000 | |
DD_ACK | r | 0111010 | 3A | Случайное | Фиктивный регистр |
| | 0111011 | 3B | | Не используется |
DD_THSI_L | rw | 0111100 | 3C | 00000000 | |
DD_THSI_H | rw | 0111101 | 3D | 00000000 | |
DD_THSE_L | rw | 0111110 | 3E | 00000000 | |
DD_THSE_H | rw | 0111111 | 3F | 00000000 | |
| | 1000000-1111111 | 40-7F | | Зарезервированы |
Регистры помеченные как «зарезервирован» не должны меняться. Запись
в такие регистры может привести к безвозвратному повреждению акселерометра.
Регистры, содержимое которых загружается при старте акселерометра, не должны
меняться. Они содержат заводскую калибровку акселерометра. Содержимое этих
регистров автоматически восстанавливается при подаче питания.
Описание регистров
Акселерометр содержит в себе набор регистров, который используется для
управления работой микросхемы и извлечения информации об ускорении. В регистрах
от OFFSET_X до GAIN_Z содержатся значения заводской калибровки, в нормальном
режиме работы акселерометра эти значения менять не требуется.
WHO_AM_I (0Fh)
W7, W0 | Физический адрес акселерометра, равный 3Ah. |
При обращении к этому регистру возвращается физический адрес акселерометра. Для
LIS3LV02Dx физический адрес равен 3Ah и назначается на заводе.
OFFSET_X (16h)
OX7 | OX6 | OX5 | OX4 |
OX3 | OX2 | OX1 | OX0 |
OX7,OX0 |
Корректирующее смещение для оси X. |
OFFSET_Y (17h)
OY7 | OY6 | OY5 | OY4 |
OY3 | OY2 | OY1 | OY0 |
OY7,OY0
|
Корректирующее смещение для оси Y.
|
OFFSET_Z (18h)
OZ7 | OZ6 | OZ5 | OZ4 |
OZ3 | OZ2 | OZ1 | OZ0 |
OZ7,OZ0
|
Корректирующее смещение для оси Z.
|
GAIN_X (19h)
GX7 | GX6 | GX5 | GX4 |
GX3 | GX2 | GX1 | GX0 |
GX7,GX0
|
Корректирующее значение чувствительности для оси X.
|
GAIN_Y (1Ah)
GY7 | GY6 | GY5 | GY4 |
GY3 | GY2 | GY1 | GY0 |
GY7,GY0
|
Корректирующее значение чувствительности для оси Y.
|
GAIN_Z (1Bh)
GZ7 | GZ6 | GZ5 | GZ4 |
GZ3 | GZ2 | GZ1 | GZ0 |
GZ7,GZ0
|
Корректирующее значение чувствительности для оси Z.
|
CTRL_REG1 (20h)
PD1 | PD0 | DF1 | DF0 |
ST | Zen | Yen | Xen |
PD1,PD0
|
Управление питанием (00 — питание выключено, 01, 10, 11 —
акселерометр включен).
|
DF1,DF0
|
Управление децимацией (00 — децимация на 512, 01 — децимация
на 128, 10 — децимация на 32, 11 — децимация на 8).
|
ST
|
Включение само-тестирования (0 — нормальный режим работы, 1 —
включено само-тестирование).
|
Zen
|
Включение оси Z (0 — ось выключена, 1 — ось включена).
|
Yen
|
Включение оси Y (0 — ось выключена, 1 — ось включена).
|
Xen
|
Включение оси X (0 — ось выключена, 1 — ось включена).
|
PD0, PD1 позволяют вывести акселерометр из режима пониженного потребления.
Акселерометр находится в этом режиме если PD1, PD0 = '00' (значение по умолчанию
после загрузки). Акселерометр находится в нормальном режиме если хотя бы один
бит из PD1, PD0 установлен в единицу.
DF1, DF0 позволяют настроить уровень децимации внутреннего фильтра, тем
самым выбрать частоту с которой будут производиться выборки значений ускорения.
Значение по умолчанию '00' соответствует частоте данных в 40Гц. Изменением
содержимого DF1, DF0 на '01', '10' и '11', частота выдачи данных будет
устанавливаться соответственно в 160Гц, 640Гц и 2560Гц.
ST бит используется для включения функции само-тестирования. Если бит
установлен в '1', произойдет изменение в выдаваемых данных, таким образом можно
проверить работу всей измерительной цепочки.
Zen – бит включает измерительный канал по оси Z, если установлен в
'1'. Значение по умолчанию '1'.
Yen – бит включает измерительный канал по оси Y, если установлен в
'1'. Значение по умолчанию '1'.
Xen – бит включает измерительный канал по оси X, если установлен в
'1'. Значение по умолчанию '1'.
CTRL_REG2 (21h)
FS | BDU | BLE | BOOT |
IEN | DRDY | SIM | DAS |
FS
|
Выбор полного диапазона измерений. (0 - ±2g, 1 - ±6g).
|
BDU
|
Обновление блоков данных. (0 — непрерывное обновление, 1 —
выходные регистры не обновляются во время чтения MSB или LSB)
|
BLE
|
Выбор режима big/little-endian. (0 – little-endian, 1 - big-endian)
|
BOOT |
Перезагрузка содержимого памяти. |
IEN |
Разрешение прерывания. (0 — на пин RDY выводится готовность данных,
1 — на пин RDY выводится сигнал прерывания). |
DRDY |
Разрешение генерации сигнала готовности данных (RDY). |
SIM |
Выбор режима интерфейса SPI(0 — 4-х проводный, 1 — 3-х
проводный интерфейс) |
DAS |
Выбор представления данных (0 — 12 бит, правое выравнивание;
1 — 16 бит левое выравнивание). |
FS бит настраивает ширину диапазона измерений. По умолчанию значение
ширины диапазона измерений равно ±2g. Для того чтобы получить ±6g,
необходимо установить бит FS в '1'.
BDU бит запрещает обновление выходных значений между чтением регистров их
младшей и старшей части. По умолчанию (BDU = '0'), младшая и старшая часть
обновляются постоянно. Рекомендуется установить бит BDU в '1', если есть
вероятность, что скорость выдачи данных будет больше скорости их считывания. В
результате, после прочтения регистра младшей(старшей) части, его содержимое не
обновится до чтения старшей(младшей) части. Настройка помогает избежать чтения
MSB и LSB ускорения, относящихся к разным отсчетам.
BLE бит выбирает формат представления величин (big-endian или
little-endian) в выходном регистре. В режиме big-endian MSB часть ускорения
располагается по адресам 28h(ось X), 2Ah(ось Y) и 2Ch(ось Z), а LSB часть по
адресам 29h(ось X), 2Bh(ось Y) и 2Dh(ось Z). В режиме little-endian
порядок инвертируется (для дополнительной информации смотрите описание выходных
регистров).
BOOT бит обновляет внутренние регистры содержимым, расположенным в блоке
flash-памяти. Чтобы получить хорошие характеристики акселерометра, во время
подачи на него питания, содержимое блока flash-памяти, связанное с
корректирующими функциями, передается во внутренние регистры. Если по какой-либо
причине значение корректирующих регистров было изменено, для их восстановления
достаточно использовать этот бит. Когда бит BOOT устанавливается в '1',
содержимое внутренней flash копируется в соответствующие внутренние регистры и
оно же используется для калибровки акселерометра. Эти значения подобраны на
заводе, для каждого акселерометра они различны. По завершению процесса загрузки,
бит BOOT снова устанавливается в '0'.
IEN бит подает на пин RDY либо сигнал готовности данных, либо сигнал
прерывания. По умолчанию выбран сигнал готовности данных. Тем не менее, для
генерации готовности данных, необходимо дополнительно настроить бит DRDY.
DRDY бит включает пин RDY/INT. Если DRDY установлен в '0', на пине RDY
будет присутствовать значение '0'. Чтобы получить сигнал готовности данных, бит
DRDY устанавливают в '1'. Сигнал готовности установится в '1' если будут
доступны для чтения данные ото всех включенных осей. Например, если ось Z
отключена, готовность данных установится в '1', когда появятся новые значения
одновременно для оси X и Y. Готовность данных установится в '0' когда будут
прочтены все выходные регистры всех включенных осей. Данные не будут потеряны,
если их прочесть до того как появится новый сигнал готовности. В этом случае
частота сигнала будет совпадать с частотой выдачи данных.
SIM бит выбирает режим SPI. В 4-х проводном режиме данные, из
акселерометра посылаются на пин SDO. В 3-х проводном режиме данные направляются
на пин SDA/SDI.
DAS бит позволяет сделать выбор между 12-битным выровненным справа и
16-битным выровненным слева представлением выдачи данных. Первый вариант
является вариантом по умолчанию, в нем самый старший бит заменен знаковым битом.
CTRL_REG3 (22h)
ECK | HPDD | HPFF | FDS |
res | res | CFS1 | CFS0 |
ECK
|
Внешний тактовый генератор. Значение по умолчанию 0. (0 — тактовый
сигнал от внутреннего генератора, 1 — тактовый сигнал берется с пина
CK)
|
HPDD
|
Включение высокочастотного фильтра при определении направления ускорения.
Значение по умолчанию: 0. (0 — фильтр игнорируется, 1 — фильтр
включен).
|
HPFF
|
Высокочастотный фильтр включается на определение свободного падения и
пробуждения. Значение по умолчанию: 0. (0 — фильтр игнорируется, 1
— фильтр включен).
|
FDS
|
Выбор фильтрованных данных. Значение по умолчанию: 0. (0 —
внутренний фильтр игнорируется, 1 — данные забираются из внутреннего
фильтра).
|
CFS1,CFS0 |
Выбор частоты среза высокочастотного фильтра. Значение по умолчанию: 00.
(00:Hpc = 512; 01:Hpc = 1024; 01:Hpc = 2048; 11:Hpc = 4096)
|
ECK бит выбирает для тактирования либо внутренний генератор, либо сигнал
с вывода CK. Во втором случае внутренний генератор отключается и тем самым
снижается потребление акселерометра. Внешний тактовый сигнал должен быть в
диапазоне 1.045МГц ±10% и иметь скважность 50%.

Рисунок 2: Поток данных в акселерометрах LIS3LV02DL и LIS3LV02DQ.
HPDD бит подает фильтрованные или нефильтрованные (Рисунок 2) данные на
вход детектора направления. Если бит в '0', детектор направления выдаст
прерывания по данным, которые приходят непосредственно от цифрового блока или
блока температурной компенсации. Если HPDD установлен в '1', прерывания
выдаются по данным, отфильтрованным высокочастотным фильтром.
HPFF бит работает подобно HPDD, но для детектора свободного падения и
блока инерциальной активации.
FDS бит включает(FDS = 1) или исключает(FDS = 0) высокочастотный фильтр
в/из сигнальной цепи сенсора. В случае если бит FDS установлен в '0' (значение
по умолчанию), данные, приходящие из блока коррекции смещения и
чувствительности, поступают прямо на чтение регистра.
CFS1, CFS0 биты определяют коэффициент Hpc, используемый для расчета
частоты среза высокочастотного фильтра(по уровню -3dB):
Hpc принимает значения 512, 1024, 2048, 4096 соответственно при CFS<1:0> = 00,
01, 10, 11. ODRx – частота выдачи данных, выбираемая битами DF1, DF0 регистра
CTRL_REG1.
На рисунке ниже построены передаточные характеристики высокочастотного фильтра,
полученные для разных частот выдачи данных и коэффициентов Hpc.

Рисунок 3: Передаточная характеристика высокочастотных фильтров в акселерометрах LIS3LV02DL и LIS3LV02DQ.
HP_FILTER_RESET (23h)
Фиктивный регистр. Чтение по этому адресу, мгновенно обнуляет содержимое
внутреннего высокочастотного фильтра. Прочтенные данные не имеют какого-либо
смысла.
STATUS_REG (27h)
ZYXOR | ZOR | YOR | XOR |
ZYXDA | ZDA | YDA | XDA |
ZYXOR
|
Перезапись значений для осей X, Y и Z. (0 — нет перезаписи данных;
1 — новый набор данных перезаписал старые)
|
ZOR
|
Перезапись значений для оси Z.
|
YOR
|
Перезапись значений для оси Y.
|
XOR
|
Перезапись значений для оси X.
|
ZYXDA
|
Доступны для чтения новые данные по осям X, Y, Z.(0 — новый набор
данных еще не готов; 1 — доступен новый набор данных)
|
ZDA
|
Доступны для чтения новые данные по оси Z.
|
YDA
|
Доступны для чтения новые данные по оси Y.
|
XDA
|
Доступны для чтения новые данные по оси X.
|
Содержимое этого регистра обновляется каждый ODR цикл, независимо от значения
бита BDU в регистре CTRL_REG2.
ZYXOR устанавливается в единицу всякий раз, когда новый набор данных
будет готов до того как прочтен предыдущий. В случае если бит BDU регистра
CTRL_REG1 установлен в '0', установка бита происходит при перезаписи хотя бы
одного выходного регистра(OUTx_L, OUTx_H). Бит ZYXOR сбрасывается если будут
прочтены старшие части выходных регистров(OUTX_H, OUTY_H, OUTZ_H) всех
включенных измерительных каналов.
ZOR, YOR, XOR устанавливаются в '1' всякий раз, когда новый набор данных
с ускорениями для соответствующей оси будет готов до того как прочтен
предыдущий. Если при этом бит BDU в регистре CTRL_REG2 установлен в '0',
предыдущее значение переписывается. Если BDU установлен в '1' перезаписи не
будет до тех пор, пока не будут прочтены старшая и младшая часть
соответствующего выходного регистра. Биты сбрасываются когда будет прочтен
соответствующий старший регистр.
ZYXDA бит информирует о том, что готов новый набор данных для всех
включенных чувствительных осей. Бит сбрасывается если будут прочтены старшие
части всех включенных измерительных осей.
ZDA, YDA, XDA устанавливаются в '1' всякий раз, когда готов новый набор
данных для соответствующей включенной оси. Биты сбрасываются после чтения
соответствующей старшей части (OUTZ_H, OUTY_H, OUTX_H) данных. Для того чтобы
бит сработал, чувствительная ось должна быть включена(установлены в '1' биты
включения в регистре CTRL_REG1).
OUTX_L (28h), OUTY_L(2Ah), OUTZ_L(2Ch)
D7,D0
|
Младшая часть данных соответственно для оси X, Y, Z.
|
В режиме big-endian(бит BLE в регистре CTRL_REG2 установлен в '1') содержимое
этого регистра является старшей частью значения ускорения. Значение зависит от
бита DAS в регистре CTRL_REG2 как описано в следующей секции.
OUTX_H (29h), OUTY_H(2Bh), OUTZ_H(2Dh)
D15 | D14 | D13 | D12 |
D11 | D10 | D9 | D8 |
D15,D8
|
Старшая часть данных соответственно для оси X, Y, Z.
|
При чтении регистра в режиме «12 бит, правое выравнивание», старшие
значащие биты (15:12) заменяются битом 11(т.е D15 - D12 = D11, D11, D11, D11).
В режиме big-endian (бит BLE регистра CTRL_REG2 установлен в '1'), содержимое
этого регистра представляет собой младшую часть значения ускорения.
FF_WU_CFG (30h)
AOI | LIR | ZHIE | ZLIE |
YHIE | YLIE | XHIE | XLIE |
AOI |
И/ИЛИ комбинация событий прерывания. Значение по умолчанию: 0.
(0 — комбинация сигналов прерываний по ИЛИ; 1- комбинация
сигналов прерываний по И).
|
LIR |
Тригер запроса прерывания. Значение по умолчанию: 0. (0 — не
зафиксирован запрос прерывания; 1 — зафиксирован запрос
прерывания).
|
ZHIE |
Разрешить прерывание по событию «выше» для оси Z.
Значение по умолчанию: 0. (0 — запрет прерывания; 1 —
разрешить прерывание если измеренное значение ускорения больше
установленного порога).
|
ZLIE |
Разрешить прерывание по событию «ниже» для оси Z. Значение
по умолчанию: 0. (0 — запрет прерывания; 1 — разрешить
прерывание если измеренное значение ускорения меньше установленного
порога).
|
YHIE |
Разрешить прерывание по событию «выше» для оси Y. Значение
по умолчанию: 0. (0 — запрет прерывания; 1 — разрешить
прерывание если измеренное значение ускорения больше установленного
порога).
|
YLIE |
Разрешить прерывание по событию «ниже» для оси Y. Значение
по умолчанию: 0. (0 — запрет прерывания; 1 — разрешить
прерывание если измеренное значение ускорения меньше установленного
порога).
|
XHIE |
Разрешить прерывание по событию «выше» для оси X. Значение
по умолчанию: 0. (0 — запрет прерывания; 1 — разрешить
прерывание если измеренное значение ускорения больше установленного
порога).
|
XLIE |
Разрешить прерывание по событию «ниже» для оси X. Значение
по умолчанию: 0. (0 — запрет прерывания; 1 — разрешить
прерывание если измеренное значение ускорения меньше установленного
порога).
|
Регистр конфигурации блока определения свободного падения и инерциальной
активации.
AOI бит позволяет выбрать детектор свободного падения(AND комбинация
событий) или инерциальную активацию(OR комбинация событий).
LIR бит фиксирует генерацию акселерометром настроенного прерывания. Для
того чтобы сбросить запрос прерывания и соответствующий ему регистр источника
(FF_WU_SRC), необходимо провести чтение фиктивного регистра FF_WU_ACK.
ZHIE, YHIE, XHIE разрешают генерацию прерывания в случае если измеренное
ускорение по оси Z, Y, X выше порога, установленного регистром FF_WU_THS.
ZLIE, YLIE, XLIE разрешают генерацию прерывания в случае если измеренное
ускорение по оси Z, Y, X ниже порога, установленного регистром FF_WU_THS.
Пороговое значение, которое используется акселерометром для определения
свободного падения и инерциальной активации, определяется конкатенацией
регистров FF_WU_THS_H и FF_WU_THS_L. Указывается абсолютное значение порога в
диапазоне 16 бит. Событие «выше» возникает в случае, если абсолютное
значение ускорения выше чем порог, указанный в регистрах FF_WU_THS_H и
FF_WU_THS_L. Аналогично, событие «ниже» возникнет в случае, если
абсолютное значение ускорения ниже указанного в регистрах FF_WU_THS_H и
FF_WU_THS_L.
FF_WU_SRC (31h)
IA
|
Активно прерывание. Значение по умолчанию: 0. (0 — нет
сгенерированного прерывания; 1 — сгенерированно одно или несколько
прерывний)
|
ZH |
Сигнал «выше» для оси Z. Значение по умолчанию: 0.
(0 — нет прерывания; 1 — есть прерывание)
|
ZL |
Сигнал «ниже» для оси Z. Значение по умолчанию: 0. (0 —
нет прерывания; 1 — есть прерывание)
|
YH
|
Сигнал «выше» для оси Y. Значение по умолчанию: 0. (0 —
нет прерывания; 1 — есть прерывание)
|
YL
|
Сигнал «ниже» для оси Y. Значение по умолчанию: 0. (0 —
нет прерывания; 1 — есть прерывание)
|
XH |
Сигнал «выше» для оси X. Значение по умолчанию: 0. (0 —
нет прерывания; 1 — есть прерывание)
|
XL |
Сигнал «ниже» для оси X. Значение по умолчанию: 0.
(0 — нет прерывания; 1 — есть прерывание)
|
В регистре отслеживаются события, которые вызывают(или уже вызвали, в случае если
бит LIR в регистре FF_WU_SRC установлен в '1') генерацию сигнала прерывания. В
частности, бит IA равен '1', если истинна комбинация событий указанных в регистре
FF_WU_CFG. Бит используется для генерации сигнала прерывания вызванного
свободным падением или инерциальной активацией.
FF_WU_ACK (32h)
Фиктивный регистр. Если бит LIR в регистре FF_WU_CFG установлен в '1', чтение
этого регистра обновляет значение регистра FF_WU_SRC. Прочтенное значение не
имеет какого-либо смысла.
FF_WU_THS_L (34h)
THS7 | THS6 | THS5 | THS4 |
THS3 | THS2 | THS1 | THS0 |
THS7,THS0 |
Пороговое значение для активации по
ускорению/свободному падению. Младшая часть. |
FF_WU_THS_H (35h)
THS15 | THS14 | THS13 | THS12 |
THS11 | THS10 | THS9 | THS8 |
THS15,THS8 |
Пороговое значение для активации по ускорению/свободному падению.
Старшая часть.
|
Регистры FF_WU_THS_H и FF_WU_THS_L задают пороговое значение, которое
используется системой для детектирования свободного падения или активации по
ускорению. Пороговое значение представляется в виде 16-битного значения без
знака. Значение 0x7FFF соответствует ускорению на полном диапазоне измерений
(либо 2g, либо 6g в зависимости от значения бита FS в регистре CTRL_REG2).
FF_WU_DURATION (36h)
FWD7 | FWD6 | FWD5 | FWD4 |
FWD3 | FWD2 | FWD1 | FWD0 |
FWD7,FWD0 |
Минимальная длительность события свободного падения/активации.
|
Регистр устанавливает минимальную длительность детектируемого события свободного
падения/инерциальной активации.
Число, содержащееся в регистре, представляет собой количество отсчетов, которые
будут произведены на частоте, установленной битами DF1 и DF0 в регистре
CTRL_REG1.
События, имеющие длительность меньше, чем значение указанное в регистре
FF_WU_DURATION, отфильтровываются акселерометром. Значение равное 00h означает,
что прерывания будут генерироваться сразу, в соответствии с настройками в
регистре FF_WU_CFG, без проведения дополнительных проверок.
DD_CFG (38h)
IEND | LIR | ZHIE | ZLIE |
YHIE | YLIE | XHIE | XLIE |
IEND
|
Разрешение прерывания по смене направления. Значение по умолчанию:0.
(0 — запрещено прерывание; 1 — сигнал прерывания разрешен).
|
LIR |
Триггер запроса прерывания в регистре DD_SRC сбрасывается совместно
с регистром DD_SRC по чтению DD_ACK. Значение по умолчанию: 0.
(0 — не зафиксирован запрос прерывания; 1 — зафиксирован
запрос прерывания).
|
ZHIE |
Разрешить прерывание по сигналу «выше»
для оси Z. Значение по умолчанию: 0. (0 — запрет прерывания;
1 — разрешить прерывание если измеренное значение больше
установленного порога).
|
ZLIE |
Разрешить прерывание по сигналу «ниже»
для оси Z. Значение по умолчанию: 0. (0 — запрет прерывания;
1 — разрешить прерывание если измеренное значение меньше
установленного порога).
|
YHIE |
Разрешить прерывание по сигналу «выше»
для оси Y. Значение по умолчанию: 0. (0 — запрет прерывания;
1 — разрешить прерывание если измеренное значение больше
установленного порога).
|
YLIE |
Разрешить прерывание по сигналу «ниже»
для оси Y. Значение по умолчанию: 0. (0 — запрет прерывания;
1 — разрешить прерывание если измеренное значение меньше
установленного порога).
|
XHIE |
Разрешить прерывание по сигналу «выше»
для оси X. Значение по умолчанию: 0. (0 — запрет прерывания;
1 — разрешить прерывание если измеренное значение больше
установленного порога).
|
XLIE |
Разрешить прерывание по сигналу «ниже»
для оси X. Значение по умолчанию: 0. (0 — запрет прерывания;
1 — разрешить прерывание если измеренное значение меньше
установленного порога).
|
Конфигурационный регистр детектора направления.
IEND разрешает генерацию прерывания в случае если происходит изменение в
регистре DD_SRC, или, другими словами, при изменении наклона.
LIR определяет должен ли текущий статус направления/наклона фиксироваться
в регистре DD_SRC. Для того чтобы очистить содержимое регистра DD_SRC и
связанный с ним запрос прерывания необходимо выполнить чтение фиктивного
регистра DD_ACK.
ZHIE, YHIE, XHIE включают распознавание акселерометром событий при
которых значение по оси Z, Y, X, в положительном направлении оси ускорения, выше
порогового значения.
ZLIE, YLIE, XLIE включают распознавание акселерометром событий при
которых значение по оси Z, Y, X, в отрицательном направлении оси ускорения, выше
порогового значения.
Для того чтобы исключить ложные срабатывания, вызванные случайными вибрациями
или толчками, введены внутреннее и внешнее пороговое значение. Оба пороговых
значения задаются в виде 16-битного значения без знака и получаются
соответственно конкатенацией регистров DD_THSI_H c DD_THSI_L и DD_THSE_H c
DD_THSE_L.
Ускорение по оси X (Y, Z) считается «выше»,
если его значение больше внешнего порогового значения, заданного регистрами
DD_THSE_H и DD_THSE_L(то есть абсолютное значение ускорения превышает порог и
идет в сторону положительного ускорения).
Ускорение по оси X (Y, Z) считается «ниже»,
если его значение меньше внешнего порогового значения, заданного регистрами
DD_THSE_H и DD_THSE_L(то есть абсолютное значение ускорения превышает порог, но
идет в сторону отрицательного ускорения).
Оба события в регистре DD_SRC сбрасываются, если абсолютное значение ускорения
по чувствительной оси X(Y, Z) меньше внутреннего порога, заданного регистрами
DD_THSI_H и DD_THSI_L. Рисунок ниже дает представление о том, где находятся
области «ниже», «выше» и сброса, задаваемые пороговым
значением в регистрах DD_THSE и DD_THSI.
DD_SRC (39h)
IA |
Сигнал прерывания по смене направления. (0 — изменение направления
не детектировано; 1 — изменилось направление с момента
последнего измерения).
|
ZH
|
Превышение по Z. Значение по умолчанию: 0. (0: Z меньше порога THSI;
1: Z превышает порог THSI по положительному направлению оси)
|
ZL
|
Превышение по Z. Значение по умолчанию: 0. (0: Z меньше порога THSI;
1: Z превышает порог THSI по отрицательному направлению оси)
|
YH |
Превышение по Y. Значение по умолчанию: 0.(0: Y меньше порога THSI; 1: Y
превышает порог THSI по положительному направлению оси)
|
YL
|
Превышение по Y. Значение по умолчанию: 0. (0: Y меньше порога THSI;
1: Y превышает порог THSI по отрицательному направлению оси)
|
XH
|
Превышение по X. Значение по умолчанию: 0. (0: X меньше порога THSI;
1: X превышает порог THSI по положительному направлению оси)
|
XL
|
Превышение по X. Значение по умолчанию: 0. (0: X меньше порога THSI;
1: X превышает порог THSI по отрицательному направлению оси)
|
Регистр источников прерываний детектора направлений.
DD_ACK (3Ah)
Фиктивный регистр. Если бит LIR в регистре DD_CFG установлен в '1', чтение этого
регистра обновляет значение регистра DD_SRC. Прочтенное значение не имеет
какого-либо смысла.
DD_THSI_L (3Ch)
THSI7 | THSI6 | THSI5 | THSI4 |
THSI3 | THSI2 | THSI1 | THSI0 |
THSI7,THSI0
|
Внутреннее пороговое значение для детектора направления. Младшая часть.
|
DD_THSI_H (3Dh)
THSI15 | THSI14 | THSI13 | THSI12 |
THSI11 | THSI10 | THSI9 | THSI8 |
THSI15,THSI8
|
Внутреннее пороговое значение для детектора направления. Старшая часть.
|
Конкатенация регистров DD_THSI_H и DD_THSI_L определяет внутренний порог,
который будет использован акселерометром LIS3LV02DL для определения направления.
Пороговое значение представляется в виде 16-битного значения без знака. Значение
0x7FFF соответствует ускорению на полном диапазоне измерений (либо 2g, либо 6g в
зависимости от значения бита FS в регистре CTRL_REG2). Если необходимо
отсутствие гистерезиса, внутреннее и внешнее пороговые значения должны быть
равными.
Внутреннее пороговое значение должно быть меньше внешнего. Если же внутреннее
больше внешнего, область гистерезиса будет нулевой и для определения направления
будет задействован порог, заданный только регистрами DD_THSE_H и DD_THSE_L.
DD_THSE_L (3Eh)
THSE7 | THSE6 | THSE5 | THSE4 |
THSE3 | THSE2 | THSE1 | THSE0 |
THSE7,THSE0
|
Внешнее пороговое значение для детектора направления. Младшая часть.
|
DD_THSE_H (3Fh)
THSE15 | THSE14 | THSE13 | THSE12 |
THSE11 | THSE10 | THSE9 | THSE8 |
THSE15,THSE8
|
Внешнее пороговое значение для детектора направления. Старшая часть.
|
Аналогично DD_THSI_L и DD_THSI_H.
Литература
-
LIS3LV02DL MEMS inertial sensor rev. 2 by STMicroelectronics.
-
LIS3LV02DQ MEMS inertial sensor rev. 1 by STMicroelectronics.
-
AN2381 Application note rev. 1 by STMicroelectronics.
-
AN2041 Application note rev. 2 by STMicroelectronics.