Помогите с интерфейсом 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
@Arun, 👍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 ;
}
,
@Arun
▲ 0
согласно этому: он больше похож на I2C, чем на SPI. в любом случае, это всего лишь двухпроводной пользовательский последовательный интерфейс. вы можете использовать любые 2 GPIO для этой цели. для отправки байта необходимо:
- инициализировать 2 GPIOS (CLK_IO и DAT_IO) для вывода, высокий уровень.
- установить DAT_IO на низкий уровень
- подождите не менее 1 мкс (в соответствии со спецификацией версии 1.1, стр. 18), затем установите низкий уровень CLK_IO.
- поместите значение бита D0 в DAT_IO
- переключите CLK_IO (установите высокий уровень, подождите не менее 1 мс, установите низкий уровень)
- выполните шаги 4 и 5 для всех оставшихся битов.
- в конце установите CLK_IO на высокий уровень
- подождите не менее 1 мкс и установите высокий уровень DAT_IO.
,
@Tirdad Sadri Nejad
Смотрите также:
- Как использовать SPI на Arduino?
- avrdude ser_open() can't set com-state
- Float печатается только 2 десятичных знака после запятой
- ошибка: espcomm_upload_mem failed при загрузке скетча
- Печать массива байтов на экране последовательного монитора Arduino IDE
- Разные и самые быстрые способы вычисления синусов и косинусов в Arduino
- OVF в последовательном мониторе вместо данных
- Arduino IDE Отказано В Разрешении На Загрузку, Ubuntu
спасибо за ваш повтор. Я попробую ваши предложения., @Arun
Согласно техническому описанию на странице 25, было бы намного проще использовать параллельный режим, чем последовательный., @hcheung
hcheung.. Да, параллельный режим намного проще. Но он дает только 32 раздела для хранения аудио. в последовательном режиме он дает 255 разделов для хранения аудио., @Arun