Jump to content

    

Vladimir_T

Свой
  • Content Count

    535
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Vladimir_T

  • Rank
    Vladimir_T

Recent Profile Visitors

3593 profile views
  1. I2S используется для работы с кодеком TLV320IAC520 в режиме мастера. Кодек формирует все служебные сигналы. Документацию читал и рекомендации стараюсь выполнять. Самое интересное, что эта связка сразу заработала нормально: прерывания от приемника I2S идут, сделал поканальную обработку потока. Затем некоторое время занимался отладкой других узлов. Но когда вернулся к кодеку - тут и сюрприз. Не работает оцифровка потока - сколько не бьюсь, а прерываний по приему так и нет! Что еще можно предпринять?
  2. I2S для STM32F405

    Здравствуйте, уважаемые коллеги, подскажите, пожалуйста по конфигурированию интерфейса I2S для STM32F405. В режиме I2S slave для приема данных, я должен линию I2S_CK подключить CKIN (PC9) ? Сейчас I2S_CK на I2S2_CK(PB9). Внутреннюю периферию сконфигурировал, а приема данных нет. void Config_I2S2_Pin (void) // From Port C { GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = I2S2_CK | I2S2_WS; // Config I2S2 PINs GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; // GPIO_PuPd_UP GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = I2S2_SD; // Config I2S2 PINs GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; // GPIO_PuPd_UP GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO_PinAFConfig(GPIOB, GPIO_PinSource10, GPIO_AF_SPI2); GPIO_PinAFConfig(GPIOB, GPIO_PinSource9, GPIO_AF_SPI2); GPIO_PinAFConfig(GPIOC, GPIO_PinSource3, GPIO_AF_SPI2); } // Config_I2S2_Pin (); void I2S_Slave_Init (void) { I2S_InitTypeDef I2S_InitStruct; RCC_APB1PeriphClockCmd (RCC_APB1Periph_SPI2, ENABLE); // Enable SPI2 I2S_InitStruct.I2S_Mode = I2S_Mode_SlaveRx; /* Initialize the I2S_Mode Slave */ I2S_InitStruct.I2S_Standard = I2S_Standard_Phillips; /* Initialize the I2S_Standard member */ I2S_InitStruct.I2S_DataFormat = I2S_DataFormat_16b; /* Initialize the I2S_DataFormat member */ I2S_InitStruct.I2S_MCLKOutput = I2S_MCLKOutput_Disable; /* Initialize the I2S_MCLKOutput member */ I2S_InitStruct.I2S_AudioFreq = I2S_AudioFreq_48k; /* Initialize the I2S_AudioFreq member */ I2S_InitStruct.I2S_CPOL = I2S_CPOL_Low; /* Initialize the I2S_CPOL member */ I2S_Init (SPI2, &I2S_InitStruct); SPI_Cmd (SPI2, ENABLE); I2S_Cmd (SPI2, ENABLE); Config_I2S2_Pin (); SPI_I2S_ITConfig(SPI2, SPI_I2S_IT_RXNE, ENABLE); // Rx buffer not empty interrupt mask } // I2S_Slave_Init (void)
  3. Благодарю вас за помощь и полезные советы. Сейчас все работает как часы. Вчера посмотрел на мою задачу с другой стороны. Дело было в том, что шина I2S в АЦП как мастер, а со стороны микроконтроллера STM32F405 шина не инициирована и выводы находилась в третьем состоянии. Шина I2S в контроллере была не активна, все выводы были в третьем состоянии. Но TLV320 может работать в режиме каскадирования и внутренний контроль, видимо, не разрешал вывод потока данных на шину I2S.
  4. Хотя есть осадок. Ведь есть у кодека режим DC измерений с доступными фильтрами, этот режим устанавливаю и идут прерывания INT1, после его обработки вычитываю регистры АЦП: Read_ADC_TLV320 (0x68, 0); Read_ADC_TLV320 (0x69, 0); Read_ADC_TLV320 (0x6A, 0); Read_ADC_TLV320 (0x6B, 0); Read_ADC_TLV320 (0x6C, 0); Read_ADC_TLV320 (0x6D, 0); Есть ведь доступ к регистрам данных АЦП через SPI. Но прерывания идут редко - периодом 2.4 мсек, как написано в документации (P0_R49) Но главное, что АЦП на запускается на потоковую обработку, возможно ли из-за несоответствия: CODEC_CLKIN = NADC * MADC * AOSR * ADC_FS 25МГц = MCLK ≠ 1 * 4 * 128 * 48000 = 24.576 МГц Может внутренние коллизии не дают АЦП стартовать? На PLL переходить не желательно, а MCLK менять крайне не желательно
  5. Здравствуйте, если у вас найдется время, то взгляните на мою задачу:

    Может что подскажите. Заранее благодарен.

     

     

  6. Здравствуйте, уважаеые коллеги, подскажите, пожалуйста по кодеку TLV320AIC3254. Питание внешнее 3.3В. Схема включения - обычная, внешний генератор на MCLK = 25 МГц. После инициализации АЦП не стартует, в регистре состояния нет готовности даееых (Sticky Flag Register 3 - 0x00 / 0x2D (P0_R45)). Вывод MFP5 подключен на INT1 (сигнал должен формироваться по готовности данных) его также нет. Все регистры программируюся корректно, проверяю их чтением. Аналоговый модуль запускается и внутренние стабилизаторы включены, на выводах AVDD, DVDD, REF корректные напряжения. Что может быть и почему не стартует АЦП? Буду очень признателен за любой совет. Write_ADC_TLV320 (0x00, 0x00); /* Initialize to Page 0 */ Write_ADC_TLV320 (0x01, 0x01); /* Initialize the device through software reset */ Delay (25); Write_ADC_TLV320 (0x04, 0x00); /* MCLK pin is CODEC_CLKIN. MCLK = 25MHz */ Write_ADC_TLV320 (0x12, 0x84); /* NADC = 4 */ Write_ADC_TLV320 (0x13, 0x84); /* MADC = 4 */ Write_ADC_TLV320 (0x14, 0x20); /* AOSR = 32 */ Write_ADC_TLV320 (0x3d, 0x0D); /* ADC PRB_R13 = 13 */ Write_ADC_TLV320 (0x00, 0x01); /* Select Page 1 */ Write_ADC_TLV320 (0x01, 0x08); /* Disable Internal Crude AVdd in presence of external */ Write_ADC_TLV320 (0x02, 0x01); /* Power up AVDD LDO */ Write_ADC_TLV320 (0x7b, 0x01); /* REF Power-Up */ Write_ADC_TLV320 (0x14, 0x25); /* HP soft stepping settings for optimal pop performance at power up Rpop used is 6k with N = 6 and soft step = 20usec. This should work with 47uF coupling capacitor. Can try N=5,6 or 7 time constants as well. Trade-off delay vs ???pop??? sound. */ Write_ADC_TLV320 (0x0A, 0x33); // Set full chip common mode to 0.9V Write_ADC_TLV320 (0x3d, 0x00); /* Select ADC PTM_R4 */ Write_ADC_TLV320 (0x47, 0x32); /* Set MicPGA startup delay to 3.1ms */ Write_ADC_TLV320 (0x34, 0x10); /* Route IN2L to LEFT_P with 10K */ Write_ADC_TLV320 (0x36, 0x10); /* Route IN2R to LEFT_N with 10K */ Write_ADC_TLV320 (0x37, 0x04); /* Route IN3R to RIGHT_P with 10K */ Write_ADC_TLV320 (0x39, 0x04); /* Route IN3L to RIGHT_N with 10K */ Write_ADC_TLV320 (0x3c, 0x00); /* Unmute Right MICPGA, Gain selection of 32dB to make channel gain 0dB */ Write_ADC_TLV320 (0x3d, 0x00); /* Select ADC PRB_R1 */ Write_ADC_TLV320 (0x3b, 0); /* Unmute Left MICPGA, Gain selection of 32dB to make channel gain 0dB */ Write_ADC_TLV320 (0x00, 0x00); /* Initialize to Page 0 */ Write_ADC_TLV320 (0x51, 0xc0); /* Power up Left and Right ADC Channels */ Write_ADC_TLV320 (0x52, 0x00); /* Unmute Left and Right ADC Digital Volume Control */ Write_ADC_TLV320 (0x66, 0xc1); /* DC Measurement Mode enabled for Left and Right ADC Channels 0 0001: DC Measurement D parameter = 1*/ Write_ADC_TLV320 (0x67, 0x00); /* Left and Right Channel DC measurement result update enabled For IIR based DC measurement, the measurement value is updated before periodic clearing of IIR filter*/ Write_ADC_TLV320 (0x30, 0x01); /* INT1 Interrupt for DC Measurement DC Measurement data available will generate INT1 interrupt INT1 is active high interrupt of multiple pulses, each of duration 2ms. */ Write_ADC_TLV320 (0x34, 0x14); /* INT1 output from MFP5 (32pin)*/
  7. Благодарю за помощь. Добавил программу преобразования выходного файла TICS в файл для включения в С-код. Сделана на скорую руку, но может кому-то еще, кроме меня, будет полезной. Регистры можно обновлять из полученного массива, как по отдельности, так и блоком. Преобразователь_TICS.rar
  8. Благодарю Вас, установил ваши значения и стало все нормально. А то, что я обновляю лишь часть регистров (только несколько основных) это допустимо?
  9. Здравствуйте, уважаемые коллеги, прошу вас помочь разобраться с синтезатором частот LMX2572. Для установки выходной частоты и общего управления синтезатором использую программу TICS Pro v1.7, тактирование от генератора ABLNO-V-100МГц. Задаю частоту 200 МГц, а получаю 202. Коэффициенты все целочисленные, захват Lock Detect =1. Почему может быть такая большая ошибка синтезатора? Откровенно говоря, я не переписываю все 126 регистров, как рекомендуют, после внутреннего сброса все регистры заполнены заводскими установками. И программируются лишь необходимые. Содержимое регистров контролируется через чтение их содержимого. Прилагается код программы инициализации для частоты 200 МГц. Set_PLL2572LP_ML (0,0x211A); // Power UP, Reset Delay (15); Set_PLL2572LP_ML (0,0x2118); // Power Down_Up, Calibrate Delay (15); Set_PLL2572LP_ML (0x09,0x0004); // Doubler = 0 Set_PLL2572LP_ML (0x0C,0x5001); // Pre_R =1 Delay (15); Set_PLL2572LP_ML (0x0A,0x10F8); // Multipler = 1 Set_PLL2572LP_ML (0x0B,0xB018); // R = 1 Set_PLL2572LP_ML (0x0E,0x1870); // Charge Pump = 6500 Set_PLL2572LP_ML (0x4B,0x0940); // Channel Div = 32 Set_PLL2572LP_ML (0x20,0x0305); // MASH Phase Synchro =3 Set_PLL2572LP_ML (0x25,0x0205); // PFD DLY SEL Set_PLL2572LP_ML (0x2C,0x0923); // OUT A PWR = 9 Set_PLL2572LP_ML (0x2D,0xC609); // OUT B PWR = 9 Set_PLL2572LP_ML (0x22,0x0010); // PLL_N 0..3xxxx Set_PLL2572LP_ML (0x24,0x0020); // PLL_N 0..FFFF - 32 Set_PLL2572LP_ML (0x2A,0x0000); // PLL_NUM / Set_PLL2572LP_ML (0x2B,0x0000); // PLL_NUM / Set_PLL2572LP_ML (0x26,0x0000); // PLL_DEN / Set_PLL2572LP_ML (0x27,0x0000); // PLL_DEN / // Set_PLL2572LP_ML (0,0x2118); // Power Down_Up, Calibrate, MUXout - MISO Set_PLL2572LP_ML (0,0x211C); // Power Down_Up, Calibrate, MUXout - Lock Detect Delay (15); Заранее благодарен.
  10. Нет, конечно! Я ведь написал, что это СВЧ малошумящий усилитель. Из фирменных уже давно выбрал бы подходящий, но у китайской микросхемы цоколевка ни с одной фирменной не совпадает, а монтаж с проводниками не будет работать - там импедансы согласованы.
  11. Это - самое правильное решение, только очень волокитно: переписка, отправка, ремонт. На все уйдет месяц- полтора и в копеечку. Эх!!! Как прочно нас китайцы к себе привязали! Ведь у дистрибьютеров, к которым вы меня отправляете даже СХЕМ нет! НЕ ДАЮТ их им китайцы!
  12. Благодарю за ответы, полезные для меня. На плате КИТа установлены проволочные индуктивности - чьи это могут быть?
  13. Здравствуйте, может кто знает, что это за гусек стоит в качестве входного малошумящего СВЧ-усилителя в анализаторе спектра АКИП 4204. При настройке оборудования он у меня сгорел! На корпусе SOT23-6 маркировка 958V, уже долго-долго ищу по даташитам (TI, NSP, Analog) - ничего похожего не нашел. Заранее благодарен.