Миландр

Ключевым подразделением нашей компании является Центр Проектирования интегральных микросхем
Текущее время: 2017-дек-17 01:28

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 46 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: Re: Контроллер McBSP и T1/E1
СообщениеДобавлено: 2013-авг-29 10:55 
Не в сети

Зарегистрирован: 2011-апр-21 07:31
Сообщения: 31
Откуда: АО "ПКК Миландр"
Алгоритм писал(а):
Скажите, пожалуйста, фирма "Миландр" не планирует выпускать фреймеры T1/E1/J1?

Просто отечественных в интерненте что-то я не нашел

многоканальными фреймерами в виде отдельных устройств с приемкой занимается ОАО "БЭТО" (Уфа) - смотрите УСЛ в их продукции


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Контроллер McBSP и T1/E1
СообщениеДобавлено: 2014-апр-25 11:44 
Не в сети

Зарегистрирован: 2013-дек-19 09:39
Сообщения: 19
Есть у кого пример инициализации BSP из под RISC ядра?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Контроллер McBSP и T1/E1
СообщениеДобавлено: 2014-апр-28 11:58 
Не в сети

Зарегистрирован: 2010-июл-08 08:50
Сообщения: 733
Откуда: АО "ПКК Миландр"
Инициализация McBSP1 для приема/передачи данных с микросхем 1321ХД1 и 1321ХД2 по SSI-интерфейсу.
Открыть Код иницииализации
Код:
void McBsp1TxConfig()
{
//Configuration McBSP1 for transmitt data
   DSP_BSP1->SPSA = 0x0000;
   DSP_BSP1->CtrlD = 0x6000;

//config XCRL (Регистр управления передатчиком)
   DSP_BSP1->SPSA = 0x0004;
   DSP_BSP1->CtrlD = 0x008F;   //1 слово 16 бит
//config XCRH (Регистр управления передатчиком)
   DSP_BSP1->SPSA = 0x0005;
   DSP_BSP1->CtrlD = 0x0000;

//config SRGRL (Регистр управления генераторами битовой и кадровой синхронизации)
//   DSP_BSP1->SPSA = 0x0006;
//   DSP_BSP1->CtrlD = 0x004F;   //FWID[7:0] (CLKGDV[7:0] = 0x0B -> CLK = 80MHz/11 = 7.272MHz)(CLKGDV[7:0] = 0x50 -> CLK = 80MHz/80 = 1MHz)
//config SRGRH (Регистр управления генераторами битовой и кадровой синхронизации)
   DSP_BSP1->SPSA = 0x0007;
   DSP_BSP1->CtrlD = 0x80000000;   //Синхронизации от внешнего источника

//config PCRL (Регистр управления выводами)
   DSP_BSP1->SPSA = 0x000E;
//   DSP_BSP1->CtrlD = 0x00002A00;   //0x00001F00 - для внутреннего тактирования
   DSP_BSP1->CtrlD = 0x3008;   //0x00001F00 - для внутреннего тактирования

//config MCRL (Регистр управления многоканальными режимами приема и передачи)
   DSP_BSP1->SPSA = 0x0008;
   DSP_BSP1->CtrlD = 0x00000000;
//config MCRH (Регистр управления многоканальными режимами приема и передачи)
   DSP_BSP1->SPSA = 0x0009;
   DSP_BSP1->CtrlD = 0xFF000000;

//config XCERL (Регистр маски передатчика)
   DSP_BSP1->SPSA = 0x000A;
   DSP_BSP1->CtrlD = 0x08BF;
//config XCERH (Регистр маски передатчика)
   DSP_BSP1->SPSA = 0x000B;
   DSP_BSP1->CtrlD = 0;

//config SPCRL (Регистр общего управления)
   DSP_BSP1->SPSA = 0x0000;
//   DSP_BSP1->CtrlD = 0x0000EA0B;   //режим КЗ, ПРМ вкл., ПРД вкл., слово - 4 байта, DX вкл.
   DSP_BSP1->CtrlD = 0x500B;   //ПРД вкл., слово - 4 байта, DX вкл.
//config SPCRH (Регистр общего управления)
   DSP_BSP1->SPSA = 0x0001;
   DSP_BSP1->CtrlD = 0xC0000000;       //событие DMA - заполненный FIFO буфер приемника; прерывание - заполненный FIFO буфер приемника
//Configuration of McBSP complete   
}


