BSACPLD 9 15 февраля, 2023 Опубликовано 15 февраля, 2023 · Жалоба Народ, а кто-нибудь пробовал реализовать на CH569W мост USB-FIFO по типу CYUSB3014? Или может быть есть у кого-нибудь грамотный пример приёма и отправки пакетов по USB3.0 на CH569W? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 185 15 февраля, 2023 Опубликовано 15 февраля, 2023 · Жалоба 1 час назад, BSACPLD сказал: Народ, а кто-нибудь пробовал реализовать на CH569W мост USB-FIFO по типу CYUSB3014? Проект https://hydrabus.com/hydrausb3-v1-0-specifications/?v=ea8a1a99f6c9 и их репозитории на github смотрели? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 9 15 февраля, 2023 Опубликовано 15 февраля, 2023 · Жалоба 14 minutes ago, makc said: Проект https://hydrabus.com/hydrausb3-v1-0-specifications/?v=ea8a1a99f6c9 и их репозитории на github смотрели? Да. Сложилось впечатление, что это пример очень далёкий от реального применения. В купе с отсутствием документации на USB3.0 периферию данный пример весьма проблематично применить в реальном проекте. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 185 15 февраля, 2023 Опубликовано 15 февраля, 2023 · Жалоба 1 час назад, BSACPLD сказал: В купе с отсутствием документации на USB3.0 периферию данный пример весьма проблематично применить в реальном проекте. На сколько я понял, там один общий USB-контроллер и его регистры описаны в ДШ и есть в заголовочных файлах от производителя и в проекте Hydra. Поэтому проблемы с отладкой неизбежно будут, но мне это видится преодолимыми трудностями. Дополнение: я ошибся, это два разных периферийных блока и у них разные базовые адреса, но для SS нет описания регистров. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 9 15 февраля, 2023 Опубликовано 15 февраля, 2023 · Жалоба 1 minute ago, makc said: На сколько я понял, там один общий USB-контроллер и его регистры описаны в ДШ и есть в заголовочных файлах от производителя и в проекте Hydra. Поэтому проблемы с отладкой неизбежно будут, но мне это видится преодолимыми трудностями. На USB2.0 есть описание регистров, а на USB3.0 описание отсутствует. В разделе про USB3.0 написано "используйте нашу библиотеку", а где её брать неизвестно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 185 15 февраля, 2023 Опубликовано 15 февраля, 2023 · Жалоба 1 час назад, BSACPLD сказал: На USB2.0 есть описание регистров, а на USB3.0 описание отсутствует. Вы правы, мне показалось что это один блок и у них одни и те же регистры. Но это не так. 1 час назад, BSACPLD сказал: В разделе про USB3.0 написано "используйте нашу библиотеку", а где её брать неизвестно. https://github.com/openwch/ch569/tree/main/EVT/EXAM/USBSS У них там много примеров и для другой периферии. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 9 15 февраля, 2023 Опубликовано 15 февраля, 2023 · Жалоба 2 hours ago, makc said: Вы правы, мне показалось что это один блок и у них одни и те же регистры. Но это не так. https://github.com/openwch/ch569/tree/main/EVT/EXAM/USBSS У них там много примеров и для другой периферии. При попытке собрать пример вылезает куча ошибок типа такой: Description Resource Path Location Type /home/sergey/Work/WCH/ch569/EVT/EXAM/USBSS/USBD/CH372Device/obj/../USB30/CH56x_usb30.c:528: undefined reference to `USB30_OUT_Set' CH372Device C/C++ Problem Причем изначально вообще была ругань на отсутствие некоторых include - китайцы накосячили с верхним/нижним регистром в именах файлов. Я это поправил, но не знаю как победить выше описанную ошибку. Как будто среда не находит libCH56x_usb30.a в котором и должны быть данные функции. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 185 16 февраля, 2023 Опубликовано 16 февраля, 2023 · Жалоба 8 часов назад, BSACPLD сказал: Как будто среда не находит libCH56x_usb30.a в котором и должны быть данные функции. Нужно смотреть строку запуска линковщика и тогда будет понятно где что ищется и почему не находится. Покажите, как запускается линковщик. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 9 16 февраля, 2023 Опубликовано 16 февраля, 2023 · Жалоба 5 hours ago, makc said: Нужно смотреть строку запуска линковщика и тогда будет понятно где что ищется и почему не находится. Покажите, как запускается линковщик. Уже нашел. В проекте почему-то был неправильно прописан путь к папке в которой лежит libCH56x_usb30.a. Но теперь другая проблема. Проект собрался, но не получается прошить ch569 из под Linux. Прошивальщик упорно не видит устройство, хотя в /dev оно есть. Запускал естественно от sudo по инструкции. Ещё меня смутило, что в документации устройство названо /dev/ch37x, а по факту появляется устройство /dev/ch37x1. Из под Windows плата прошивается без проблем, но хотелось бы прошивать сразу из под Linux. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 9 17 февраля, 2023 Опубликовано 17 февраля, 2023 · Жалоба Либо там нерабочая библиотека, либо я в упор не понимаю, что я делаю не так. Сделал loopback. В EP1_OUT_Callback подтверждаю запись текущего пакета и инициирую обратную передачу. void EP1_OUT_Callback(void) { PRINT("EP1_OUT_Callback\n"); UINT16 rx_len, i; UINT8 nump; UINT8 status; USB30_OUT_Status(ENDP_1, &nump, &rx_len, &status); for(int i=0 ; i<rx_len ; i++) { PRINT("endp1RTbuff[%u] = %x\n", i, endp1RTbuff[i]); } USB30_OUT_ClearIT(ENDP_1); USBSS->UEP1_RX_DMA = (UINT32)(UINT8 *)endp1RTbuff; USB30_IN_Set(ENDP_1, DISABLE, ACK, 1, 1024); PRINT("USB30_Send_ERDY(ENDP_1 | IN, 1)\n"); USB30_Send_ERDY(ENDP_1 | IN, 1); USB30_OUT_Set(ENDP_1, ACK, 1); PRINT("USB30_Send_ERDY(ENDP_1 | OUT, 1)\n"); USB30_Send_ERDY(ENDP_1 | OUT, 1); } В EP1_IN_Callback обрабатываю передачу ответного пакета. void EP1_IN_Callback(void) { PRINT("EP1_IN_Callback\n"); UINT8 nump; nump = USB30_IN_Nump(ENDP_1); //nump: 剩余待发送包数量 for(int i=0 ; i<8 ; i++) { PRINT("endp1RTbuff[%u] = %x\n", i, endp1RTbuff[i]); } PRINT("nump = %u\n", nump); USBSS->UEP1_TX_DMA = (UINT32)(UINT8 *)endp1RTbuff; USB30_IN_ClearIT(ENDP_1); USB30_IN_Set(ENDP_1, ENABLE, ACK, 1, 1024); PRINT("USB30_Send_ERDY(ENDP_1 | IN, 1)\n"); USB30_Send_ERDY(ENDP_1 | IN, 1); } Пакет действительно отправляется обратно, но это происходит бесконечно вместо однократной отправки. Что я делаю не так? Может кто-нибудь поделиться рабочим примером для отправки пакетов в направлении "устройство->ПК"? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 9 18 февраля, 2023 Опубликовано 18 февраля, 2023 · Жалоба UPD. Попробовал HYDRAUSB - не запускается отладка по UART. Пробовал и через printf и через UART1_SendString - в приемной консоли тишина. При этом через OpenWCH printf работает без проблем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 9 19 февраля, 2023 Опубликовано 19 февраля, 2023 · Жалоба UPD2. Взял библиотеку USB 3.0 от HYDRAUSB и создал проект с нуля. В направлении "ПК->Устройство" все ОК. В направлении "Устройство->ПК" как только я вызываю libusb_bulk_transfer устройство тут же возвращает мне пакет данных. Насколько я понял, в библиотеке реализована мгновенная отправка данные по запросу от ПК даже если передавать нечего. А мне нужно сделать как на CYUSB3014 с бесконечным ожиданием по вызову libusb_bulk_transfer пока не появятся данные для отправки. Опыта с USB на столь низком уровне у меня не много - буду признателен если кто-нибудь поможет допилить библиотеку для CH569 для отправки пакета по наличию данных для отправки. Проект прилагается. ch569w_fw.7z Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 9 19 февраля, 2023 Опубликовано 19 февраля, 2023 · Жалоба UPD3. Пока изыскания следующие: Чтобы начать отправку пакета, после того как данные готовы, нужно изменить состояние конечной точки: USB30_IN_set(ENDP_1, ENABLE, ACK, DEF_ENDP1_IN_BURST_LEVEL, 1024); USB30_send_ERDY(ENDP_1 | IN, DEF_ENDP1_IN_BURST_LEVEL); После этого начинает вызываться EP1_IN_Callback(). Когда данные закончились, нужно поменять состояние конечной точки на NRDY: USB30_IN_set(ENDP_1, ENABLE, NRDY, DEF_ENDP1_IN_BURST_LEVEL, 1024); USB30_send_ERDY(ENDP_1 | IN, DEF_ENDP1_IN_BURST_LEVEL); И вот тут как раз и возникает проблема как определить момент, когда данные уже отправлены... Я пробовал отслеживать изменение nump: nump = USB30_IN_nump(ENDP_1); //nump: number of remaining packets to be sent status = ACK; if(prev_nump != nump) { status = NRDY; } prev_nump = nump; Но при таком подходе у меня успевает отправиться несколько пакетов прежде чем изменится nump... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 185 28 апреля, 2023 Опубликовано 28 апреля, 2023 · Жалоба Подниму тему. Кому-нибудь удалось добиться работы USB 2.0 интерфейса (в моём случае хост) при работе МК на частоте, отличной от 120 МГц? Судя по дереву сигналов тактирования проблем быть не должно и рабочая частота ядра и шины не должна влиять на работу контроллера и USB PHY, но по факту я вижу, что при настройке на частоту 60 МГц или 80 МГц транзакция запроса дейскриптора в процессе энумерации отваливается по тайм-ауту. Все примеры от производителя настроены на 120 МГц, HydraUSB тоже на 120. Но для меня эта частота избыточна. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alexey_77 0 10 мая, 2023 Опубликовано 10 мая, 2023 · Жалоба Что-бы включилась отладка в проекте HydraUSB, надо в makefile раскомментировать одну строчку. С ЮСБ 3.0 из примера HydraUSB заработало быстро, то с ЮСБ 2.0 проблемы. Там сохраняется статус ACK и если его не поменять на NAK, то хост считает ещё раз(и много раз). Если не поставить опцию RB_UEP_T_AUTOTOG, то через пакет не отправляются данные. С опцией RB_UEP2_BUF_MOD то же не заработало. Да и нормального примера, где один эндпоинт IN , а второй OUT я не нашёл. И описание ЮСБ2.0 - просто издевательство. Где-то в комментариях видел. что можно разогнать ядро до 160МГц, но будут проблемы с ЮСБ 3.0. На 120МГц ЮАРТ работает на 7.5Мбод(3Мбод и 5Мбод тоже ) с CH347 (для 15Мбод я не нашёл переходник на ЮСБ). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться