Показано с 1 по 1 из 1
  1. #1
    Продвинутый
    Регистрация
    15.12.2008
    Возраст
    38
    Сообщений
    229
    Вес репутации
    400

    По умолчанию Arduino+звуковой модуль WT588d

    Приехал ко мне звуковой модуль wt588d
    Datasheet

    Имеет флеш память от 2 до 32 Мбит серии 25xx для хранения файлов и настроек.
    Позволяет напрямую подключить динамик до 0,5Вт 8Ом.
    Управляется кнопками, либо SPI, либо по однопроводной шине.
    Питание 2,8-5,5В, 10мкА в режиме сна.
    Существует два варианта модуля: WT588D и WT588D-U. Второй раза в два больше и имеет встроенный usb загрузчик. Я, конечно, легких путей не искал, и выбрал первый в погоне за компактностью.

    Загрузка
    Для загрузки производитель предлагает программатор. Типа такого. Кроме того, здесь описан способ записи в модуль без usb с помощью модуля с usb. Но это не наш путь. Для загрузки вполне достаточно ардуины.
    Сначала необходимо сформировать файл для записи. Для этого существует утилита, работа с которой очень подробно расписана здесь (там же ссылка на скачивание). Добавить к этому нечего. Заливаем звук, выставляем настройки и получаем файл с расширением bin.
    Для записи подключил модуль к ардуино по следующей схеме.
    Нажмите на изображение для увеличения. 

Название:	SPIarduino.jpg 
Просмотров:	219 
Размер:	24.9 Кб 
ID:	19569
    Без питания самого модуля (нога 16) и притягивания ресета к земле флешка на связь не вышла.

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

    Скетч для ардуино загрузчика под кнопкой "Инструкция" вместе с другими комментариями.
    Может, сгодится и для других целей, когда есть необходимость записи SPI флеш памяти.

    Управление
    Здесь все просто. Однопроводная шина + ресет по даташиту. Без ресета тоже работает.
    PHP код:
    #define RES 14
    #define IO 5
    byte i=0;
    byte a=0;

    void setup(void)
    {
      
    pinMode(RES,OUTPUT);
      
    pinMode(IO,OUTPUT);
      
    digitalWrite(RES,HIGH);
      
    digitalWrite(IO,HIGH);
      
    Serial.begin(9600);
      
    //wt_com(3); 
    }

    void loop (void)
    {
      if(
    Serial.available()!=0)
      {
        
    a=Serial.read();
        
    //Serial.write(a);
        
    wt_com(a);
      }
    }

    void wt_com(byte adr)
    {
      
    digitalWrite(RES,LOW);
      
    delay(5);
      
    digitalWrite(RES,HIGH);
      
    delay(17);
      
    digitalWrite(IO,LOW);
      
    delay(5);
      for(
    i=0;i<8;i++)
      { 
        
    digitalWrite(IO,HIGH);
        if(
    bitRead(adr,i))
        { 
          
    delayMicroseconds(600);
          
    digitalWrite(IO,LOW);
          
    delayMicroseconds(300);
        }
        else 
        {
          
    delayMicroseconds(300);
          
    digitalWrite(IO,LOW);
          
    delayMicroseconds(600);
        }
      }
      
    digitalWrite(IO,HIGH);

    Вложения Вложения
    Последний раз редактировалось manu_245; 25.02.2020 в 22:23.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •