BLE SoC PHY6202

pvvx

Активный участник сообщества
Разобрался с неизвестным акселерометром в китайских браслетах-часах с PHY6202 и TLSR8266.
Код:
    /* Config acceleration sensor: 150 smps (50 points x,y,z per sec) */
    kxi2c_write(pi2c, 0x1E, 0x00);
    kxi2c_write(pi2c, 0x2E, 0x00); // stop
    kxi2c_write(pi2c, 0x20, 0x47);
    kxi2c_write(pi2c, 0x23, 0x98);
    kxi2c_write(pi2c, 0x24, 0x40);

    kxi2c_write(pi2c, 0x2E, 0x4F); // start
Далее считываем точки (x,y,z) из FIFO поступающие туда по 150 штук в секунду в виде 16 бит со знаком (пачка в x,y,z в виде 6 байт = 3 точки):
Код:
    if(kxi2c_read(pi2c, 0x2F, &reg, 1) != PPlus_SUCCESS) { // читаем флаги и глубину заполненного FIFO
        LOG("acc: getflg error!\n");
        ......
    }
    size = reg & 0x1f;
    if(size) {
        if(kxi2c_read(pi2c, 0xA8, acc_data, size*2) == PPlus_SUCCESS) {
            int16_t *p = (int16_t *)acc_data;
            acc_count += size;
        } else LOG("acc: read points error!\n");
        if(reg & 0x40) { // сбой чтения потока из FIFO чипа (переполнение)?
            LOG("acc: reset\n");
            acc_count = 0;
            size = 0;
            kxi2c_write(pi2c, 0x2E, 0x00); // stop
            kxi2c_write(pi2c, 0x2E, 0x4F); // новый start
        }
    }
Глубину FIFO чипа пока не определял. Но и так хорошо - уже весь поток передается в Web Bluetooth...
Т.е., при описанном конфиге чипа, каждые 100 мс считываем по 15 точек (5 блоков x,y,z = 5*3*2 = 30 байт). На эти процедуры у PHY6202, при i2c в 400 кГц, уходит около 2 ms. Между ними проц - спать...
 

pvvx

Активный участник сообщества
Описание выводов PHY6202 для SDK к часам с первой страницы:
Код:
/*
P32/P00 - EM7028, ACCx SDA
P33/P01 - EM7028, ACCx SCL
P34/P02 - TFT LED ENA
P00/P03 - TFT D/C
P01/P04 - TFT RST
P02/P05 - TFT CS
P03/P06 - TOUCH KEY INT

P09/P09 - TX
P10/P10 - RX
P25/P11 - TFT SDA, FLASH SDI
P24/P12 - FLASH CS
P23/P13 - EM7028 INT
P14/P14 - VBATT
P15/P15 - VUSB
P16/P16 - FLASH SDO
P17/P17 - TestPoint3
P18/P18 - KEY (none)
P20/P20 - MOTOR ENA
TRXV/P25 - +VCC
P31/P30 - TFT SCL, FLASH CLK
*/

/* em70xx.c */
#define GPIO_EM70xx_SDA P32
#define GPIO_EM70xx_SCL P33
#define GPIO_EM70xx_INT P23

/* acc.c */
#define GPIO_KX023_SDA P32
#define GPIO_KX023_SCL P33

/* touch_key.c */
#define GPIO_TOUCH_KEY_INT P3

/* battery.c */
#define GPIO_VBATT        P14
#define ADC_VBATT        ADC_CH2P_P14
#define GPIO_VUSB        P15
#define PIN_BATT_CHARGE GPIO_VUSB

/* lcd_TFT.c */
#define GPIO_TFT_LED_ENA    P34
#define GPIO_TFT_DC            P0    
#define GPIO_TFT_RST        P1   
#define GPIO_TFT_CS            P2   
#define GPIO_TFT_SDA        P25 // MOSI
#define GPIO_TFT_SCL        P31    // SCLK
#define GPIO_NC1              P7     // MISO