void McBsp1RxConfig(uint8_t  param)
{

   //Configuration McBSP1 for transmitt data
   DSP_BSP1->SPSA = 0x0000;
   DSP_BSP1->CtrlD = 0x6000;

   if(param == 0)
   {
   //config RCRL (Регистр управления приемником)
      DSP_BSP1->SPSA = 0x0002;
      DSP_BSP1->CtrlD = 0x009F;   //1 слово, 32 бита (I -> 16 бит, Q -> 16 бит)
   //config RCRH (Регистр управления приемником)
      DSP_BSP1->SPSA = 0x0003;
      DSP_BSP1->CtrlD = 0x0000;
   }
   else
   {
   //config RCRL (Регистр управления приемником)
      DSP_BSP1->SPSA = 0x0002;
//      DSP_BSP1->CtrlD = 0x01B7;   //2 слова, по 24 бита   (I -> 24 бита, Q -> 24 бита)
      DSP_BSP1->CtrlD = 0x0197;   //2 слова, по 24 бита   (I -> 24 бита, Q -> 24 бита)
   //config RCRH (Регистр управления приемником)
      DSP_BSP1->SPSA = 0x0003;
      DSP_BSP1->CtrlD = 0x0000;
   }
//config SRGRL (Регистр управления генераторами битовой и кадровой синхронизации)
//config SRGRH (Регистр управления генераторами битовой и кадровой синхронизации)
   DSP_BSP1->SPSA = 0x0007;
   DSP_BSP1->CtrlD = 0x80000000;   //синхронизация от внешнего источника

//config PCRL (Регистр управления выводами)
   DSP_BSP1->SPSA = 0x000E;
   DSP_BSP1->CtrlD = 0x1000;   //0x00001F00 - для внутреннего тактирования

//config MCRL (Регистр управления многоканальными режимами приема и передачи)
   DSP_BSP1->SPSA = 0x0008;
   DSP_BSP1->CtrlD = 0x00000000;
//config MCRH (Регистр управления многоканальными режимами приема и передачи)
   DSP_BSP1->SPSA = 0x0009;
   DSP_BSP1->CtrlD = 0xFF000000;

//config RCERL (Регистр маски приемника)
   DSP_BSP1->SPSA = 0x000C;
   DSP_BSP1->CtrlD = 0xFFFF;
//config RCERH (Регистр маски приемника)
   DSP_BSP1->SPSA = 0x000D;
   DSP_BSP1->CtrlD = 0xFFFF0000;

//config SPCRL (Регистр общего управления)
   DSP_BSP1->SPSA = 0x0000;
   DSP_BSP1->CtrlD = 0x6007;   //ПРМ вкл., слово - 4 байта.
//config SPCRH (Регистр общего управления)
   DSP_BSP1->SPSA = 0x0001;
   DSP_BSP1->CtrlD = 0x80500000;       //прерывание - заполненный наполовину FIFO буфер приемника
//Configuration of McBSP complete   
}
Закрыть


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Контроллер McBSP и T1/E1
СообщениеДобавлено: 2014-апр-30 07:31 
Не в сети

Зарегистрирован: 2013-дек-19 09:39
Сообщения: 19
Petr писал(а):
Инициализация McBSP1 для приема/передачи данных с микросхем 1321ХД1 и 1321ХД2 по SSI-интерфейсу.
Открыть Код иницииализации
Код:
void McBsp1TxConfig()
{
//Configuration McBSP1 for transmitt data
   DSP_BSP1->SPSA = 0x0000;
   DSP_BSP1->CtrlD = 0x6000;

//config XCRL (Регистр управления передатчиком)
   DSP_BSP1->SPSA = 0x0004;
   DSP_BSP1->CtrlD = 0x008F;   //1 слово 16 бит
//config XCRH (Регистр управления передатчиком)
   DSP_BSP1->SPSA = 0x0005;
   DSP_BSP1->CtrlD = 0x0000;

//config SRGRL (Регистр управления генераторами битовой и кадровой синхронизации)
//   DSP_BSP1->SPSA = 0x0006;
//   DSP_BSP1->CtrlD = 0x004F;   //FWID[7:0] (CLKGDV[7:0] = 0x0B -> CLK = 80MHz/11 = 7.272MHz)(CLKGDV[7:0] = 0x50 -> CLK = 80MHz/80 = 1MHz)
//config SRGRH (Регистр управления генераторами битовой и кадровой синхронизации)
   DSP_BSP1->SPSA = 0x0007;
   DSP_BSP1->CtrlD = 0x80000000;   //Синхронизации от внешнего источника

//config PCRL (Регистр управления выводами)
   DSP_BSP1->SPSA = 0x000E;
//   DSP_BSP1->CtrlD = 0x00002A00;   //0x00001F00 - для внутреннего тактирования
   DSP_BSP1->CtrlD = 0x3008;   //0x00001F00 - для внутреннего тактирования

//config MCRL (Регистр управления многоканальными режимами приема и передачи)
   DSP_BSP1->SPSA = 0x0008;
   DSP_BSP1->CtrlD = 0x00000000;
//config MCRH (Регистр управления многоканальными режимами приема и передачи)
   DSP_BSP1->SPSA = 0x0009;
   DSP_BSP1->CtrlD = 0xFF000000;

//config XCERL (Регистр маски передатчика)
   DSP_BSP1->SPSA = 0x000A;
   DSP_BSP1->CtrlD = 0x08BF;
//config XCERH (Регистр маски передатчика)
   DSP_BSP1->SPSA = 0x000B;
   DSP_BSP1->CtrlD = 0;

//config SPCRL (Регистр общего управления)
   DSP_BSP1->SPSA = 0x0000;
//   DSP_BSP1->CtrlD = 0x0000EA0B;   //режим КЗ, ПРМ вкл., ПРД вкл., слово - 4 байта, DX вкл.
   DSP_BSP1->CtrlD = 0x500B;   //ПРД вкл., слово - 4 байта, DX вкл.
//config SPCRH (Регистр общего управления)
   DSP_BSP1->SPSA = 0x0001;
   DSP_BSP1->CtrlD = 0xC0000000;       //событие DMA - заполненный FIFO буфер приемника; прерывание - заполненный FIFO буфер приемника
//Configuration of McBSP complete   
}


void McBsp1RxConfig(uint8_t  param)
{

   //Configuration McBSP1 for transmitt data
   DSP_BSP1->SPSA = 0x0000;
   DSP_BSP1->CtrlD = 0x6000;

   if(param == 0)
   {
   //config RCRL (Регистр управления приемником)
      DSP_BSP1->SPSA = 0x0002;
      DSP_BSP1->CtrlD = 0x009F;   //1 слово, 32 бита (I -> 16 бит, Q -> 16 бит)
   //config RCRH (Регистр управления приемником)
      DSP_BSP1->SPSA = 0x0003;
      DSP_BSP1->CtrlD = 0x0000;
   }
   else
   {
   //config RCRL (Регистр управления приемником)
      DSP_BSP1->SPSA = 0x0002;
//      DSP_BSP1->CtrlD = 0x01B7;   //2 слова, по 24 бита   (I -> 24 бита, Q -> 24 бита)
      DSP_BSP1->CtrlD = 0x0197;   //2 слова, по 24 бита   (I -> 24 бита, Q -> 24 бита)
   //config RCRH (Регистр управления приемником)
      DSP_BSP1->SPSA = 0x0003;
      DSP_BSP1->CtrlD = 0x0000;
   }
//config SRGRL (Регистр управления генераторами битовой и кадровой синхронизации)
//config SRGRH (Регистр управления генераторами битовой и кадровой синхронизации)
   DSP_BSP1->SPSA = 0x0007;
   DSP_BSP1->CtrlD = 0x80000000;   //синхронизация от внешнего источника

//config PCRL (Регистр управления выводами)
   DSP_BSP1->SPSA = 0x000E;
   DSP_BSP1->CtrlD = 0x1000;   //0x00001F00 - для внутреннего тактирования

//config MCRL (Регистр управления многоканальными режимами приема и передачи)
   DSP_BSP1->SPSA = 0x0008;
   DSP_BSP1->CtrlD = 0x00000000;
//config MCRH (Регистр управления многоканальными режимами приема и передачи)
   DSP_BSP1->SPSA = 0x0009;
   DSP_BSP1->CtrlD = 0xFF000000;

//config RCERL (Регистр маски приемника)
   DSP_BSP1->SPSA = 0x000C;
   DSP_BSP1->CtrlD = 0xFFFF;
//config RCERH (Регистр маски приемника)
   DSP_BSP1->SPSA = 0x000D;
   DSP_BSP1->CtrlD = 0xFFFF0000;

//config SPCRL (Регистр общего управления)
   DSP_BSP1->SPSA = 0x0000;
   DSP_BSP1->CtrlD = 0x6007;   //ПРМ вкл., слово - 4 байта.
//config SPCRH (Регистр общего управления)
   DSP_BSP1->SPSA = 0x0001;
   DSP_BSP1->CtrlD = 0x80500000;       //прерывание - заполненный наполовину FIFO буфер приемника
//Configuration of McBSP complete   
}
Закрыть


