DarkLight 0 November 26, 2025 Posted November 26, 2025 · Report post void Init_I2S03(void) { RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI3, ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); //------------------------------------------------------------- i2s03_port.GPIO_Mode = GPIO_Mode_AF; i2s03_port.GPIO_Pin = GPIO_Pin_5; i2s03_port.GPIO_Speed = GPIO_Speed_50MHz; i2s03_port.GPIO_OType = GPIO_OType_PP; i2s03_port.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOB, &i2s03_port); i2s03_port.GPIO_Mode = GPIO_Mode_AF; i2s03_port.GPIO_Pin = GPIO_Pin_3; i2s03_port.GPIO_Speed = GPIO_Speed_50MHz; i2s03_port.GPIO_OType = GPIO_OType_PP; i2s03_port.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOB, &i2s03_port); i2s03_port.GPIO_Mode = GPIO_Mode_AF; i2s03_port.GPIO_Pin = GPIO_Pin_15; i2s03_port.GPIO_Speed = GPIO_Speed_50MHz; i2s03_port.GPIO_OType = GPIO_OType_PP; i2s03_port.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOA, &i2s03_port); GPIO_PinAFConfig(GPIOB, GPIO_PinSource5, GPIO_AF_SPI3); GPIO_PinAFConfig(GPIOB, GPIO_PinSource3, GPIO_AF_SPI3); GPIO_PinAFConfig(GPIOA, GPIO_PinSource15, GPIO_AF_SPI3); //SPI_I2S_DeInit(SPI3); I2S03_InitStructure.I2S_AudioFreq = I2S_AudioFreq_8k; I2S03_InitStructure.I2S_Mode = I2S_Mode_MasterRx; I2S03_InitStructure.I2S_MCLKOutput = I2S_MCLKOutput_Disable; I2S03_InitStructure.I2S_DataFormat = I2S_DataFormat_32b; //I2S03_InitStructure.I2S_Standard = I2S_Standard_Phillips; I2S03_InitStructure.I2S_Standard = I2S_Standard_MSB; I2S03_InitStructure.I2S_CPOL = I2S_CPOL_Low; I2S_Init(SPI3, &I2S03_InitStructure); //------------------------------------------------------------- /* Enable I2S */ I2S_Cmd(SPI3, ENABLE); //I2S_DMA_Init(); mic_cnt = 0; my_cnt = 0; //------------------------------------------------------------- NVIC_EnableIRQ(SPI3_IRQn); // Включаем прерывание по окончанию передачи SPI_I2S_ITConfig(SPI3, SPI_I2S_IT_RXNE, ENABLE); Вот настроил I2S. Если меняю режим I2S03_InitStructure.I2S_Mode = I2S_Mode_SlaveRx; Подключаю устройство, которое мастер, то все работает исправно и работают прерывания. Когда устройство мастер отключаю и возвращаю режим I2S03_InitStructure.I2S_Mode = I2S_Mode_MasterRx; подключаю ведомое устройство, то ничего не работает и не вижу осцилографом даже клоков от МК, что я не так делаю? Quote Share this post Link to post Share on other sites More sharing options...
Allregia 10 December 7, 2025 Posted December 7, 2025 · Report post On 11/26/2025 at 11:40 AM, DarkLight said: и не вижу осцилографом даже клоков от МК, что я не так делаю? Ему надо постоянно пихать данные, иначе он ничего выдавать не будет. Можно по DMA, можно по прерыванию по пустому передатчику (но первый раз надо пихнуть вручную). Сорри за некропост, только сейчас увидел, но может еще актуально... Quote Share this post Link to post Share on other sites More sharing options...