Использование модуля на микросхеме CH376S (USB Read/Write module)

     Практическое использование модуля на микросхеме CH376S (часть 1)



     Прежде чем начать, сообщу что данные записи это выдержки из моих экспериментов по работе с данным модулем, хочу как-то систематизировать эту работу для себя и думаю это будет интересно многим. Есть очень хорошая статейка (eng) для Arduino, где описывается работа с этим устройством, хотя там есть некоторые ошибки, которые автор признал, но в коде не поправил, и только из комментариев это можно узнать. Моя цель не писать скетчи для Arduino, а научиться использовать данную микросхему для микроконтроллеров AVR (хотя в этой области я ещё профан),  что необходимо для моего проекта, о котором как-нибудь поведаю.


    Модуль для Arduino на микросхеме CH376S (File manage and control chip CH376) можно использовать для прямого чтения, записи и др. с USB flash устройств (поддерживает файловые системы FAT12/FAT16/FAT32 объёмом не более 32Gb). 

Схема подключения к модулю
Как видно на картинке к нему можно подключаться по трём интерфейсам:
- 8 bit paralel interface;
- UART;
- SPI.
 Я же пока буду использовать UART 
    Для экспериментов с данным модулем необходима программа для работы с COM портом Terminal (это же как вариант) или Docklight  ну и сам переходник на ваше усмотрение.
например такой (на микросхеме PL2303)
    Итак, подключаемся (схема подключения напомню приведена выше). 

Интерфейсный чип CH376S при первом включении настроен на скорость 9600 бод (8 бит данных, 1 стоп бит, остальное none), конечно же скорость приёма-передачи можно изменять в широких пределах.  

нстройки COM порта
    CH376S использует определённый список команд, который неплохо описан в DataSheet, хотя далеко не с первого раза у меня получилось с ним работать и было много нюансов.
  Так-как список команд в DataSheet приведен в шестнадцатеричном виде, то и мы для удобства будем её использовать.
 Если вы будете использовать программу Terminal, то для передачи данных в шестнадцатеричной системе счисления необходимо писать так (перед каждым числом ставим знак $): $57$AB и т.д. Я буду везде писать в таком виде (кроме случаев когда мы будем получать ответ от микроконтроллера), а вы имейте это ввиду. 
нажимаем в Terminal кнопку Connect

    Любая команда для  CH376S начинается с "синхрнизационных" двух байт: 
$57$AB и далее следует команда

  В своих экспериментах я понял, что для корректной работы и правильных результатов, необходима определённая последовательность команд и при её несоблюдении вы можете столкнуться с ошибками (об ошибках мы поговорим в другой раз). 

Обычная последовательность действий для подключения USB Flash:
1. $57$AB$05 - сброс контроллера (RESET_ALL);
2. $57$AB$15$06 - переключение в режим USB (SET_USB_MODE) - ответ должен быть: 51 15 (значит всё хорошо, продолжаем); 
3. $57$AB$30 - подключение USB Flash (DISK_CONNECT) - ответ должен быть: 14 (значит всё хорошо, продолжаем);
4. $57$AB$31 - монтируем USB Flash (DISK_MOUNT) ответ должен быть: 14 (значит всё хорошо, продолжаем);
Теперь наше USB Flash устройство подключено и мы можем продолжить
 Для примера введём последовательность:
    $57$AB$27 - получение сведений об устройстве (RD_USB_DATA0) - ответ будет в зависимости от устройства разным, но примерно таким:

А теперь переведем всё это в читаемый вид ASCII (переведем переключатель на ASCII) и повторим все команды:
Ну вот и всё, мы получили сведения о подключенном устройстве USB Flash

    Надеюсь эта статейка поможет кому-нибудь в изучении данного модуля, чипа CH376S.
     В следующий раз разберемся как обращаться к файлам, как открыть, как получать их размер (и как его конвертировать в читаемый вид),  и ещё чего-нибудь..))
Не судите строго, старался сделать всё доходчиво, но может чего и упустил.
Продолжение следует .... 

Комментарии