Спасибо, а в GPIO выводы нужно назначать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Контроллер McBSP и T1/E1
СообщениеДобавлено: 2014-апр-30 10:07 
Не в сети

Зарегистрирован: 2010-июл-08 08:50
Сообщения: 733
Откуда: АО "ПКК Миландр"
конечно, необходимо выбирать соответствующую функцию порта. Также до инициализации McBSP должны быть включены необходимые тактовые сигналы DSP-подсистемы (регистры MDR_RST_CLK->DSP_CLOCK, MDR_RST_CLK->DSP_CONTROL_STATUS, DSP_CLK->CLKMD)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Контроллер McBSP и T1/E1
СообщениеДобавлено: 2014-апр-30 10:23 
Не в сети

Зарегистрирован: 2013-дек-19 09:39
Сообщения: 19
Код:
  BSP_INIT.PORT_Pin=(PORT_Pin_8|PORT_Pin_9|PORT_Pin_10|PORT_Pin_11);
  BSP_INIT.PORT_FUNC = PORT_FUNC_OVERRID;
  PORT_Init(PORTC, &BSP_INIT);

Для GPIO этого достаточно?

DSP ядро затактировал, аудиокодек работает.

Сейчас пытаюсь, для начала, сгенерировать кадровые и битовые импульсы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Контроллер McBSP и T1/E1
СообщениеДобавлено: 2014-апр-30 10:33 
Не в сети

Зарегистрирован: 2010-июл-08 08:50
Сообщения: 733
Откуда: АО "ПКК Миландр"
а как же настройка регистров ANALOG и PWR порта С?
их также необходимо настраивать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Контроллер McBSP и T1/E1
СообщениеДобавлено: 2014-апр-30 10:59 
Не в сети

Зарегистрирован: 2013-дек-19 09:39
Сообщения: 19
Спасибо, получилось так)
Синхронизация завелась, буду копать дальше.
Код:
BSP_INIT.PORT_Pin=(PORT_Pin_8|PORT_Pin_9|PORT_Pin_10|PORT_Pin_11);
BSP_INIT.PORT_FUNC=PORT_FUNC_OVERRID;
BSP_INIT.PORT_MODE=PORT_MODE_DIGITAL;
BSP_INIT.PORT_SPEED = PORT_SPEED_MAXFAST;
PORT_Init(PORTC, &BSP_INIT);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Контроллер McBSP и T1/E1
СообщениеДобавлено: 2014-сен-11 08:54 
Не в сети

Зарегистрирован: 2012-июн-01 14:12
Сообщения: 38
Добрый день!

Возобновив работы после длительного перерыва, столкнулся с проблемой.

В настройке блока McBSP использую следующий код (пишу в CodeMaster ARM)
Код:
// SRGRL
   DSP_BSP1->SPSA = MCBSP_SPSA_SRGRL_NUM;
   DSP_BSP1->CtrlD = ((0 <<MCBSP_SRGRL_FWID_SHIFT_FIELD)& MCBSP_SRGRL_FWID_SHIFT_MASK)   
                     |  ((255 <<MCBSP_SRGRL_CLKGDV_SHIFT_FIELD)& MCBSP_SRGRL_CLKGDV_SHIFT_MASK)
                     ;
   // SRGRH
   DSP_BSP1->SPSA = MCBSP_SPSA_SRGRH_NUM;
   DSP_BSP1->CtrlD = 4095
                     |((0 <<MCBSP_SRGRH_GSYNC_SHIFT_FIELD)& MCBSP_SRGRH_GSYNC_SHIFT_MASK)
                     |((0 <<MCBSP_SRGRH_FSGM_SHIFT_FIELD)& MCBSP_SRGRH_FSGM_SHIFT_MASK)
                     |((0 <<MCBSP_SRGRH_CLKSM_SHIFT_FIELD)& MCBSP_SRGRH_CLKSM_SHIFT_MASK)
                     |((0 <<MCBSP_SRGRH_CLKSP_SHIFT_FIELD)& MCBSP_SRGRH_CLKSP_SHIFT_MASK)
                     |((4095 <<MCBSP_SRGRH_FPER_SHIFT_FIELD)& MCBSP_SRGRH_FPER_SHIFT_MASK)
                     ;


