Iskra JS запуск I2C

Тема в разделе "Iskra JS, Espruino, Йодо", создана пользователем Дмитрий Юнушкин, 28 май 2017.

Метки:
  1. Здравствуйте!!! Что-то Я совсем растерялся с I2С на Iskre JS. Вот если у меня есть i2c устройство с адресом например 0b1101001 (0x69) то как к нему обратится на искре js и прочитать значение из регистра например например адрес регистра 0x02, это вообще возможно. В функциях только адрес устройства на шине а как взять адрес регистра и прочитать содержание регистра. Конечно устройство слейв. Искра js мастер. Может кто-то пробовал что-то делать с I2C так? Буду признателен за ответ.
     
  2. rkit

    rkit Гуру

    Как работать с регистрами устройства написано в даташите на устройство.
     
  3. Ну это понятно хорошо спасибо, мерси.Но я уточню тогда вопрос чтобы как то понятнее было например в библиотеке HAL для STM32 есть функция HAL_I2C_Mem_Read(&I2cHandle, 0x68<<1, (uint16_t) 0x82, 0x00000001U, (uint8_t *)&aRxBuffer[11], 0x00000001U, (uint32_t) 100); она считывает в данном случае из устройства по адресу 0x68 на шине i2c значение регистра имеющего адрес 0x82 и складывает в элемент массива RxBuffer[11]. Вот тоже самое только на Искре JS возможно повторить и записать в конкретную ячейку с адресом таким-то у устройства с адресом таким то на шине?
     
  4. sys

    sys Злобный Буратино Модератор

    http://easyelectronics.ru/interface-bus-iic-i2c.html
    http://wiki.amperka.ru/js:i2c
    https://github.com/amperka/espruino-modcat/blob/master/modules/@amperka/rtc.js
    http://www.espruino.com/modules/AT24.js

    запись в регистр:
    Код (Javascript):
    I2C.writeTo(адрес_устройства, [регистр_куда_писать, данные]);
    чтение из регистра:
    Код (Javascript):
    I2C.writeTo(адрес_устройства, регистр_откуда_читать);
    I2C.readFrom(адрес_устройства, кол-во байт);
     
    Последнее редактирование: 30 май 2017
    Konkery нравится это.
  5. Код (Javascript):
    // Настройка интерфейса
    // (необязательна при использовании выделенных I2C)
    I2C1.setup({sda:B9 , scl: B8, bitrate: 400000});

    // Передача пакета данных
    I2C1.writeTo(0x29,  0x00);
    // Приём данных
    var myByte = I2C1.readFrom(0x29, 1);
    USB.println(myByte);
    Вот такой код для Амперкинского приближометра https://amperka.ru/product/troyka-proximity VL6180 вот я хочу согласно даташиту спросить у датчика кто он т.е. на 0x29 адрес посылаю прочитать из регистра 0x00 и он мне присылает один раз 0xB4 (180) но если я повторно загружаю программу то шлет все что угодно только не 0xB4 (180) с чем это может быть связано? После обесточивания и подключения заново все так же один раз шлет потом нет(
     
    Последнее редактирование модератором: 3 июн 2023