Здраво Знатоки! Нужна помощь по настройке 1901ВЦ1Т, информации от сообщества об этом микроконтроллере мало, изучаю по даташиту - но в нем некоторые настройки нестыкуются с поставляемыми библиотеками. Сейчас просто хочу завести DSP и выдать набор импульсов с аудиовыхода. Даташит перечитал аж по диагонали
, выставил настройки проца, но DSP не заводится, дайте вектор движения куда нужно еще смотреть по настройкам данного проца.
filename audioGen.c
PHP код:
|
void audioGen(void){
//Подать синхросигнал на DSP подсистему.
RST_CLK -› DSP_CLOCK |= (1 ‹‹ RST_CLK_DSP_CLOCK_DSP_CLK_EN_Pos);
//возможно эта настройка не нужна
//аудио выходы висят на выходах DAC значит нужно включить тактирование переферии DAC
MDR_RST_CLK -› PER_CLOCK |= (1‹‹18); //включаю тактирование DAC
//- Снять сброс с периферии DSP (см. “Организация управления DSP подсистемой”).
/*вывести подсистему из состояния сброса
он может только после подачи синхросигнала CLK_DSP*/
RST_CLK -› DSP_CONTROL_STATUS |= (0 ‹‹ RST_CLK_DSP_CONTROL_STATUS_RST_DSP_ALL_Pos);//общий сброс dsp, 0 – DSP подсистема работает.
RST_CLK -› DSP_CONTROL_STATUS |= (1 ‹‹ RST_CLK_DSP_CONTROL_STATUS_RST_DSP_CPU_Pos);//1 – Ядро находятся в сбросе.
RST_CLK -› DSP_CONTROL_STATUS |= (0 ‹‹ RST_CLK_DSP_CONTROL_STATUS_RST_DSP_CPU);//0 – Ядро выполняет программу
RST_CLK -› DSP_CONTROL_STATUS |= (0 ‹‹ RST_CLK_DSP_CONTROL_STATUS_RST_DSP_PER_Pos);// 0 – Периферийные блоки работают.
// Подать синхросигнал на модуль Aудиокодек.
MDR_RST_CLK -› PER_CLOCK |= (1 ‹‹ 28);
// Записать в FIFO DAC 16 отсчетов (регистр DACREG)
DSP_ACD -› DACREG = 0xff;
RST_CLK -› ADC_MCO_CLOCK |= (1 ‹‹ RST_CLK_ADC_MCO_CLOCK_ADC_CLK_EN_Pos);//Бит разрешения выдачи тактовой частоты AUC CLK
// Настроить DAC припомощи регистра DACCTL
/*вкл/выкл выходов OUTP1/OUTM1 (микрофон, наушники) ODAMP и вкл/выкл аналоговой части ЦАП ODDAC. Всей схемы ЦАП (DACRES)*/
DSP_ACD -› DACCTL |= (0 ‹‹ DSP_ACD_DACCTL_ODAMP_Pos) | (0 ‹‹ DSP_ACD_DACCTL_ODDAC_Pos) | (0 ‹‹ DSP_ACD_DACCTL_DACRES_Pos);
// Включить DAC и выбрать фильтр (регистр POWCTL). При этом цифровая и аналоговая обратные связи должны быть обнулены.
DSP_ACD -› POWCTL |= (1 ‹‹ DSP_ACD_POWCTL_DACEN_Pos);
// Настроить DAC припомощи регистра DACCTL
/*вкл/выкл выходов OUTP1/OUTM1 (микрофон, наушники) ODAMP и вкл/выкл аналоговой части ЦАП ODDAC. Всей схемы ЦАП (DACRES)*/
DSP_ACD -› DACCTL |= (1 ‹‹ DSP_ACD_DACCTL_ODAMP_Pos) | (1 ‹‹ DSP_ACD_DACCTL_ODDAC_Pos) | (1 ‹‹ DSP_ACD_DACCTL_DACRES_Pos);
}
|
PHP код:
|
filename main.c
#include "MDR32Fx.h"
#include "stdint.h"
#include "1901BC1F.h"
#include "audioGen.c"
void main(void){
//создаю массив данных для записи в FIFO
uint8_t fifo[16] = {
0x0,0x1,0x2,0x3,
0x4,0x5,0x6,0x7,
0x8,0x9,0x10,0x11,
0x12,0x13,0x14,0x15
};
uint8_t index = 0;
//НАСТРОЙКА ПОРТА
MDR_RST_CLK -› PER_CLOCK |= (1 ‹‹ 22); //включаю тактирование порта Б
MDR_PORTB -› PWR |= (0x2 ‹‹ PORT_PWR11_Pos) |// настройка режима вывода порта
(0x2 ‹‹ PORT_PWR12_Pos) |
(0x2 ‹‹ PORT_PWR13_Pos) |
(0x2 ‹‹ PORT_PWR14_Pos) |
(0x2 ‹‹ PORT_PWR15_Pos);
MDR_PORTB -› ANALOG |= (1‹‹11) | (1‹‹12) | (1‹‹13) | (1‹‹14) | (1‹‹15); //установка битов нужных выводов в режим работы контроллера цифровой
MDR_PORTB -› OE |= (1‹‹11) | (1‹‹12) | (1‹‹13) | (1‹‹14) | (1‹‹15); // установка битов нужных выводов на выход
audioGen();
while(1){
if(DSP_ACD -› IRQFLAG = DSP_ACD_IRQFLAG_ADCNS_Pos){
MDR_PORTB -› RXTX |= (1‹‹11); // 15 данные для чтения на выводы (просто передаю единицу)
//Записать в FIFO DAC 16 отсчетов (регистр DACREG)
DSP_ACD -› DACREG = fifo[index];
if(index == 16){
index = 0;
}else{index++;}
}
}
}
|