Помогите с интерфейсом Arduino с AMTP32M VOICE IC

Я пытаюсь получить управление чипом Aplus aMTP32M (хранит аудиосэмплы) с помощью Arduino. этот amtp32m ic обеспечивает ПОСЛЕДОВАТЕЛЬНЫЙ РЕЖИМ ЦП, он поставляется с DATA и CLOCK pin. Я пробую режим Spi с Amtp32m ic, но он не работает.

Пожалуйста, помогите мне в этом. Ссылка для DATASHEET AMTP32M IC - http: //www.aplusinc.com.tw/proimages/Mtp%20Vioce%20Ic/aMTP32M/aMTP32M/Datasheet/aMTPxxM-Datasheet_V1.1_20141216.pdf

, 👍1


2 ответа


Лучший ответ:

1

Хорошо, я попробовал приведенный ниже код для последовательного режима. все работает отлично...

type def union
  {
unsigned char BYTE;
struct
{
    unsigned        BIT0:1;
    unsigned        BIT1:1;
    unsigned        BIT2:1;
    unsigned        BIT3:1;
    unsigned        BIT4:1;
    unsigned        BIT5:1;
    unsigned        BIT6:1;
    unsigned        BIT7:1;
};
}ByteToBit;



void Play(unsigned char Val)
{
  ByteToBit SectionNo;

  SectionNo.BYTE = Val;

CLOCK = 1;
DATA  = 0;
CLOCK = 0;

DATA  = SectionNo.BIT0;
CLOCK = 1;
CLOCK = 0;
DATA  = SectionNo.BIT1;
CLOCK = 1;
CLOCK = 0;
DATA  = SectionNo.BIT2;
CLOCK = 1;
CLOCK = 0;
DATA  = SectionNo.BIT3;
CLOCK = 1;
CLOCK = 0;
DATA  = SectionNo.BIT4;
CLOCK = 1;
CLOCK = 0;
DATA  = SectionNo.BIT5;
CLOCK = 1;
CLOCK = 0;
DATA  = SectionNo.BIT6;
CLOCK = 1;
CLOCK = 0;
DATA  = SectionNo.BIT7;
CLOCK = 1;
CLOCK = 0;

DATA  = 0;
CLOCK = 1;
DATA  = 1;                                      

return ;
}


 void main(void)
 {
    unsigned char SectionNo;

CLOCK = 1;
DATA  = 1;      

SectionNo = 0x00;
while(1)
{
    Play(SectionNo);
    Delay_1mS();        // Ожидание времени установки BUSY...
    while(BUSY);        // Воспроизведение голоса...
    SectionNo++;
}

return ;
}
,

0

согласно этому: он больше похож на I2C, чем на SPI. в любом случае, это всего лишь двухпроводной пользовательский последовательный интерфейс. вы можете использовать любые 2 GPIO для этой цели. для отправки байта необходимо:

  1. инициализировать 2 GPIOS (CLK_IO и DAT_IO) для вывода, высокий уровень.
  2. установить DAT_IO на низкий уровень
  3. подождите не менее 1 мкс (в соответствии со спецификацией версии 1.1, стр. 18), затем установите низкий уровень CLK_IO.
  4. поместите значение бита D0 в DAT_IO
  5. переключите CLK_IO (установите высокий уровень, подождите не менее 1 мс, установите низкий уровень)
  6. выполните шаги 4 и 5 для всех оставшихся битов.
  7. в конце установите CLK_IO на высокий уровень
  8. подождите не менее 1 мкс и установите высокий уровень DAT_IO.
,

спасибо за ваш повтор. Я попробую ваши предложения., @Arun

Согласно техническому описанию на странице 25, было бы намного проще использовать параллельный режим, чем последовательный., @hcheung

hcheung.. Да, параллельный режим намного проще. Но он дает только 32 раздела для хранения аудио. в последовательном режиме он дает 255 разделов для хранения аудио., @Arun