Собственно первое присвоение проходит нормально, а второе нет. Почему такое может быть? Ведь тактирование для регистров не раздельно? Спасибо за ответы!


Вложения:
Комментарий к файлу: Исходный проект для CodeMaster ARM
2.ZIP [367.32 КБ]
Скачиваний: 98
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Контроллер McBSP и T1/E1
СообщениеДобавлено: 2014-сен-11 09:34 
Не в сети

Зарегистрирован: 2012-июн-01 14:12
Сообщения: 38
Выяснил, что если в отладчике писать (присваивать) значение 0xaaaabbbb, то в регистре вижу: 0x0000aaaa.

Проверил в коде - работает! На осциллографе вижу изменения. В спецификации биты с 0 по 15 используются. Что несоответствует? Как пишется память?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Контроллер McBSP и T1/E1
СообщениеДобавлено: 2014-сен-11 14:42 
Не в сети

Зарегистрирован: 2010-июл-08 08:50
Сообщения: 733
Откуда: АО "ПКК Миландр"
Если вы осуществляете запись в McBSP со стороны RISC, то в регистры по четным значениям SPSA необходимо данные размещать в младших 16-ти разрядах 32-битного слова, а по нечетным значениям - в старших 16-ти разрядах 32-битного слова. При этом при чтении любого регистра данные находятся в младших 16-ти разрядах 32-битного слова. То есть:
DSP_BSP1->SPSA = 2; //регистр RCRL
DSP_BSP1->CtrlD = 0x0000XXXX;

DSP_BSP1->SPSA = 3; //регистр RCRH
DSP_BSP1->CtrlD = 0xXXXX0000;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Контроллер McBSP и T1/E1
СообщениеДобавлено: 2014-сен-11 14:43 
Не в сети

Зарегистрирован: 2010-июл-08 08:50
Сообщения: 733
Откуда: АО "ПКК Миландр"
Со стороны DSP данные записываются в разряды 0 - 15.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Контроллер McBSP и T1/E1
СообщениеДобавлено: 2014-сен-11 16:12 
Не в сети

Зарегистрирован: 2014-авг-24 14:05
Сообщения: 3
Да и с неотечественными некоторый напряг после сворачивания Максимом далласовской линейки...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Контроллер McBSP и T1/E1
СообщениеДобавлено: 2014-сен-12 10:21 
Не в сети

Зарегистрирован: 2012-июн-01 14:12
Сообщения: 38
Да, ещё было выяснено(поправьте, если не так), что запись 32-х бит по четному номеру регистра изменяет содержимое и нечетного регистра. Для нечетного регистра это неверно.

Код для исследования был такой(модифицировал прошлый проект).

Код:
   DSP_BSP1->SPSA = MCBSP_SPSA_RCRH_NUM;
   // RCRL
   DSP_BSP1->SPSA = MCBSP_SPSA_RCRL_NUM;
   RegistrBSP = (uint16_t *)0x3000004c;
   *RegistrBSP = (uint16_t) 0xabab;
   DSP_BSP1->CtrlD = (uint16_t) 0xababcdcd;

   // RCRH
   DSP_BSP1->SPSA = MCBSP_SPSA_RCRH_NUM;
   DSP_BSP1->CtrlD = 0x0101fefe;
   DSP_BSP1->SPSA = MCBSP_SPSA_XCRL_NUM;


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

Собственно описание этих регистров как 32 битных может повлечь недоразумения и ошибки, однако в библиоеках от Фитон они описаны как 32 битные.

рекомендую использовать код типа:

Код:
      DSP_BSP1->SPSA = MCBSP_SPSA_RCRL_NUM;
   RegistrBSP = (uint16_t *)0x3000004c;
   *RegistrBSP = (uint16_t) 0xabab;


