В общем проблема с i2s. Имеется отладочная плата mcbstm32c и на ней мк stm32f107vc и кодек CS42L52. Первый раз работаю с кодеком.
Источник тактирования для I2s сделал pll.
Инициализацию портов провёл ws,ck,sd,mck.
Вот настройка i2s:
I2S_InitStructure.I2S_Standard = I2S_Standard_Phillips;
I2S_InitStructure.I2S_DataFormat = I2S_DataFormat_16b;
I2S_InitStructure.I2S_MCLKOutput = I2S_MCLKOutput_Enable;
I2S_InitStructure.I2S_AudioFreq = I2S_AudioFreq_48k ;
I2S_InitStructure.I2S_CPOL = I2S_CPOL_Low;
I2S_InitStructure.I2S_Mode = I2S_Mode_MasterTx;
I2S_Init(SPI2, &I2S_InitStructure);
I2S_Cmd(SPI2, ENABLE);
функция отправки:
void SPI2_Write(u8 Adr_SPI2,u8 Dat_SPI2)
{
SPI_I2S_SendData(SPI2,(( Adr_SPI2 | 0x80 )<<8)| Dat_SPI2);
}
int main()
{
И тут понеслось включение питания для кодека, настройка спикера, громкость, бип генератор...
}
И вот собственно вопрос где я уже успел накасячить, что спикер не реагирует? В функции отправки (походу не туда отправляет) или же нужно адрес кодека сначала принять, а потом отправлять в него данные...
Раздел: STM32
Источник тактирования для I2s сделал pll.
Инициализацию портов провёл ws,ck,sd,mck.
Вот настройка i2s:
I2S_InitStructure.I2S_Standard = I2S_Standard_Phillips;
I2S_InitStructure.I2S_DataFormat = I2S_DataFormat_16b;
I2S_InitStructure.I2S_MCLKOutput = I2S_MCLKOutput_Enable;
I2S_InitStructure.I2S_AudioFreq = I2S_AudioFreq_48k ;
I2S_InitStructure.I2S_CPOL = I2S_CPOL_Low;
I2S_InitStructure.I2S_Mode = I2S_Mode_MasterTx;
I2S_Init(SPI2, &I2S_InitStructure);
I2S_Cmd(SPI2, ENABLE);
функция отправки:
void SPI2_Write(u8 Adr_SPI2,u8 Dat_SPI2)
{
SPI_I2S_SendData(SPI2,(( Adr_SPI2 | 0x80 )<<8)| Dat_SPI2);
}
int main()
{
И тут понеслось включение питания для кодека, настройка спикера, громкость, бип генератор...
}
И вот собственно вопрос где я уже успел накасячить, что спикер не реагирует? В функции отправки (походу не туда отправляет) или же нужно адрес кодека сначала принять, а потом отправлять в него данные...
Раздел: STM32