О, оказывается, есть прошивалка для ch55x.
Но я пока доволен STM32. Подожду, возможно, через пару-тройку лет будет уже нормальное руководство, как с этими ch55x работать. По крайней мере, чтобы была уверенность, что купив девборду на ch55x, я смогу ее прошить! Не хочу на грабли нарываться, как с MSP430 (купил за пару сотен рублей девборду на этом чуде, а, оказывается, бутлоадера у него нет и прошить можно лишь при помощи какого-то мегадорогущего программатора!).
CH55x (CH551 CH552 CH554)
Сообщений 91 страница 120 из 162
Поделиться912019-04-08 12:04:38
Поделиться922019-04-08 12:33:27
Но я пока доволен STM32. Подожду, возможно, через пару-тройку лет будет уже нормальное руководство, как с этими ch55x работать.
Да тебе-то они зачем
И они не для тебя [не для твоих астрофизических задач], и ты не для них )
Поделиться932019-04-08 13:05:10
Серия статей на hackaday - https://hackaday.com/tag/ch554/
Ну, то есть, пока две, но две - это же уже серия )
Поделиться942019-04-09 09:03:40
Да тебе-то они зачем?
Хочется иной раз несколько ног + USB (желательно crystalless). Вот вчера промучился с запуском кварца на ch340g: то ли где-то утечка, то ли в ходе экспериментов чип спалил... Задолбали уже эти кварцы!
Стал смотреть цену CP2102 — жесть полная! Да он почти как микроконтроллер полноценный стоит! Заказал на али десяток STM32F072C8T6 (чуть дороже бакса за штучку вышли), но как-то кажется мне, дороговато это... Вот если бы они были с Cortex-M3 на борту — без базара (т.е. STM32F303)!..
Но, намучившись с прослойками USB<->UART, решил больше не использовать МК без аппаратного USB там, где основным интерфейсом общения должен быть USB! (другое дело — RS-232, CAN или 485)
Поделиться952019-04-09 10:24:44
Хочется иной раз несколько ног + USB (желательно crystalless).
Ну тогда ch55 именно то что надо
Crystal-less, имхо, вообще must have для мк [как и встроенный загрузчик без всяких программаторов] - всё-таки 2019 год на дворе
WCH аккуратно отнеслись к ядру 8051 [в отличие от STC и Silabs] - в ch55 ядро [cpu, порты, два таймера и uart] практически полностью совместимое с классическим интеловским, т.е. для знакомства подойдёт любая книжка по 8051
А спец периферии, кроме usb, там кот наплакал - достаточно посмотреть исходники их фирменных примеров
Ну и он готов к работе сразу при подаче питания без всяких танцев с бубном
Вот такая вот "программа" из одной строчки сразу зажжёт светодиод )
p3.2 := false
Вообще мне нравится как в ch55 сделаны порты [и у stc15 кстати примерно так же]
По умолчанию они bidirectional [тоже интеловская классика]
Но это bidirectional не просто открытый коллектор с подтяжкой
В высоком оно подтягивается 10К, в низком переключается на 70К, а при переключении из низкого в высокое на 2 такта подключается напрямую к питанию
Отредактировано vt (2019-04-09 16:52:59)
Поделиться962019-04-20 10:17:39
мутноватая схема
А вообще ch559 уже мало смысла имеет по ценовым соображениям
хотя ch549 довольно интересна однако те же 8 бит ШИМ ...((
60р. от 10шт
https://lcsc.com/search?q=ch549¤cy=RUB
плата разработки (бесплатная, хахаха)
http://club.szlcsc.com/article/details_36886_1.html
Отредактировано selevo (2019-04-20 10:31:11)
Поделиться972019-05-02 15:50:57
пришли мне платочки...
скоро начну
USB\VID_4348&PID_55E0
драйвер не нашел
Отредактировано selevo (2019-05-02 15:52:52)
Поделиться982019-05-02 18:09:11
Вот здесь под твой программатор есть утилитка. Автор даже не побрезговал сделать поддержку игровых приставок (вот же человеку делать нечего)!
Поделиться992019-05-02 18:30:51
драйвер не нашел
В папке WCHISPTool после установки - setup.exe
WCHISPTool - http://wch.cn/download/WCHISPTool_Setup_exe.html
Поделиться1002019-05-03 13:23:52
Как прекрассссно... ))
Поделиться1012019-05-03 13:26:31
не очень понятно зачем нужен libusb
если производитель предоставляет драйвера
Может производитель токмо для windows драйвер сделал ?
Отредактировано selevo (2019-05-03 13:30:24)
Поделиться1022019-05-03 15:07:25
не очень понятно зачем нужен libusb
если производитель предоставляет драйвера
Может производитель токмо для windows драйвер сделал ?
libusb - библиотека, не драйвер
Поделиться1032019-05-03 18:30:47
Посмотрел ещё раз https://github.com/rgwan/librech551
Про libusb это наверно вот это вот?
On Windows, CH554 ISP mode requires a libusb driver implementation to enable direct device access for librech551.
Автор немного путает тут
Вот как всё на самом деле - https://github.com/libusb/libusb/wiki/F … sb_project
libusb - кроссплатформенная библиотека, драйверы для неё в линукс - уже в ядре, в виндовс - winusb.sys, т.е. по сути тоже уже в виндовс
Поделиться1042019-05-04 06:07:21
http://www.gdlyou.com/download/WCHISPTo … p_exe.html
вот здесь лучше скачать
но тут кривость есть, скачивается с расширением html - переименовать в exe
а вот по этой ссылке : http://wch.cn/download/WCHISPTool_Setup_exe.html
второй день не могу скачать
рвется соединение скорость падает до байтов
вот на что надо среде ардуино переходить
отладки нет в проце - как раз для этой среды по ком порту отлаживать, там все так делают ))
99% думаю точно.
Отредактировано selevo (2019-05-04 06:10:26)
Поделиться1052019-05-04 06:26:35
Нагрел феном до 120 градусов
От хоста не отвалился, при отключении и повторном втыкании в таком нагретом виде, определяется.
Уже доволен внутренним генератором.
Отредактировано selevo (2019-05-04 06:27:06)
Поделиться1062019-05-04 09:03:29
а вот по этой ссылке : http://wch.cn/download/WCHISPTool_Setup_exe.html
второй день не могу скачать
рвется соединение скорость падает до байтов
У меня на яндекс-диске есть [url диска в моём профиле тут]
вот на что надо среде ардуино переходить
отладки нет в проце - как раз для этой среды по ком порту отлаживать, там все так делают ))
99% думаю точно.
usbepx вместо отладчика
Переменные мэппируются прямо в буферы endpoints [absolute в паскале, в си тоже возможно] и читаются/пишутся снаружи в реальном времени
В примере на паскале это есть
Поделиться1072019-05-05 21:06:01
Модуль WS2812
unit ws2812; interface uses time; var pin : boolean absolute forward; volatile; r, g, b : byte; bitaddressable; function reset : boolean; procedure rgb; implementation var us : word; function reset; begin result := ( time.us - us ) > 100; end; procedure p ( bit : boolean ); inline; begin pin := true; pin := true; pin := bit; pin := bit; pin := false; end; procedure rgb; begin p(g.7); p(g.6); p(g.5); p(g.4); p(g.3); p(g.2); p(g.1); p(g.0); p(r.7); p(r.6); p(r.5); p(r.4); p(r.3); p(r.2); p(r.1); p(r.0); p(b.7); p(b.6); p(b.5); p(b.4); p(b.3); p(b.2); p(b.1); p(b.0); us := time.us; end; begin pin := false; us := time.us; end.
И его применение
ws2812.pin : boolean absolute p3.2; ... if ws2812.reset then begin ws2812.r := ... ws2812.g := ... ws2812.b := ... ws2812.rgb; ws2812.r := ... ws2812.g := ... ws2812.b := ... ws2812.rgb; ... end;
Сравним с си ? Или того хлеще - с gcc и avr ? )
Перенёс сравнение в Дискуссии из топика про CH55x
А заодно и другой оффтоп
Отредактировано vt (2019-05-09 10:53:59)
Поделиться1082019-05-13 10:49:10
Попробовал собрать librech551. Обнаружил там ряд косяков: во-первых, вместо default при разборе параметров командной строки написано vdefault — справку по параметрам оно не даст!
Во-вторых, используется древняя версия libusb:
main.c: В функции <<main>>: main.c:230:2: предупреждение: <<libusb_set_debug>> устарело: Use libusb_set_option instead [-Wdeprecated-declarations] libusb_set_debug(NULL, 3);
В-третьих, нет проверки возвращаемого значения fread:
main.c:327:3: предупреждение: результат <<fread>>, декларированной с атрибутом warn_unused_result, игнорируется [-Wunused-result] fread(file_buffer, 1, file_length, fp); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ main.c:588:3: предупреждение: результат <<fread>>, декларированной с атрибутом warn_unused_result, игнорируется [-Wunused-result] fread(file_buffer, 1, file_length, fp);
что грозит "нежданчиками".
Не знаю, насколько хорошо там сделан обмен данными — проверю, когда получу чипы. А пока они идут, распаяю себе минимальную девборду (переходники с разных SSOP на DIP у меня есть, так что можно будет работать с МК без пайки).
Похоже, надо будет себе сделать форк librech551 и исправить все косяки, которые автор допустил, выкинуть поддержку игровых приставок и написать комментарии на нормальном английском языке!
Отредактировано Eddy_Em (2019-05-13 10:50:29)
Поделиться1092019-05-14 10:10:10
Похоже, надо будет себе сделать форк librech551 и исправить все косяки, которые автор допустил, выкинуть поддержку игровых приставок и написать комментарии на нормальном английском языке!
Да лучше заново переписать, а автору сказать спасибо за реверс протокола )
Я по ней разбирался с протоколом год назад и слегка причёсывал и сокращал под tcc
https://yadi.sk/d/naqKh4e03EDEJU/CH55x/librech551.bat
Поделиться1102019-05-23 16:47:07
Мужики, кто с CH55x работал, такой вопрос: вот этой схемы хватит, чтобы нормально изучать их?
Хочу подготовить железяку, пока CH552G едут.
Точно подтягивать USB DP надо через резистор для программирования? В интернете народ пишет, что надо закорачивать на питание напрямую...
И с RST я не понял: судя по даташиту, по умолчанию reset не работает. Странно...
Отредактировано Eddy_Em (2019-05-23 16:47:33)
Поделиться1112019-05-23 17:08:24
Нужны только ёмкости c +5 и c +3.3 [15 и 16 ноги] на землю и какая-то замыкашка dp [12 нога] на +5 +3.3 через резистор > 10К [для переключения в режим программирования] и всё
Закорачивать dp на питание нельзя, резистор нужен обязательно, и он может оставаться и постоянно подключенным во время программирования [просто джампером а не кнопкой]
Контрольный светик можно подключать без резистора на землю [используя внутренний подтягивающий резистор 10К]
А где ещё в инете народ пишет про ch55 ?
Я коллекционирую любые упоминания )
Отредактировано vt (2019-05-23 20:27:49)
Поделиться1122019-05-23 17:40:39
ОК, спасибо, заменю на boot резистор с 10кОм на 22к.
А 10к для светодиода маловато будет. Ну и USBLC6 я решил выкинуть - больше вероятности в такой схеме убить МК, тыкая пальцами по кнопкам, чем через разъем USB...
Плохо, что нет внутренней подтяжки на USBDP, как в STM32F0x2, и нужно одну ногу на это тратить (иначе reconnect при необходимости не сделать, даже после reset'а).
По-диагонали глянул даташит: что-то у таймера2 не увидел интерфейса энкодера. Нет что ли такого? А как энкодер подключать?? Я думал на CAP1/CAP2 его повесить. Ну, да ладно - просто выведу ноги, что-нибудь на них нацепляю...
Тоже как в девборде для STM32 МК не буду распаивать, а буду втыкать в "кроватку" — переходник с SOP16 на DIP.
Если хорошо вштырит, надо будет запастись CH55x в более приличных количествах.
Эх, хреново, что у них CAN'а нет — такие хорошие компактные и дешевые переходнички с USB на CAN получились бы... Придется их на STM32F0x2 делать.
P.S. А как, интересно, в режиме бутлоадера умудряется работать USB, если вместо подтяжки к +3.3В через 1.5к видит слабую подтяжку к +5В?
Отредактировано Eddy_Em (2019-05-23 17:42:44)
Поделиться1132019-05-23 17:52:29
Резистор 1.5К внутри, не надо внешнего, и управление его подключением/отключением тоже есть внутри
Резистор, переключающий в режим программирования, распознаётся мк только в момент подачи питания [ресета], когда внутренний резистор 1.5K ещё не подключен [а подключается он программно], а потом просто шунтирует dp [поэтому и требование > 10 K]
Поделиться1142019-05-23 18:37:56
А, вона как! Спасибо, буду внимательней читать документацию.
Поделиться1152019-05-23 20:57:16
вместо подтяжки к +3.3В через 1.5к видит слабую подтяжку к +5В?
Насчёт подтяжки к +5
В последней версии схемы платки wch уже к +3.3
А в более ранней схеме [на первой странице темы] к +5
Работает и так, и так, но по логике для usb +3.3 как-то более прилично )
Поделиться1162019-05-28 08:09:15
Перенёс дискуссию про CAN в Дискуссии из топика про CH55x
Поделиться1172019-06-01 09:07:59
Модуль touch-keys
unit touch; interface uses ch554; type tin = ( reset, tin0, tin1, tin2, tin3, tin4, tin5 ); var data : word absolute tkey_data; procedure chan ( tin : tin ); function ready : boolean; inline; implementation procedure chan; begin case tin of reset: p1_dir_pu := $FF; tin0: p1_dir_pu := p1_dir_pu and {p1.0} (not $01); tin1: p1_dir_pu := p1_dir_pu and {p1.1} (not $02); tin2: p1_dir_pu := p1_dir_pu and {p1.4} (not $10); tin3: p1_dir_pu := p1_dir_pu and {p1.5} (not $20); tin4: p1_dir_pu := p1_dir_pu and {p1.6} (not $40); tin5: p1_dir_pu := p1_dir_pu and {p1.7} (not $80); end; tkey_ctrl := byte( tin ) + {2ms} $10; end; function ready; begin result := (tkey_ctrl and {if} $80) <> 0; end; end.
Два новых repos на github
E8051 USB MCU CH55x Series - https://github.com/sochub/CH55
CH55X assembly instruction description - https://github.com/kprasadvnsi/ch55x_asm_doc
Отредактировано vt (2019-08-30 18:25:59)
Поделиться1182019-06-03 14:34:23
Зависимость значений в регистре tkey_data от ёмкости на входе touch-key
Поделиться1192019-06-05 10:07:14
Модуль SPI
unit spi; interface uses ch554; type mode = ( mode0, mode3, reset ); order = ( lsb, msb ); var data : byte absolute spi0_data; free : boolean absolute s0_free; procedure master ( mode : mode; order : order; prescaler : byte ); implementation procedure master; begin spi0_ck_se := prescaler; case order of lsb : spi0_setup := {bit_order} 8; msb : spi0_setup := 0; end; case mode of mode0 : spi0_ctrl := {mosi_oe sck_oe} $60; mode3 : spi0_ctrl := {mosi_oe sck_oe mst_clk} $68; reset : spi0_ctrl := {clr_all} 2; end; end; end.
Отредактировано vt (2019-08-30 18:26:41)
Поделиться1202019-06-07 21:16:12
Получил сегодня пяток CH552G. Втыкаю в свою платку один, нажал boot, подключил к USB — device descriptor read/64, error -71.
Нажимаю reset, светодиод на PWM1 как-то нервно начинает светиться, а МК греется.
Вынул, воткнул другой. Получаю:
[ 5312.858473] usb 7-2: new full-speed USB device number 22 using uhci_hcd [ 5313.010591] usb 7-2: New USB device found, idVendor=4348, idProduct=55e0 [ 5313.010596] usb 7-2: New USB device strings: Mfr=0, Product=0, SerialNumber=0
Пока udev-правила не написал, запускаю от рута:
su -c ./wchisptool Пароль: Error while bulking in: LIBUSB_ERROR_OVERFLOW Libre CH551 Flasher 2018 The chip id 0xFFFFFFA2 is currently not support in this program
И вот такой облом... В общем, надо исходники wchisptool внимательно читать и доводить до ума.