И сразу ещё вопросы:
1. какие ещё особенности работы могут возникнуть с этой областью памяти?
2. Есть ли проект работы с McBSP из-под RISC?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Контроллер McBSP и T1/E1
СообщениеДобавлено: 2014-сен-12 18:48 
Не в сети

Зарегистрирован: 2010-июл-08 08:50
Сообщения: 733
Откуда: АО "ПКК Миландр"
готового примера нет, могу выложить только куски программы
конфигурирование McBSP:
Открыть
void McBsp1TxConfig()
{
//Configuration McBSP1 for transmitt data
DSP_BSP1->SPSA = 0x0000;
DSP_BSP1->CtrlD = 0x6000;

//config XCRL (Регистр управления передатчиком)
DSP_BSP1->SPSA = 0x0004;
DSP_BSP1->CtrlD = 0x008F; //0x000000BF; //1 слово 16 бит
//config XCRH (Регистр управления передатчиком)
DSP_BSP1->SPSA = 0x0005;
DSP_BSP1->CtrlD = 0x0000;

//config SRGRL (Регистр управления генераторами битовой и кадровой синхронизации)
// DSP_BSP1->SPSA = 0x0006;
// DSP_BSP1->CtrlD = 0x004F; //FWID[7:0] (CLKGDV[7:0] = 0x0B -> CLK = 80MHz/11 = 7.272MHz)(CLKGDV[7:0] = 0x50 -> CLK = 80MHz/80 = 1MHz)
//config SRGRH (Регистр управления генераторами битовой и кадровой синхронизации)
DSP_BSP1->SPSA = 0x0007;
// DSP_BSP1->CtrlD = 0x80630000; //0x20630000; //0x800F0000
// DSP_BSP1->CtrlD = 0x800F0000; //0x20630000; //0x800F0000
DSP_BSP1->CtrlD = 0x80000000; //0x20630000; //0x800F0000

//config PCRL (Регистр управления выводами)
DSP_BSP1->SPSA = 0x000E;
// DSP_BSP1->CtrlD = 0x00002A00; //0x00001F00 - для внутреннего тактирования
DSP_BSP1->CtrlD = 0x3008; //0x00001F00 - для внутреннего тактирования

//config MCRL (Регистр управления многоканальными режимами приема и передачи)
DSP_BSP1->SPSA = 0x0008;
DSP_BSP1->CtrlD = 0x00000000;
//config MCRH (Регистр управления многоканальными режимами приема и передачи)
DSP_BSP1->SPSA = 0x0009;
DSP_BSP1->CtrlD = 0xFF000000;

//config XCERL (Регистр маски передатчика)
DSP_BSP1->SPSA = 0x000A;
DSP_BSP1->CtrlD = 0x08BF;
//config XCERH (Регистр маски передатчика)
DSP_BSP1->SPSA = 0x000B;
DSP_BSP1->CtrlD = 0;

//config SPCRL (Регистр общего управления)
DSP_BSP1->SPSA = 0x0000;
// DSP_BSP1->CtrlD = 0x0000EA0B; //режим КЗ, ПРМ вкл., ПРД вкл., слово - 4 байта, DX вкл.
DSP_BSP1->CtrlD = 0x500B; //ПРД вкл., слово - 4 байта, DX вкл.
//config SPCRH (Регистр общего управления)
DSP_BSP1->SPSA = 0x0001;
DSP_BSP1->CtrlD = 0xC0000000; //событие DMA - заполненный FIFO буфер приемника; прерывание - заполненный FIFO буфер приемника
//Configuration of McBSP complete
}

