USMI

Объявление

12/06/2025 (Administration) - Spamming for the purpose of boosting messages will be punished with a ban. Спам с целью накрутки сообщений будет караться баном.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » USMI » MCU, SoC, CPU Микроконтроллеры » JL SoC. (杰理芯片) Programmer (Dongle) (Download Tool) Программатор.


JL SoC. (杰理芯片) Programmer (Dongle) (Download Tool) Программатор.

Сообщений 281 страница 300 из 408

281

kagaimiq написал(а):

Я даже это проверял, на AC1082 и на AC6908. Оба так переходили в ISP, и на AC1082 я даже смог запустить свой код, та

Ууу. В оперативку я так полагаю, оно же там отп) .

kagaimiq написал(а):

а с ISP можно просто от ISP_CLK тактировать чип, да и общение грубо говоря происходит по SPI,

Ну оно и понятно было что там SPI . А чем ты общаешься по SPI?
Интересно покурить фьюзы, внешний /внутренний кварц, и тд)
Знать бы еще что там доступно.
По 1082, а как ты это все сделал? Да и на 6908 тоже, по усб или подключал по spi? И если по SPI, то как распиновку нашел?

Подпись автора

USMicro® 2026©

282

kagaimiq написал(а):

Прогер ISP 1T2 переводит чип в ISP путём отправки "FF 6A58" (для AC109N, AC690N..), "FF 81F9A8" для AC691N или "FF 01F9A8" для AC692N (впрочем это присутствует и в более старших сериях - например ISP_KEY из донгла V4 как раз начинается с этого - поэтому AC692N и реагировала на ISP_KEY от донгла)

Отправки на усб пины? А чистый проц допустим тот же 1082 по идее можно даже прожечь так? (сам проц не интересен вообще, просто интересен протокол. ). Кстати для программирования 1082  нужно 6.5в . Там оно на прямую подается с контакта VPP на P46 вроде как.

Подпись автора

USMicro® 2026©

283

BIOS написал(а):

Интересно покурить фьюзы, внешний /внутренний кварц, и тд)

Я думаю что это всё софтом уже реализуется, обращение к фьюзам и т.п.

BIOS написал(а):

А чем ты общаешься по SPI?

Тогда я на W806 запрограммировал это всё, правда там я всё ногодрыгом делал, ибо не освоил местный SPI интерфейс (да и сейчас не особо то..)
Т.е. через обычный МК я это делаю, ничего особенного.

https://upforme.ru/uploads/001b/ca/8a/3/t867907.png

BIOS написал(а):

По 1082, а как ты это все сделал? Да и на 6908 тоже, по усб или подключал по spi? И если по SPI, то как распиновку нашел?

Туда просто подключил три проводка к ISP_CLK/DIN/DOUT, и отправлял ту процедуру инициализации от прогера.

Распиновка для AC109N это - P00 = ISP_CLK, P01 = ISP_DIN, P02 = ISP_DOUT.
Для AC690N мы уже разбирали - PA03 = ISP_CLK, USBDP = ISP_DIN, USBDM = ISP_DOUT.

На AC6908 я конечно же SPI использовал, я же с ISP разбираюсь, а не с USB, так то.

BIOS написал(а):

Отправки на усб пины?

Туда же где и ISP - ISP_CLK, ISP_DIN, все дела.

BIOS написал(а):

Кстати для программирования 1082  нужно 6.5в . Там оно на прямую подается с контакта VPP на P46 вроде как.

Я это уже знаю, тем более, это видно на той фотке с панелькой под AC1082, там ещё VDDIO и LDO5V накоротко соединены, и потом уходят в контакт с 3.3в.

BIOS написал(а):

А чистый проц допустим тот же 1082 по идее можно даже прожечь так?

Думаю да, подать Vpp, отправлять нужные комманды и так получится прошить.

Подпись автора

水Mizu-DEC JLtech since 22.06.2019

284

Что сказать - круто.  Что касается LVD, он разное на разных чипах. Интересно зачем оно? Или тоже таким методом перед включением чекает , если да то в бут, если нет , то грузимся?
Ну теоретически LVD только так и использовать можно с бутлоадером. Остальное VPP/RESET/TX/RX понятно. До НГ пару недель будет свободного времени, и панельки с чистыми чипами должны подъехать на неделе.
Интересно только фьузы потыкать и схематические включения разных чипов для ISP что бы эти самые фьузы прошить). Там фьюзами целые модули можно вкл и откл. У меня есть пачка новых 6082 - тот же 695, но нету ног под кварц, и они не работают с донглом через тактирование от донгла, у них фьуз этот TRIMM от внешнего чего то там отключен, они сами пишут что сначала нужно через 1Т2 прогер прошить фузы, и потом с чипом можно будет работать через донгл.
6082 - ну тоже не сильно интересен, но это по лучше 1082, от с флеш нормальным, и по сути обрезок без радиочасти от 695.

Подпись автора

USMicro® 2026©

285

BIOS написал(а):

6082

Я к чему, чип за 20 центов, с нормальной такой периферией. Еще и ЦАП в придачу.  Хочу собрать СДК ,  и сделать вольтметр, начну с 6925 чипов, там есть все, и примеры работы с АЦП , измерением, драйвер дисплеев, так что думаю получится.
Просто отрезать все лишнее) . Но опять же время) Еще и плат куча нужно доделать, а они наплодили серий чипов ппц. У меня щас новый фаворит - 695  серия, в частности 6956с8 в qfn32  корпусе, все супер, цена, начинка, размеры, в нем даже фм трансмиттер не отрезали) . Ну и по начинку такое ощущение что это отполированные 692 и тд, там даже ацп не порезали как в 692, по мимо аналогового мультиплекса, еще 4 канала ацп для аудио. (не считая 10 ацп как у всех на кнопки по 10 бит). И даже работа с внешней флешкой под маин программу сделали нормально, припаял флешку, и все туда прошивается)

Подпись автора

USMicro® 2026©

286

Пилю донгл, вопрос - как лучше сделать?
Донгл к чипу всегда подключен, не нужно будет перетыкать и тд. Также и атмега 328 подключена всегда через CLK DAT, и просто после перевода в бут - подключает  ПК усб до JL чипа.
Так вопрос собственно в режимах,
1 - режим uboot - с этим всё ясно.
2 - режим тестирования запрограммированного чипа JL - просто ждем загрузки основной только что залитой программы в чип и конектимся к ней как усб звуковуха/хид/и тд.
3 - режим дебага уартом. Загружаем в ацшку софт где дебаг настроен на усб, и тут у меня возникает вопрос, что лучше и как можно?
     ----
     1 - Можно ли использовать всегда подключенные ноги  CLK DAT на атмеге как уарт? Мне кажется что лучше использовать мост JL uart - atmega - ch340.
     2 - Или можно просто параллельно подключиться к уарту между ch340 и atmega328? Который используется по дефолту для прошивки атмеги и управлением донглом через комп.  Не будет ли конфликта?
Главное иметь управление по уарт донглом, и не мешая при этом дебагу JL.

Подпись автора

USMicro® 2026©

287

#include <SoftwareSerial.h> походу единственный вариант.

Подпись автора

USMicro® 2026©

288

Ага, не все так просто. Софтовый уарт может на прием данных использовать только две определенные ноги (где есть прерывания).

Подпись автора

USMicro® 2026©

289

да и такое себе. останавливать всю программу , ибо от ацшки постоянно будут сыпаться данные.

Подпись автора

USMicro® 2026©

290

Может просто от ch340  использовать  TX to atmega & RX to JL. Интересно, можно ли так сделать? Тогда наверно будет работать и управление ардуинкой по уарту, и дебаг от чипа, но теряется обратная связь. Или Скорее всего вообще не будет работать ничего).
Или сделать переключение уарта хардварно? Например через те же аналоговые ключи, но тогда в одном из состояний когда он будет отключен от атмеги, не будет управления.   
Завтра попробую каждый метод. Нечего гадать) :D

Подпись автора

USMicro® 2026©

291

Подскажите, какой версии донгл собирать?
4?

292

priradio585 написал(а):

Подскажите, какой версии донгл собирать?
4?

Последней на ардуине или на 6925. И там и там, нужны ключи по шине и питанию)

Подпись автора

USMicro® 2026©

293

BIOS написал(а):

Последней на ардуине или на 6925. И там и там, нужны ключи по шине и питанию)

Это обязательно всё будет)
Какой уровень идёт на ключ шины? Высокий или низкий, для его включения. Хочу другой поставить, под рукой есть CD4066.

294

priradio585 написал(а):

Какой уровень идёт на ключ шины?

