Недавно взял себе такой модуль для чтения/записи на USB-флешку. Пытался подключить согласно этой статье, но ничего не вышло. Все сделал, как надо - подсоединил TXD и RXD, подключил питание и землю, загрузил тестовый скетч все из той же статьи. В нём есть команда для проверки соединения с модулем. Вызываю её - "TimeOut waiting for response: Error while: checking connection". При этом питания на флешку также не выдается (хз, может так положено) UPD: Продолжал экспериментировать, подключил плату к соотв. разъемам RX и TX на ардуино. Плата подала признаки жизни и отправила какой-то код, но естественно это не решило проблему. Подключение по статье результатов пока не дает
Сорри за некропост, но: код из той статьи можно брать только как справочный, он очень, нет, ОЧЕНЬ херовый, экскюзе муа. Собственно, мне пришлось его практически весь переписывать, чтобы добиться нормальной работы с модулем через UART. По факту - реализовал чтение/запись, проверку на кол-во прочитанных байт (что в коде по ссылке просто проигнорировано, из-за чего можно запросить читать одно, а получить - совсем другое), ну и кое-какую обвязку. С именами файлов там не всё так просто: если надо юзать подпапки - то надо бить путь по частям, и для каждой части просить модуль выбрать путь (это дело я пока так и не реализовал, за временной ненадобностью). По итогу: работать с модулем можно, модулёк интересный, вполне себе нормальная замена SD. Единственное но: скорость работы по UART - всё же черепашья (по умолчанию - 9600, можно перенастроить на более высокую черепашью ). Кода, простите, выложить не могу - код писан под конкретный заказанный и оплаченный проект, и без разрешения заказчика - сделать этого не могу. Но если вдруг будут желающие и таких желающих будет хотя бы десяток - спрошу у заказчика разрешение на предмет вывалить эти сырые два класса на всеобщее растерзание.
Ну я искал - думал, мож есть какая готовая нормальная библиотека, чтобы лоб не морщить. Как оказалось - всё очень бедно и скудно, и все ссылки, рано или поздно - ведут на код из статьи. Пришлось взять его за основу и творчески переосмыслить, поскольку в реальном проекте - такому коду не место, хотя бы потому, что там делается пересброс всего модуля на каждый чих, что неприемлемо в принципе.
Согласен , но проблема отсутствия нормального кода решается со временем , правда , с годами , чем больше лет с выпуска модуля , тем больше кода на него .
Всем привет! А на каком языке вы пишите для вашего любимого Ардуино? Или это не для него вовсе? А то боюсь что-нибудь нарушить на вашем форуме... т.к. я вообще не работаю с Ардуино... Недавно жизниь заставила разбираться с модулем CH376S... Искал пример... Нашел код для Ард... Ну ерундовый то вообще! Я работаю на EFM32GG332 (Cortex M3), пиша на Keil С... После мучений с кодом - нашел на сайте производителя микросхемы CH376 пример использования с подробнейшими коментариями на китайском... Очень большой примерчик! 3 месяца убил на перевод с китайского на английский! Научился читать и писать и еще кучу чего! Но красиво определять, есть ли на флешке нужный файл так и не научился... Увы. Еще полностью согласен с утверждением, что нужно делать пересброс... Кривовато както это... Замечено ли в Вашем случае довольно редкое зависание программы в цикле ожидания байта при чтении файла, хотя на самом деле файл уже полностью прочитан и находится в буфере? Пока эксперименты пришлось прервать - опытный образец передан заказчику... Сейчас делаю в Сингапуре следующее поколение платы процессора после чего примерно через месяц начну "облизывать" модуль дальше... Всем удачи! Onic
если дурино, то только матерный. Китайцы построили себе ЖД дороги со скоростями 300-350 км/ч. Протяженность таких дорог порядка 200 000 км. Поезда там исключительно китайские. И рельсы китайские. Технологии, конечно же, от ведущих мировых фирм в этом сегменте. Мы же купили немецкие рельсы, немецкие электрички и хвастаемся 200 км/ч. В одном месте и не долго 250 км. А ещё мы хвастаемся, что наконец-таки одолели 15-ти летнюю дурину. Мда. Не стыдно?
Hello, All Несколько вопросов DIYMen и всем работающим с CH376! 1. Удалось ли Вам реализовать функции типа (без перевода): IfExist (char* FileName); Delete (char* FileName); 2. В китайских примерах при вызове любой функции типа Read or Write они делают следующую операцию: Код (C++): uint8_t FLASH_Activate (void) { uint8_t CH; int TIMEOUT=0; CH = CH376_CheckConnection (); // Check HW connection chip CH376 with MCU if (CH) // Connection Error Oсcured return 1; STEP1: CH376_ResetALL(); // Hardware Reset chip CH376. It not returned nothing CH = CH376_SetUSBMode (); // Set Host USB Mode if (CH==CMD_RET_SUCCESS) // CH==0x51 goto STEP2; else if (CH==CMD_RET_ABORT) { TIMEOUT++; if (TIMEOUT>100) { MSG3("CH376 USB Mode Error"); return 2; } goto STEP1; } STEP2: CH = CH376_ReadDATA (); if (CH==USB_INT_CONNECT) // CH==0x15 { TIMEOUT=0; CH376_ResetALL(); CH = CH376_SetUSBMode (); if (CH==CMD_RET_SUCCESS) // CH==0x51 { STEP3: CH = CH376_ReadDATA (); if (CH!=USB_INT_CONNECT) { TIMEOUT++; if (TIMEOUT>100) { MSG3("Flash Removed!"); return 3; // } goto STEP3; } } } CH = CH376_CheckDeviceConnection(); // Host file mode/SD card not supported: // Check if the disk is connected. Output interrupt if (CH376_InterrupReturnedCodes (CH)!=0) return 3; CH = CH376_MountDevice(); // Host file mode: Initialize the disk and test if the // disk is ready. Output interrupt if (CH376_InterrupReturnedCodes (CH)!=0) return 4; MSG3("CH376 Activation Successful"); return 0; } команды MSG2 & MSG3 не китайские - вывод сообщения на LCD... Не понятно, зачем каждый раз проверять подключен ли модуль командой CH376_CheckConnection. Я пробовал ее убрать - У меня модуль начал периодически зависать на следующей команде CH376_ResetALL!!! Не понятно, зачем дважды делается CH376_ResetALL?!! И вообще зачем его делать при каждом обращении к модулю? И еще! Зачем здесь проверяется не удалена ли Flash? Кстати для справки коллегам! В CH376DS1.pdf не описаны правила задания имени файла! Так вот! Каждое имя должно заключаться в ограничители '/' или '\'!!! Выглядеть это должно так: Код (C++): ReadSize = FLASH_ReadFileName ("/String23.txt/"); С Уважением, Onic
Думаю. последний слеш лишний, попробуйте без него. А первый - это обозначение корня файловой системы, типичная запись для Линукс
Привет b707! Что тут думать? Внутри китайской функции FLASH_ReadFileName анализ на наличие вначале и в конце одного из двух ограничителей... Удачи!