Мля, весьма странно, скомпилил на 24МГц - счас в putty выставил 115200 - в анализаторе 117647 , 57600 -57971, 38400 -38461,300000-307692,500000-500000
CH55x (CH551 CH552 CH554)
Сообщений 151 страница 162 из 162
Поделиться1522019-07-26 10:09:45
Да, но на 24Мгц получится облом - работать будет только если vcc- 5v, а это и на пинах будет 5v .
Почему и перешел на 16МГц -а здесь и на 12 уже ошибка рассчета...
Поделиться1532019-07-26 10:11:47
500000-500000
Вот она точность 24М/16/500000=3.00000 )
Поделиться1542019-07-26 10:16:39
Перешел на 12 и вот они приколы - 38400 -39215 ,57600-57971, 115200-125000, 300000-400000,500000-800000
Видел подобный вопрос на форуме WCH , но там вопрошающий почему уверен что частота не стабильна.
Мне же видиться тупой просчет с делителями , а скорей облом с из-за делителя.
Ему там советуют перейти на 559 . СЧа попробую найти
Поделиться1552019-07-26 10:20:07
Да, на 12 только 4800, 9600, 19200 и 57600
Поделиться1562019-07-26 10:22:00
vt, а это уже крест на 552 в cdc , точней как UART-USB ...
Поделиться1572019-08-01 16:43:22
Модуль CS1237 CS1238
unit cs1237; interface var command, register : byte; data : longint; pinc, pind : boolean absolute forward; volatile; function poll : boolean; implementation function poll; var a : array [0..3] of byte absolute data; c, i, r : byte; begin if pind = false then begin c := command; r := register; for i := 1 to 46 do begin pinc := true; case i of 1..8 : a[2] := (a[2] shl 1) + byte( pind ); 9..16 : a[1] := (a[1] shl 1) + byte( pind ); 17..24 : a[0] := (a[0] shl 1) + byte( pind ); 27 : if (c <> $56) and (c <> $65) then break; 30..36 : begin c := c shl 1; pind := boolean( c and $80 ); end; 37 : pind := true; 38..45 : if command = {write} $65 then begin pind := boolean( r and $80 ); r := r shl 1; end else register := (register shl 1) + byte( pind ); 46 : pind := true; end; pinc := false; end; if a[2] < $80 then a[3] := 0 else a[3] := $FF; result := true; end else result := false; pinc := false; end; begin command := $65; register := $10; end.
И пример использования
uses clock, time, usb, cs1237; var led : boolean absolute p3.2; cs1237.pinc : boolean absolute p1.7; cs1237.pind : boolean absolute p1.5; m : record sec : word; adc : longint end absolute usb.buf[1].t; begin repeat time.poll; usb.poll; if cs1237.poll then m.adc := cs1237.data; led := time.cs > 50; m.sec := time.s; if usb.len[1].r > 0 then begin move( usb.buf[1].r, usb.buf[1].t, 64 ); usb.len[1].r := 0; end; if usb.len[1].t = 0 then usb.len[1].t := 64; until false; end.
Отредактировано vt (2019-08-12 17:23:41)
Поделиться1582019-08-04 20:22:51
57600 вполне хватит мне
Поделиться1592019-08-13 11:05:49
Неожиданное применение CH552 )
https://micro-pi.ru/maixduino-sbc-risc- … ino-esp32/
А вот и софт нашёлся
CH552 Dual USB to Serial Bridge for Sipeed K210 & ESP32
https://github.com/diodep/ch55x_dualserial
Отредактировано vt (2019-08-13 16:45:44)
Поделиться1602019-08-13 20:47:30
А это, наоборот, ожиданное )
https://www.aliexpress.com/af/minpro.html
Burning speed:
We use GD25Q80 as the real test data to ensure the fairness of the test, and compare the same full data file on the same computer.
Minpro erase + burn + test Total time 20 seconds
CH341A erasing + burning + effect Total time 53 seconds
Burning speed far exceeds CH341A programmer
Поделиться1612019-08-15 09:56:53
How To Program CH551G (Cheap uC From LCSC.com)
https://www.youtube.com/watch?v=a3XSIRkeubE
Ну и от себя добавлю к этому в таком же стиле
Беру два файла Turbo51 [и больше ничего, компилятор сам знает периферию 8051]
turbo51.exe - 274432 байт
turbo51.l51 - 113168 байт
Делаю третий - test.pas
begin p3.2 := false end.
Делаю четвёртый командой turbo51 test.pas
test.bin - 7 байт
Это всё - светодиод горит )
Отредактировано vt (2019-08-15 11:09:48)
Поделиться1622019-08-27 07:39:27
Минималистичный программатор для новых ch552
#include <stdio.h> #include "libusb.h" libusb_device_handle *devh; char buf[64]; char chip[] = "\xA1\x12\x00\x52\x11MCU ISP & WCH.CN"; char final[] = {0xA2, 1, 0, 0}; char key[43] = {0xA3, 40, 0}; char erase[] = {0xA4, 1, 0, 8}; char write[64] = {0xA5, 61, 0, 0, 0, 0, 0, 0}; char verify[64] = {0xA6, 61, 0, 0, 0, 0, 0, 0}; char info[] = {0xA7, 2, 0, 0x1F, 0}; char xxx[] = {0xA8, 14, 0, 7, 0, 0xFF, 0xFF, 0xFF, 0xFF, 3, 0, 0, 0, 0xFF, 0x52, 0, 0}; int usb ( unsigned char *data, int olen, int ilen ) { int inum, iret, onum, oret; if (!devh) { libusb_init( NULL ); devh = libusb_open_device_with_vid_pid( NULL, 0x4348, 0x55E0 ); libusb_claim_interface( devh, 0 ); } if (olen) { oret = libusb_bulk_transfer( devh, 2, data, olen, &onum, 100 ); iret = libusb_bulk_transfer( devh, 0x82, buf, ilen, &inum, 1000 ); // for (int i = 0; i < inum; i++) printf( "%02X ", buf[i] & 0xFF ); } if (!olen || oret || iret) { libusb_release_interface( devh, 0 ); libusb_close( devh ); libusb_exit( NULL ); exit( oret | iret ); } else return inum; } int main ( int argc, char **argv ) { int a = 0, i, n, s; FILE *f; if ((f = fopen( argv[1], "rb" )) == NULL) exit( -1 ); // printf( "chip %d\n", usb( chip, sizeof(chip)-1, 6 )); // printf( "info %d\n", usb( info, sizeof(info), 30 )); printf( "xxx %d\n", usb( xxx, sizeof(xxx), 6 )); printf( "info %d\n", usb( info, sizeof(info), 30 )); s = buf[22] + buf[23] + buf[24] + buf[25]; for (i = 3; i < 43; i++) key[i] = s & 0xFF; printf( "key %d\n", usb( key, sizeof(key), 6 )); printf( "erase %d\n", usb( erase, sizeof(erase), 6 )); do { if (!(n = fread( buf, 1, 56, f ))) break; for (i = 0; i < n; i++) if (i % 8 == 7) buf[i] ^= 0x52; write[1] = (n + 5) & 0xFF; write[3] = a & 0xFF; write[4] = (a >> 8) & 0xFF; memcpy( write + 8, buf, n ); printf( "write %d %d %d\n", a, n, usb( write, n + 8, 6 )); a += n; } while (n == 56); /* a = 0; rewind( f ); do { if (!(n = fread( buf, 1, 56, f ))) break; for (i = 0; i < n; i++) if (i % 8 == 7) buf[i] ^= 0x52; verify[1] = (n + 5) & 0xFF; verify[3] = a & 0xFF; verify[4] = (a >> 8) & 0xFF; memcpy( verify + 8, buf, n ); printf( "verify %d %d %d\n", a, n, usb( verify, n + 8, 6 )); a += n; } while (n == 56); */ printf( "final %d\n", usb( final, sizeof(final), 6 )); usb( buf, 0, 0 ); }
Отредактировано vt (2019-08-27 19:17:56)