Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Diğer => Konuyu başlatan: isoment01 - 18 Mayıs 2020, 14:28:19

Başlık: STM32F407, I2S3 I2C3'ü bozuyor.
Gönderen: isoment01 - 18 Mayıs 2020, 14:28:19
Arkadaşlar şöyle bir kodum var elimde.
MX_GPIO_Init();
  MX_DMA_Init();
  MX_I2S3_Init();
  MX_CAN1_Init();
  MX_I2C3_Init();
  /* USER CODE BEGIN 2 */
  USER_CAN_FilterConfig();
  USER_CAN_Start();
  DEVICE_TAS1_Init(hi2c3,DEVICE_TAS1);
  DEVICE_TAS2_Init(hi2c3,DEVICE_TAS2);
  PCT2075GVX_Init(&hi2c3, DEVICE_PTC);
burası initialize kısmı ve hepsi başarılı i2c de bir problem olmuyor. Daha sonra ana döngüde
EngineSoundPlayer(); adında bir fonksiyon koşturuyorum.
Bu fonksiyon bir array olan sound sample örneğini HAL_I2S_Transmit_DMA(&hi2s3, SoundPack, SIZE); DMA üzerinden gönderiyor ve hoparlörlerde ses alıyorum. DMA fonksiyonundan sonra can hattından gelen bilgiye göre if(SimRxData.SpeakerModeSelect== FRONT_REAR)
{
SetVolumeFR(TempVolume); //WARNING: CHECK MAX VAL. for
}
else if(SimRxData.SpeakerModeSelect== RIGHT_LEFT)
{
SetVolumeRL(TempVolume);
}
I2C üzerinden ses ayarlamalarını yapıyorum. Tam bu noktada dma fonksiyonundan sonra ı2c hattında hat busy hatası alıyorum.. sebebi ne olabilir. ?
-HAL_I2S_Transmit_DMA fonksiyonunu commentleyip çalıştırırsam i2c de bir hata almıyorum.
- Hatayı bir kaç tur sonra veriyor. İlk ses ayarlamasını yapıyor sistem.
Başlık: Ynt: STM32F407, I2S3 I2C3'ü bozuyor.
Gönderen: isoment01 - 18 Mayıs 2020, 21:05:25
Pull up lari internal kullandim. VDD 3.3V olmasina rağmen sda gerilimi 2.9V civari sanki akım çeken birşey var. SDA SCK da bir kisa devre saptamadim.
(https://i.ibb.co/MSZ4zhT/Screenshot-20200518-162643-Minis.jpg) (https://ibb.co/MSZ4zhT)

(https://i.ibb.co/94FHhwT/Screenshot-20200518-162708-Minis.jpg) (https://ibb.co/94FHhwT)
I2C SDA hattinin I2S transmit dma fonksiyonundan önceki ve sonraki goruntuleri ekran gorüntülerinde mevcut. Biraz parazit biniyor ama çok sıkıntı olacağını düşünmüyorum. Siz ne dersiniz ?
Başlık: Ynt: STM32F407, I2S3 I2C3'ü bozuyor.
Gönderen: isoment01 - 20 Mayıs 2020, 06:17:03
Sorun çözüldü. I2C hattındaki pull up direncinin yeterli olmamasindan kaynakli bir sorunmuş. Herzaman hattin VDD ye tam çekilip çekilmediğini kontrol etmek gerek. Fakat i2s dma yi kapattigimda neden bu sorunu almadigimi çozebilmis degilim.