2016-06-20 10 views
1

В профессиональном контексте я должен использовать vl53L0x. Этот датчик был выпущен в последнее время, наряду с его API, а это означает, что нет никакой помощи в Интернете еще:Несколько идентичных датчиков I2C с API vl53L0x (ST Microelectronics)

http://www.st.com/content/st_com/en/products/embedded-software/proximity-sensors-software/stsw-img005.html

Этот API содержит некоторые исходные и заголовки файлов, которые я собирал с НКУ. Он отлично работает, несмотря на явно недостающие комментарии. Я запускаю память stm32 (NUCLEO-F401RE), которая управляет датчиком vl53L0x через шину I2C. Теперь я хочу добавить еще несколько датчиков vl53L0x на одну и ту же шину I2C и обратиться к этому документу (если вы хотите его прочитать, перейдите непосредственно в нижнюю половину страницы 5, проводка уже выполнена):

http://www.st.com/content/ccc/resource/technical/document/application_note/group0/0e/0a/96/1b/82/19/4f/c2/DM00280486/files/DM00280486.pdf/jcr:content/translations/en.DM00280486.pdf

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

К сожалению, ST Microelectronics не опубликовала список регистров I2C, поэтому я должен использовать их API для управлять несколькими датчиками. В приведенном выше документе объясняется, как это сделать. Среди прочего, он указывает:

In vl53L0x_platform.h API file 
• Set VL53L0x_SINGLE_DEVICE_DRIVER macro to 0 so that API implementation will 
be automatically adapted to a multi-device context. 

Я посмотрел везде в папке API, я не смог найти никаких ссылок на макрос VL53L0x_SINGLE_DEVICE_DRIVER. Установка его на 0 ничего не изменит, так как эта строка отсутствует в файлах API. Кто-нибудь сталкивался с подобной проблемой?

+0

Работает ли он, если вы не установите макрос VL53L0x_SINGLE_DEVICE_DRIVER? Вполне возможно, что API был изменен, чтобы всегда принимать несколько устройств, но документация не обновлялась. – Tim

+0

Он отлично работает, если я этого не делаю, или если да. Это ничего не меняет. –

+0

Означает ли это, что на ваш вопрос ответили? – Tim

ответ

1

Я работаю над тем же. Кажется, что ты еще впереди, чем я. Однако, полагая, что это в моей (1) петле, похоже, делает работу обоих датчиков.

ResetAndDetectSensor(0); 
TimeStamp_Reset(); 

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

 Смежные вопросы

  • Нет связанных вопросов^_^