Там две стороны у ключа, если ты о ключе усб шины. Соответственно в какой разъем воткнешь такой и нужен будет. У меня по дефолту используется  нормально-отключенный порт(состояние управления 0), когда чип перевели в бут - нормально-отключенный порт(состояние управления 1). Нормально-подключенный порт я пока не использую. Будет под флешку или что то еще.

Подпись автора

USMicro® 2026©

295

Прошивки от донглов можно же через jl_uboot_tool записать?
Только интересно v4 весит 2 MB

296

Да можно. Только на 692 чипы. Но донгл 4 версии тот что заводской - он на чипе AC5213B4, а его просто так не купить, да и схему я с него еще не скопировал. И утилиты на питоне нет пока поддержки  DV15. Я просто разбирал донгл, выпаивал флешку и сливал дамп.
Для прошивки нужна утилита своя или через удаленное обновление прям с китайского сервера.
Софт для прошивки DV15 я тупо случайно обнаружил в виде ексешника, когда  колупал какой то сдк не относящейся к DV15.
JL SoC. (杰理芯片) Programmer (Dongle) (Download Tool) Программатор.

Подпись автора

USMicro® 2026©

297

то есть v4 это прошивка с AC5213B4
понял

Отредактировано priradio585 (2023-12-29 02:21:19)

298

BIOS написал(а):

Last Full Firmware For Updater - Dongle v4.
Для оффлайн прошивки.

CPU - AC5213B4
Firmware 2023-03-24.
Flash Tool For DV15 UBOOT - SM01-DFU.EXE

FIrmware+TOOL
Схема будет позже.

есть ли схема ?

299

Ради разнообразия, вот код для USB донгла на MicroPython.

Есть два варианта, первый универсальный, а второй для ногодрыга использует PIO из RP2040.

usbkey1
Код:
from machine import Pin
from time import sleep_us, sleep_ms, ticks_ms, ticks_diff

pwrctl  = Pin(15)   # Power control
pullctl = Pin(16)   # USB pullup control (for reliable ACK sampling)
jlclk   = Pin(20)   # Key clock signal (USBDP)
jldat   = Pin(21)   # Key data signal  (USBDM)

pwrctl.init(Pin.OUT, value=0) # power off
pullctl.init(Pin.IN) # do not pull anywhere yet

jldat.init(Pin.IN);jlclk.init(Pin.IN)

#----------------------------------------------------

powerstate = False

def power_off():
    global powerstate

    pwrctl(0)   # Power off
    powerstate = False

def power_on():
    global powerstate

    if powerstate:  # Do a power cycle
        power_off()
        sleep_ms(250)

    pwrctl(1)   # Power on
    powerstate = True

#----------------------------------------------------

def sendkey(key=0x16EF):
    """ Send a key and sample for acknowledge """
    jldat.init(Pin.OUT) ; jlclk.init(Pin.OUT)

    for i in range(16):
        jldat(key & (0x8000 >> i))
        jlclk.off() ; sleep_us(10)
        jlclk.on()  ; sleep_us(10)

    jldat.init(Pin.IN) ; jlclk.init(Pin.IN)
    return not jldat() and not jlclk()  # <- is both D- and D+ low?
    #return jlclk() # <- is D+ high?

def send_usbkey(timeout=1000):
    # Power on
    power_on()

    pullctl.init(Pin.OUT, value=1)  # drive external pullups

    # send the key
    keysent = False
    tstart = ticks_ms()
    while not keysent:
        elapsed = ticks_diff(ticks_ms(), tstart)
        if elapsed >= timeout: break

        keysent = sendkey()

    pullctl.init(Pin.IN)        # disable pullups

    # release the pins, and we're done
    jlclk.init(Pin.IN);jldat.init(Pin.IN)

    if not keysent:
        power_off()

    return keysent, elapsed
usbkey2
Код:
#########################################
# JieLi USB dongle - RP2040 PIO edition #
#########################################
from machine import Pin
from time import sleep_ms, ticks_ms, ticks_diff
import rp2

pwrctl  = Pin(15)   # Power control
pullctl = Pin(16)   # USB pullup control (for reliable ACK sampling)
jlclk   = Pin(20)   # Key clock signal (USBDP)
jldat   = Pin(21)   # Key data signal  (USBDM)

pwrctl.init(Pin.OUT, value=0) # power off
pullctl.init(Pin.IN) # do not pull anywhere yet

#----------------------------------------------------