/* Test/LEDs */
#define GPIO_GREEN    P17    // TST3
#define GPIO_YELLOW   P18    // K9
#define GPIO_RED      P20    // MOTOR ENA
 

pvvx

Активный участник сообщества
Документация, SDK и т.д.: Welcome [Phyplus Wiki]
Ничего более публиковать не могу, т.к. лицензия в каждом файле:

Phyplus Microelectronics Limited является конфиденциальной и частной собственностью.
Все права защищены.
ВАЖНО: Все права на это программное обеспечение принадлежат Phyplus Microelectronics
Limited ("Phyplus"). Использование Вами данного Программного обеспечения ограничено
конкретные права, предоставленные в соответствии с условиями делового контракта,
конфиденциальное соглашение, соглашение о неразглашении и любые другие формы
договоров в качестве клиента или партнера Phyplus. Вы не можете использовать это
Программное обеспечение, если вы не согласны соблюдать условия этих соглашений.
Вы признаете, что Программное обеспечение не может быть изменено, скопировано,
распространяются или раскрываются, если они не встроены в Phyplus Bluetooth Low Energy
(BLE) интегральная схема, либо в виде продукта, либо интегрирована в ваш
товары. За исключением вышеуказанных целей, вы не можете использовать,
воспроизводить, копировать, готовить производные произведения, изменять, распространять, выполнять,
показывать или продавать данное Программное обеспечение и / или его документацию для любых целей.
 

pvvx

Активный участник сообщества
А конкретнее - не могу выложить в github, только частный обмен при запросе в личке...
И вторая беда у PHY62x2 - проприетарная среда сборки. Но это не особо тянет, т.к. запросто переводится на gcc.
 

pvvx

Активный участник сообщества
upload_2019-12-20_9-28-3.png
Всё - часы можно на тапочки вешать.. :)
 

pvvx

Активный участник сообщества
Часы на тапочке...
С определением кол-ва шагов будет похуже, чем с сердечным ритмом:
upload_2019-12-20_9-50-16.png
 

pvvx

Активный участник сообщества
Осталось установить Характеристики неизвестного датчика акселерометра-педометра, при указанных настройках в представленном ранее коде:
upload_2019-12-20_17-19-3.png
Длина вектора при 1 g:
|a| = √ax2 + ay2 + az2 = √48642 + 47842 + 47522 = √23658496 + 22886656 + 22581504 = √69126656 = 16√270026 ≈ 8314.244162880954
Предел показаний (значений точек) ±32767, т.е. ±4 g.
Кол-во бит: 12 старших (младшие 4 в установленном режиме 50 замеров 3D в сек не работают).
Шум: ±220 единиц (±0.027 g).
 

pvvx

Активный участник сообщества
Т.к. поступило несколько запросов типа "Есть мысль для личных целей сделать небольшой внешний дисплей для смарта." то оповещаю скопом (а не каждому в личке и прочим каналам связи) - драйвер дисплея на часах из заголовка темы работает и опробован ещё в том году. Если мои нужды не совпадают с вашими, писать на заказ что-то не собираюсь.
Вариант передачи готовых изображений в Web Bluetooth на часы уже опробован.
Передача картинок со смарта подразумевает ПО на смарт с подготовкой картинок, что я писать не намерен.
 

pvvx

Активный участник сообщества
Часы имеют встроенную дополнительную Flash со шрифтами и в SDK есть библиотека работы с utf-8 текстом и прочих графических фигур для вывода на экран...
Шаблоны картинок-заставок записываются так-же в эту дополнительную flash (пример из SDK упрощен и оперирует картинками только из основной Flash)
В SDK есть пример и приложение для теста под Android.
Показывает пример передачи сообщений на часы. Три вида
- типа звонок и на экране будет мигать картинка звонка и работать вибра
- 2 типа сообщений с разными картинками оповещения (зачем не знаю)
upload_2020-1-29_3-20-14.png
Правда там, в примере SDK, используется совсем маленький экран - на большом экране это всё показывает в уголку и очень мелко:
upload_2020-1-29_3-29-38.pngupload_2020-1-29_3-29-47.png
 
Сверху Снизу