Микроконтроллеры

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

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


Вы здесь » Микроконтроллеры » Старое » CH55x (CH551 CH552 CH554)


CH55x (CH551 CH552 CH554)

Сообщений 91 страница 120 из 162

91

О, оказывается, есть прошивалка для ch55x.
Но я пока доволен STM32. Подожду, возможно, через пару-тройку лет будет уже нормальное руководство, как с этими ch55x работать. По крайней мере, чтобы была уверенность, что купив девборду на ch55x, я смогу ее прошить! Не хочу на грабли нарываться, как с MSP430 (купил за пару сотен рублей девборду на этом чуде, а, оказывается, бутлоадера у него нет и прошить можно лишь при помощи какого-то мегадорогущего программатора!).

92

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

Но я пока доволен STM32. Подожду, возможно, через пару-тройку лет будет уже нормальное руководство, как с этими ch55x работать.

Да тебе-то они зачем
И они не для тебя [не для твоих астрофизических задач], и ты не для них )

93

Серия статей на hackaday - https://hackaday.com/tag/ch554/
Ну, то есть, пока две, но две - это же уже серия )

94

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

Да тебе-то они зачем?

Хочется иной раз несколько ног + USB (желательно crystalless). Вот вчера промучился с запуском кварца на ch340g: то ли где-то утечка,  то ли в ходе экспериментов чип спалил... Задолбали уже эти кварцы!
Стал смотреть цену CP2102 — жесть полная! Да он почти как микроконтроллер полноценный стоит! Заказал на али десяток STM32F072C8T6 (чуть дороже бакса за штучку вышли), но как-то кажется мне, дороговато это... Вот если бы они были с Cortex-M3 на борту — без базара (т.е. STM32F303)!..
Но, намучившись с прослойками USB<->UART, решил больше не использовать МК без аппаратного USB там, где основным интерфейсом общения должен быть USB! (другое дело — RS-232, CAN или 485)

95

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

Хочется иной раз несколько ног + USB (желательно crystalless).

Ну тогда ch55 именно то что надо
Crystal-less, имхо, вообще must have для мк [как и встроенный загрузчик без всяких программаторов] - всё-таки 2019 год на дворе
WCH аккуратно отнеслись к ядру 8051 [в отличие от STC и Silabs] - в ch55 ядро [cpu, порты, два таймера и uart] практически полностью совместимое с классическим интеловским, т.е. для знакомства подойдёт любая книжка по 8051
А спец периферии, кроме usb, там кот наплакал - достаточно посмотреть исходники их фирменных примеров

Ну и он готов к работе сразу при подаче питания без всяких танцев с бубном
Вот такая вот "программа" из одной строчки сразу зажжёт светодиод )

Код:
p3.2 := false

Вообще мне нравится как в ch55 сделаны порты [и у stc15 кстати примерно так же]
http://sd.uploads.ru/yrXAo.png
По умолчанию они bidirectional [тоже интеловская классика]
Но это bidirectional не просто открытый коллектор с подтяжкой
В высоком оно подтягивается 10К, в низком переключается на 70К, а при переключении из низкого в высокое на 2 такта подключается напрямую к питанию

Отредактировано vt (2019-04-09 16:52:59)

96

мутноватая  схема
А вообще ch559  уже мало смысла имеет  по ценовым соображениям
хотя ch549  довольно интересна однако  те же  8 бит ШИМ ...((
60р.  от 10шт
https://lcsc.com/search?q=ch549&currency=RUB

плата разработки (бесплатная, хахаха)
http://club.szlcsc.com/article/details_36886_1.html

Отредактировано selevo (2019-04-20 10:31:11)

97

пришли мне платочки...
скоро начну
USB\VID_4348&PID_55E0
драйвер не нашел

Отредактировано selevo (2019-05-02 15:52:52)

98

Вот здесь под твой программатор есть утилитка. Автор даже не побрезговал сделать поддержку игровых приставок (вот же человеку делать нечего)!

99

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

драйвер не нашел

В папке WCHISPTool после установки - setup.exe
WCHISPTool - http://wch.cn/download/WCHISPTool_Setup_exe.html

100

Как  прекрассссно... ))

101

