Espruino:Примеры/Техническая информация о Bangle.js

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Техническая информация о Bangle.js[1]

Общую информацию о Bangle.js читайте в этой статье.

Эта статья содержит более подробную информацию о внутренней начинке Bangle.js. Если вы просто пишете JS-код, то вам она, скорее всего, не понадобится, но будет интересна, если планируете модифицировать прошивку Bangle.js.

Функции

Код

Espruino-версия для Bangle.js имеет несколько специальных модификаций:

  • Файл «jswrap_bangle.c» содержит все функции Bangle.* и почти весь функционал Bangle.js.
  • Некоторый функционал (вроде меню) написан на JavaScript и встроен в прошивку. Эти JavaScript-файлы можно найти тут.
  • Сборка описана в файле BANGLEJS.py:
    • Устройство SPIFLASH вызывает определение SPIFLASH_BASE, что включает в «jshardware.c» поддержку внешней flash-памяти с шиной SPI
  • Загрузчик начинается с 0x7A000 (на 4 Кб меньше, чем у стандартного загрузчика SDK12), потому что изначально это SDK11-устройство.

Аппаратная начинка Bangle.js

Хотите заглянуть внутрь Bangle.js? Ознакомьтесь с этим руководством.

  • Акселерометр KX023
  • 3-осевой компас GMC303
  • Пульсометр BD 1668 (даташита нет). Всё аналоговое – компаратор на операционном усилителе, сравнивающий две световые волны
  • 32-мегабитная flash-память – тот же набор команд, что и у Macronix MX25
  • LCD-дисплей 240х240 с драйвером ST7789 (8-битный параллельный интерфейс)
  • Сенсорный контроллер Holtek – возможно, BS83A02A с 2 сенсорными зонами
  • GPS-модуль – это UBlox UBX-M8130
  • Литий-ионная батарея 502527

GPS

Как уже говорилось выше, GPS-модуль – это UBlox UBX-M8130.

В момент загрузки он сообщает ROM CORE 3.01, PROTVER=18.00*11.

Espruino осуществляет приём и парсинг NMEA-данных через GPS UART при вызове Bangle.setGPSPower(1).

Но вы также можете настраивать GPS, отправляя команды UBLOX UBX (см. тут).

GPIO-контакты

IO-контакты подключены к nRF52. Кроме того, у Bangle.js есть IO-расширитель для подачи питания на другие вещи.

nRF52

Контакт Название Примечания
D0 LCD_D0 Биты 0-7 задаются вместе с помощью(char*)P0_OUT
D1 LCD_D1 Биты 0-7 задаются вместе с помощью (char*)P0_OUT
D2 LCD_D2 Биты 0-7 задаются вместе с помощью (char*)P0_OUT
D3 LCD_D3 Биты 0-7 задаются вместе с помощью (char*)P0_OUT
D4 LCD_D4 Биты 0-7 задаются вместе с помощью (char*)P0_OUT
D5 LCD_D5 Биты 0-7 задаются вместе с помощью (char*)P0_OUT
D6 LCD_D6 Биты 0-7 задаются вместе с помощью (char*)P0_OUT
D7 LCD_D7 Биты 0-7 задаются вместе с помощью (char*)P0_OUT
D8 LCD_DC
D9 LCD_CLK
D10 LCD_CS
D11 Правая тач-зона Инвертированный
D12 Зарядка батареи при LOW Входной подтягивающий резистор
D13 Вибрация, активный HIGH
D14 I2C_SCK
D15 I2C_SDA
D16 Левая тач-зона Инвертированный
D17 D3 flash-памяти (RST – подключить к VCC)
D18 Динамик (если есть). Если нет, то инвертированный вывод пульсометра
D19 SCLK flash-памяти
D20 D1 flash-памяти (MISO)
D21 CS flash-памяти
D22 Средняя кнопка Инвертированный
D23 Верхняя кнопка Инвертированный
D24 Нижняя кнопка Инвертированный
D25 RX-линия GPS
D26 TX-линия GPS
D27 D0 flash-памяти (MOSI)
D28 Сброс IO-расширителя
D29 Аналоговые данные пульсометра
D30 Уровень батареи 0.51 – низкий, 0.62 – хороший
D31 D2 flash-памяти (WP – подключить к GND)

IO-расширитель

Маска Описание Значение по умолчанию
0x01 GPS 0
0x02
0x04
0x08
0x10
0x20 Подсветка LCD-дисплея 1
0x40 Сброс LCD-дисплея 1
0x80 Пульсометр 1

Плата пульсометра

В правой нижней части платы (рядом с надписью R6) есть две контактные площадки для динамика.

Рядом с одной из них есть надпись «+» – она идёт напрямую к 3.3 вольтам, а другая через транзистор идёт к контакту D18.

Таким образом, D18 инвертирован, и его можно использовать только для вывода. В то же время на него подаётся питание (притянут вниз при помощи MMDT3904), так что с его помощью можно управлять относительно высокой нагрузкой (примерно до 100 мА).

Сам пульсометр питается от IO-расширителя и оснащён только одним аналоговым выводом – D29.

Контакты для зарядки

Две круглые золотые контактные площадки сзади подключены к зарядной цепи Bangle.js. Левая площадка подключена к GND, а правая – к 5-вольтовой линии для зарядки.

I2C

Контакт D14 – это SCK, а D15 – это SDA.

  • 0x0C – магнетометр GMC303
  • 0x1E – акселерометр KX023
  • 0x20 – IO-расширитель
  • 0x7C – неизвестно. Был проверен только один раз OEM-прошивкой

См.также

Внешние ссылки