01 Haziran 2020, 04:19:03

Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H


STM32F407, I2S3 I2C3'ü bozuyor.

Başlatan isoment01, 18 Mayıs 2020, 17:28:19

isoment01

18 Mayıs 2020, 17:28:19 Son düzenlenme: 18 Mayıs 2020, 17:59:16 isoment01
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(&hi2c3DEVICE_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(&hi2s3SoundPackSIZE); 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.

isoment01

19 Mayıs 2020, 00:05:25 #1 Son düzenlenme: 19 Mayıs 2020, 00:09:52 isoment01
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.



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 ?

isoment01

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.