не очень понятно зачем нужен libusb
если производитель предоставляет драйвера
Может производитель токмо для windows драйвер сделал ?

Отредактировано selevo (2019-05-03 13:30:24)

102

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

не очень понятно зачем нужен libusb
если производитель предоставляет драйвера
Может производитель токмо для windows драйвер сделал ?

libusb - библиотека, не драйвер

103

Посмотрел ещё раз 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, т.е. по сути тоже уже в виндовс

104

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)

105

Нагрел феном до 120 градусов
От хоста не отвалился, при отключении и повторном втыкании в таком нагретом виде, определяется.
Уже доволен внутренним генератором.

Отредактировано selevo (2019-05-04 06:27:06)

106

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

а вот по этой ссылке : http://wch.cn/download/WCHISPTool_Setup_exe.html
второй день не могу скачать
рвется соединение скорость падает до байтов

У меня на яндекс-диске есть [url диска в моём профиле тут]

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

вот на что надо  среде  ардуино переходить
отладки нет в проце - как раз для этой  среды по ком порту отлаживать, там все так делают ))
99% думаю точно.

usbepx вместо отладчика
Переменные мэппируются прямо в буферы endpoints [absolute в паскале, в си тоже возможно] и читаются/пишутся снаружи в реальном времени
В примере на паскале это есть

107

Модуль 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)

108

Попробовал собрать 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)

109

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

Похоже, надо будет себе сделать форк librech551 и исправить все косяки, которые автор допустил, выкинуть поддержку игровых приставок и написать комментарии на нормальном английском языке!

Да лучше заново переписать, а автору сказать спасибо за реверс протокола )
Я по ней разбирался с протоколом год назад и слегка причёсывал и сокращал под tcc
https://yadi.sk/d/naqKh4e03EDEJU/CH55x/librech551.bat

110

Мужики, кто с CH55x работал, такой вопрос: вот этой схемы хватит, чтобы нормально изучать их?
https://pic4a.ru/95/EXt.png
Хочу подготовить железяку, пока CH552G едут.
Точно подтягивать USB DP надо через резистор для программирования? В интернете народ пишет, что надо закорачивать на питание напрямую...
И с RST я не понял: судя по даташиту, по умолчанию reset не работает. Странно...

Отредактировано Eddy_Em (2019-05-23 16:47:33)

111

Нужны только ёмкости c +5 и c +3.3 [15 и 16 ноги] на землю и какая-то замыкашка dp [12 нога] на +5 +3.3 через резистор > 10К [для переключения в режим программирования] и всё
Закорачивать dp на питание нельзя, резистор нужен обязательно, и он может оставаться и постоянно подключенным во время программирования [просто джампером а не кнопкой]
Контрольный светик можно подключать без резистора на землю [используя внутренний подтягивающий резистор 10К]

А где ещё в инете народ пишет про ch55 ?
Я коллекционирую любые упоминания )

Отредактировано vt (2019-05-23 20:27:49)

112

ОК, спасибо, заменю на 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)

113

Резистор 1.5К внутри, не надо внешнего, и управление его подключением/отключением тоже есть внутри
Резистор, переключающий в режим программирования, распознаётся мк только в момент подачи питания [ресета], когда внутренний резистор 1.5K ещё не подключен [а подключается он программно], а потом просто шунтирует dp [поэтому и требование > 10 K]

114

А, вона как! Спасибо, буду внимательней читать документацию.

115

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

вместо подтяжки к +3.3В через 1.5к видит слабую подтяжку к +5В?

Насчёт подтяжки к +5
В последней версии схемы платки wch уже к +3.3
http://sh.uploads.ru/jJ8vT.png
А в более ранней схеме [на первой странице темы] к +5
Работает и так, и так, но по логике для usb +3.3 как-то более прилично )

116

Перенёс дискуссию про CAN в Дискуссии из топика про CH55x

117

Модуль 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)

118

Зависимость значений в регистре tkey_data от ёмкости на входе touch-key

http://sd.uploads.ru/mMEO5.png

119

Модуль 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)

120

Получил сегодня пяток 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 внимательно читать и доводить до ума.


Вы здесь » Микроконтроллеры » Старое » CH55x (CH551 CH552 CH554)