void McBsp1RxConfig(uint8_t param)
{

//Configuration McBSP1 for transmitt data
DSP_BSP1->SPSA = 0x0000;
DSP_BSP1->CtrlD = 0x6000;

if(param == 0)
{
//config RCRL (Регистр управления приемником)
DSP_BSP1->SPSA = 0x0002;
DSP_BSP1->CtrlD = 0x009F; //1 слово, 32 бита (I -> 16 бит, Q -> 16 бит)
//config RCRH (Регистр управления приемником)
DSP_BSP1->SPSA = 0x0003;
DSP_BSP1->CtrlD = 0x0000;
}
else
{
//config RCRL (Регистр управления приемником)
DSP_BSP1->SPSA = 0x0002;
// DSP_BSP1->CtrlD = 0x01B7; //2 слова, по 24 бита (I -> 24 бита, Q -> 24 бита)
DSP_BSP1->CtrlD = 0x0197; //2 слова, по 24 бита (I -> 24 бита, Q -> 24 бита)
//config RCRH (Регистр управления приемником)
DSP_BSP1->SPSA = 0x0003;
DSP_BSP1->CtrlD = 0x0000;
}
//config SRGRL (Регистр управления генераторами битовой и кадровой синхронизации)
//config SRGRH (Регистр управления генераторами битовой и кадровой синхронизации)
DSP_BSP1->SPSA = 0x0007;
DSP_BSP1->CtrlD = 0x80000000; //синхронизация от внешнего источника

//config PCRL (Регистр управления выводами)
DSP_BSP1->SPSA = 0x000E;
DSP_BSP1->CtrlD = 0x1000; //0x00001F00 - для внутреннего тактирования

//config MCRL (Регистр управления многоканальными режимами приема и передачи)
DSP_BSP1->SPSA = 0x0008;
DSP_BSP1->CtrlD = 0x00000000;
//config MCRH (Регистр управления многоканальными режимами приема и передачи)
DSP_BSP1->SPSA = 0x0009;
DSP_BSP1->CtrlD = 0xFF000000;

//config RCERL (Регистр маски приемника)
DSP_BSP1->SPSA = 0x000C;
DSP_BSP1->CtrlD = 0xFFFF;
//config RCERH (Регистр маски приемника)
DSP_BSP1->SPSA = 0x000D;
DSP_BSP1->CtrlD = 0xFFFF0000;

//config SPCRL (Регистр общего управления)
DSP_BSP1->SPSA = 0x0000;
DSP_BSP1->CtrlD = 0x6007; //ПРМ вкл., слово - 4 байта.
//config SPCRH (Регистр общего управления)
DSP_BSP1->SPSA = 0x0001;
DSP_BSP1->CtrlD = 0x80500000; //прерывание - заполненный наполовину FIFO буфер приемника
//Configuration of McBSP complete
}
Закрыть


обработчик прерываний от McBSP:
Открыть
void DSP_McBSP1_IRQHandler()
{
uint32_t temp;

DSP_IRQ->DIR = 0x0040;
PORTE->RXTX ^= 1 << 12;

if(tx_rx_samples == UART_TRANSMITT_I_Q) //transmitt data via SSI to 1321XD2
{
DSP_BSP1->SPSA = 0x000F;
while((DSP_BSP1->CtrlD & 0x4000) == 0) //Tx FIFO more then half empty
{
if(MyBuffer.RdIndex >= MyBuffer.WrIndex)
{
MyBuffer.RdIndex = 0;
}
DSP_BSP1->DXR = (uint16_t)(MyBuffer.a.data16.array[MyBuffer.RdIndex]);
MyBuffer.RdIndex++;
}
}

else //receive 8192 I and Q samples at 1321XD1
{
DSP_BSP1->SPSA = 0x000F;
while((DSP_BSP1->CtrlD & 0x0001) != 0) //Rx FIFO more then half full
{
if(MyBuffer.WrIndex >= MAX_ELEMENTS * 2)
{
NVIC_DisableIRQ(DSP_BSP1_IRQn);
PORTE->RXTX &= ~(1 << 12);
McBsp1TxRxReset();
rec_complete++;
break;
}
temp = DSP_BSP1->DRR;

if(UartRxPacket.ParamCode == 0)
{
MyBuffer.a.data16.array[MyBuffer.WrIndex] = (uint16_t)(temp >> 16); //save I sample
MyBuffer.WrIndex++;
MyBuffer.a.data16.array[MyBuffer.WrIndex] = (uint16_t)temp; //save Q sample
MyBuffer.WrIndex++;
}
else
{
MyBuffer.a.data24.array[MyBuffer.WrIndex] = (uint32_t)temp; //save I sample or Q sample
MyBuffer.WrIndex++;
}
}
}
}
#define UART_TRANSMITT_I_Q 0x8C
#define MAX_ELEMENTS 8192
Закрыть

если коротко, в обработчике в зависимости от значения tx_rx_samples либо передается массив данных, либо собирается 8192 отсчета. Здесь приведены рабочие куски кода для связки микросхем 1901ВЦ1Т, 1321ХД2, 1321ХД1.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 46 ]  На страницу Пред.  1, 2, 3, 4  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


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

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB