Avatar for yngv126399

yngv126399

Member since Mar 2021 • Last active Nov 2022
  • 9 conversations
  • 118 comments

Most recent activity

  • in News
    Avatar for yngv126399

    Thanks for all these great improvements! Looking forward to trying them out.

  • in Bangle.js
    Avatar for yngv126399

    You can never brick a Bangle2. It's an involved process though, you'll need a special USB connector (USB Female on one end, exposed 4 wires on the other) and connect the 4 wires to an SWD-capable dongle or device (like an ST-Link or Raspberry pi).

    I would do as fanoush suggests: see if you can use nrfConnect on an android device or from a PC first.

    • 5 comments
    • 256 views
  • in Bangle.js
    Avatar for yngv126399

    and yes, my thought was sunset Bangle 1, and use this as Bangle 3 (only supporting B2 and B3). It's darn impossible to find ONE watch to make everyone happy, with these two you cover a lot of ground.

    BTW: the TK78G has a 405mAh battery inside (likely to accommodate for all the sensors) and 64Mb (8MB) SPI flash. I've mapped quite a few pins so far, but I am not an electrical engineer so I am likely missing some step to get SPI Flash working (like setting, resetting or toggling some pin). I've found 10 pins on the LCD/touch panel connector and am running through those permutations when I can.

  • in Bangle.js
    Avatar for yngv126399

    How did you get the firmware on yours? Did you have to crack it open?

    Yes. I've opened several watches now, and this one is not too bad. Hair dryer to heat the screen edges, then a plastic spudge to loosen the screen.

    I am open to bringing support for more watches into the main Espruino project if it doesn't mess the code around too much

    Some of jeffmer's solutions use a modified spi_lcd_unbuf to accommodate shared SPI between LCD and Flash chip, but that looks like it's only a few #ifdefs to make it happen. He also exposes a function that lets you send init commands to the LCD from Espurino, so custom init sequences don't require custom firmware.

    ...you can still run apps from the main app store

    Mostly you can, obviously with some exceptions for watches that don't have barometer, GPS, etc. but he has a "Bangle" object that honours many functions, and that can be embellished.

  • in Bangle.js
    Avatar for yngv126399

    If the plan is to use an existing watch for a base, I'll just toss in the TK78G: https://www.alibaba.com/trade/search?fsb­=y&IndexArea=product_en&CatId=&tab=all&S­earchText=tk78g It may be on the way out (it's mostly disappeared from AliExpress) but it has some features that make it an interesting blend of B1 and B2: NRF52840, two physical buttons, GPS, Thermometer (external), heart rate sensor, accelerometer, touch screen and a nice 1.6" screen. I have it running Espruino right now (in the process of RE the screen and sensors). It may not replace the B2's always-on display, but it may be a replacement for B1?

  • in Other Boards
    Avatar for yngv126399

    Thanks, Gordon. I rebuilt with that, and erased the flash (.eraseAll()) and it seems to work better, but it still seems to choke on larger files (5k or so). A file that works when sent to RAM will throw an error like:

    Uncaught ReferenceError: "retur" is not defined
     at line 1 col 1036
    ...
                                  ^
    in function "connect" called from line 1 col 410
    ...
                                  ^
    in function "GC9A01" called from line 1 col 29
    GC9A01(D25, D3, D2, D18, D26);
                                ^
    >
    

    as if the keyword "return" were incomplete; but as I said, it IS complete, and works when sent to RAM.
    After this point, trying to list files shows an empty list; but if I "reset()", the file list is restored.

    It's like it goes to sleep and can't wake up at some point! Insomniac flash.

  • in Other Boards
    Avatar for yngv126399

    Hey all, I've put Espruino on a smartwatch (SN80-Y from Yfit) and have figured out most of the pins and components (lcd, accel, touch) but am having trouble getting the XTX XT25F32B (4MB flash) chip to be reliable. Verified the following pins using multimeter: CS=D19, SO=D18, SI=D17, CLK=D20. Doing a wakeup, followed by getting vendor ID and capacity seems fine:

    >  spif = new SPI();
    =SPI: {  }
    >  spif.setup({sck: CLK, miso: SO, mosi: SI, mode:0, baud: 8000000});
    =undefined
    >  spif.send([0xab], CS);
    =new Uint8Array([255])
    >  print(spif.send([0x90,0,0,1,0,0], CS));
    new Uint8Array([255, 255, 255, 255, 21, 11])
    =undefined
    >  print(spif.send([0x9f,0,0,0], CS));
    new Uint8Array([254, 11, 64, 22])
    =undefined
    

    That seems fine:22 at the end should mean 2^22 bits, or 4MB. So i've included it in my board file. In the devices section I have:

      'SPIFLASH' : {
                'pin_sck' : 'D20',
                'pin_mosi' : 'D17',
                'pin_miso' : 'D18',
                'pin_cs' : 'D19',
                'size' : 4096*1024, # 4MB
                'memmap_base' : 0x60000000 # map into the address space (in software)
      }
    

    And when flashed I see:

    >require("Storage").getFree()
    =4194304
    

    I then use this test script just to read the first few blocks of 256 bytes:

    CS=D19, SO=D18; SI=D17; CLK=D20;
    
    setTimeout(()=>{
      spif = new SPI();
      spif.setup({sck: CLK, miso: SO, mosi: SI, mode:0, baud: 8000000});
      spif.send([0xab], CS);
      print(spif.send([0x90,0,0,1,0,0], CS));
      print(spif.send([0x9f,0,0,0], CS));
      let hex = (d) => { return ('0'+d.toString(16)).slice(-2);};
      let buf = new Uint8Array(256);
    
      // 3 byte address: 0x7f 0xff 0xff (0x7f = 8MB, 0x3f = 4MB, 0x1f = 2MB)
      for(let b1=0; b1 < 1; b1++) {
        for(let b2=0; b2 < 5; b2++) {
          let bufstr = '';
          for(let b3 = 0; b3 < 256; b3++) {
            res = spif.send([0x03, b1, b2, b3, 0], CS);
            buf[b3] = res[4];
            bufstr += ("0"+buf[b3].toString(16)).slice(-2)+" ";
          }
          print(`${hex(b1)} ${hex(b2)} ${hex(b3)}: ${bufstr}`); //${btoa(buf)}`);
    
        }
      }
    }, 1000);
    

    The timeout was added because I was running into issues without it. This seems to work if I save it to RAM, as I get data (remnants from previous attempts to write):

    new Uint8Array([255, 255, 255, 255, 21, 11])
    new Uint8Array([254, 11, 64, 22])
    00 00 00: 04 04 00 00 54 45 53 54 ...
    00 01 00: 64 65 65 70 20 73 6c 65 ...
    00 02 00: 4c 4b 7d 20 20 41 42 3d ...
    00 03 00: 70 69 66 2e 73 65 6e 64 ...
    

    In the first line you can see the ASCII for "TEST" which was the name of the file I attempted to write in the IDE.
    So the problem is when I try to save the test code to Storage (or Flash):

    |  __|___ ___ ___ _ _|_|___ ___
    |  __|_ -| . |  _| | | |   | . |
    |____|___|  _|_| |___|_|_|_|___|
             |_| espruino.com
     2v12.925 (c) 2021 G.Williams
    Espruino is Open Source. Our work is supported
    only by sales of official boards and donations:
    http://espruino.com/Donate
    >
    FW addr 0x00000000 fail
    Status 0
    Uncaught Error: File already written with different data
     at line 1 col 1106
    ...{\n    for(let b2=0",0,1349);
                                  ^
    Uncaught Error: Too much data for file size
     at line 2 col 380
    ...    }\n  }\n}, 1000);",1024);
                                  ^
     ____                 _
    |  __|___ ___ ___ _ _|_|___ ___
    |  __|_ -| . |  _| | | |   | . |
    |____|___|  _|_| |___|_|_|_|___|
             |_| espruino.com
     2v12.925 (c) 2021 G.Williams
    Espruino is Open Source. Our work is supported
    only by sales of official boards and donations:
    http://espruino.com/Donate
    new Uint8Array([112, 105, 102, 46, 115, 101])
    new Uint8Array([32, 104, 101, 120])
    Uncaught SyntaxError: Unexpected end of Input
     at line 42 col 18 in TEST
        for(let b3 =
                     ^
    > 
    

    The other notable thing is that the CLK and SI lines are shared with the LCD (also SPI) and the accelerometer (I2C). However, I have not initialized either of those. In other tests, LCD works fine as does the accel, but I'm trying to leave out any issues with line sharing.

    Any pointers greatly appreciated!

  • in Porting to new Devices
    Avatar for yngv126399

    Burned how?

  • in Porting to new Devices
    Avatar for yngv126399

    @fanoush figured out the issue. The display driver uses D9, which is an NFC pin for the nrf52832. Solution was covered in another conversation as a temporary measure, and to compile the firmware with the special tag ('DEFINES += -DCONFIG_NFCT_PINS_AS_GPIOS',) to let the NFC tags be treated as normal GPIOs.

Actions