powerstate = False

def power_off():
    global powerstate

    pwrctl(0)   # Power off
    powerstate = False

def power_on():
    global powerstate

    if powerstate:  # Do a power cycle
        power_off()
        sleep_ms(250)

    pwrctl(1)   # Power on
    powerstate = True

#----------------------------------------------------

@rp2.asm_pio(
    out_init     = rp2.PIO.IN_LOW,
    sideset_init = rp2.PIO.IN_LOW,
    set_init     = (rp2.PIO.IN_LOW, rp2.PIO.IN_LOW),
    out_shiftdir = rp2.PIO.SHIFT_LEFT
)
def usb_key_pio():
    # pull the key value - blocks until it appears
    pull()

    # send 16 bits
    set(pindirs, 3)     # drive pins
    set(x, 15)          # 16 bits
    label("bitloop")    # <-- 10 PIO ticks per output clock
    out(pins, 1)          .side(0) [5-1]   # CLK=0, output to DAT
    jmp(x_dec, "bitloop") .side(1) [5-1]   # CLK=1

    # sample lines
    set(pindirs, 0)     # pins to input
    set(x, 15)          # sample 16 times (for full 32 bits)
    label("samploop")   # <-- 2 PIO ticks per sample  = 32 ticks or 3.2 bits
    in_(pins, 2)        # sample
    jmp(x_dec, "samploop")
    push()              # store the sampling result

usbkeysm = rp2.StateMachine(0, usb_key_pio,
    freq=25000*10,          # 25 kHz clock
    sideset_base=jlclk,     # sideset affects clock
    out_base=jldat,         # 'out' affects data
    set_base=jlclk,         # 'set' affects both clock and data
    in_base=jlclk           # 'in' reads clock and data
)

def send_usbkey(timeout=1000):
    power_on()

    usbkeysm.active(1)
    pullctl.init(Pin.OUT, value=1)  # drive external pullups

    # send the key
    keysent = False
    tstart = ticks_ms()
    while not keysent:
        elapsed = ticks_diff(ticks_ms(), tstart)
        if elapsed >= timeout: break

        usbkeysm.put(0x16EF, 16)
        ret = usbkeysm.get()

        keysent = ret == 0  # <- [D-] and [D+] were low the whole time
        #keysent = (~ret & 0x55555555) == 0  # <- [D+] was high the whole time

    pullctl.init(Pin.IN)        # disable pullups
    usbkeysm.active(0)

    if not keysent:
        power_off()

    return keysent, elapsed

И ещё такой себе код для управления всего этого с одной кнопки (короткое нажатие - вкл/выкл, долгое - перевод в бут)

main
Код:
from machine import Pin
from time import ticks_ms, ticks_diff, sleep_ms
import usbkey2 as juk

key = Pin(24, mode=Pin.IN, pull=Pin.PULL_UP)
led = Pin(25, mode=Pin.OUT, value=0)


presstime = 0
btnlast = False
pressed = False
state = None

def blink(times, delay=100):
    for i in range(times):
        led.toggle()
        sleep_ms(delay)


while True:
    btnstate = not key()
    command = None

    if not pressed:
        if btnstate and btnlast != btnstate:
            presstime = ticks_ms()
            pressed = True
    else:
        if not btnstate and btnlast != btnstate:
            if ticks_diff(ticks_ms(), presstime) >= 50:
                command = 'power_toggle'
            pressed = False
        elif btnstate and ticks_diff(ticks_ms(), presstime) >= 250:
            command = 'usb_key'
            pressed = False

    btnlast = btnstate

    if command == 'power_toggle':
        if state == 'on':
            command = 'power_off'
        else:
            command = 'power_on'

    if command == 'power_off':
        state = 'off'
        juk.power_off()
        led(0)

    elif command == 'power_on':
        state = 'on'
        juk.power_on()
        led(1)
        blink(2)

    elif command == 'usb_key':
        led(0)
        res, elapsed = juk.send_usbkey()

        if not res:
            state = 'off'
            blink(6)
        else:
            state = 'usb-download'
            blink(3)
Подпись автора

水Mizu-DEC JLtech since 22.06.2019

300

А что за платформа на первые два?

Подпись автора

USMicro® 2026©


Вы здесь » USMI » MCU, SoC, CPU Микроконтроллеры » JL SoC. (杰理芯片) Programmer (Dongle) (Download Tool) Программатор.