bitaks arm_chip


Работа с акселерометром LIS3LV02DL и LIS3LV02DQ

В формате pdf скачать
в pdf

Краткое описание

корпуса акселерометров lis3lv02dl и lis3lv02dq

Микросхемы LIS3LV02DL и LIS3LV02DQ представляют собой трехосевой акселерометр, который состоит из чувствительного элемента и интерфейсного элемента, передающего по последовательным интерфейсам I²C/SPI измеренное ускорение.
Специальный процесс производства инерциальных сенсоров и исполнительных механизмов в кремнии, разработанный компанией ST, используется для реализации чувствительного элемента, способного детектировать ускорение.
Интерфейсный элемент выполнен по технологии CMOS настроенной на лучшее соответствие характеристикам чувствительного элемента. При разработке специальной схемы эта технология позволила получить высокую степень интеграции.
Акселерометры имеют выбираемый пользователем диапазон измерений ±2g и ±6g и способны измерять ускорение по всем осям с полосой пропускания 640Гц. Полоса пропускания может быть выбрана в соответствии с требованиями их применения.
Способность проводить само-тестирование позволяет пользователю проверить работоспособность акселерометра.
Можно задать пороговое значение для ускорения, превышение которого хотя-бы по одной оси вызовет генерацию прерывания акселерометром.
LIS3LV02DL и LIS3LV02DQ доступны в пластиковом SMD корпусе и специфицируются на температурном диапазоне от -40ºC до +80ºC.
LIS3LV02DL и LIS3LV02DQ принадлежат к семейству изделий подходящих для решения множества задач:

Блок-схема 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.

SPI 4-х проводный

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.

SPI 3-х проводный

В 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 W6 W5 W4 W3 W2 W1 W0

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%.

Поток данных в lis3lv02dl и lislv02dq
Рисунок 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 D6 D5 D4 D3 D2 D1 D0

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)

x IA ZH ZL YH YL XH XL

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)

x IA ZH ZL YH YL XH XL

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.






Литература

  1. LIS3LV02DL MEMS inertial sensor rev. 2 by STMicroelectronics.
  2. LIS3LV02DQ MEMS inertial sensor rev. 1 by STMicroelectronics.
  3. AN2381 Application note rev. 1 by STMicroelectronics.
  4. AN2041 Application note rev. 2 by STMicroelectronics.

Яндекс.Метрика

Copyright © 2010-2014         www.bitaks.com
Разрешается копирование информации с указанием источника.