Picproje Elektronik Sitesi

PICPROJE PROGRAMLAMA DERSLERİ => STM32 Örnekleri => Konuyu başlatan: k0rkunc - 06 Eylül 2020, 16:17:29

Başlık: STM32 Nextion İletişim Problemi
Gönderen: k0rkunc - 06 Eylül 2020, 16:17:29
Merhabalar Stm32f103 Hal Lib Keil ile nextion a uart üzerinden veri alıp gönderme işlemi yapıyorum. ancak UART dma ile alıp yaparken hiç sıkıntı yaşamıyorum Sağlıklı bir şekilde okuma yapıyorum Ancak gönderme işlemi yapınca bütün işler karışıyor..

RX sürekli olarak FF FF FF verilerle doluyor ve tekrar alım yapınca alınan verilerin sırası da kayıyor 65 00 01 01 FF FF FF geliyor ya mesela dizinin 4. satırından başlıyor örneğin alınan verinin yarısı kayboluyor bunu nasıl çözeiblirim.
Başlık: Ynt: STM32 Nextion İletişim Problemi
Gönderen: sedronjames - 14 Nisan 2022, 09:01:33
dostum selam
aynı sorun ile karşı karşıyayım.
debug yaparken şunu farkettim veri receive edildikten sonra ilk transmit edilen veride 0xFF doluyor receive bufferına.
transmit fonksiyonunun sonuna delay koyunca problem olmuyor.düzgün çalışıyor. sen nasıl çözdün merak ettim.
delay kullanmak istemiyorum.
Başlık: Ynt: STM32 Nextion İletişim Problemi
Gönderen: ziyaretci - 14 Nisan 2022, 11:03:18
https://nextion.tech/instruction-set/ (https://nextion.tech/instruction-set/)

7. bölümü kontrol edin. Bkcmd ayarını düşürebilirsiniz. Bu, bütün otomatik geri dönüşleri kapatmaz.

Mümkünse bütün sayfayı inceleyin.

Ek:
6. bölüm, 13. madde bkcmd hakkında.

Öneri:
Verileri paket, paket ve dinamik indeksleme yöntemiyle alırsanız, haberleşmede sorun yaşamazsınız(maksimum düzeyde). Bunun için kendinize basit bir format oluşturmalısınız. Böylelikle denetleyici ve ekran tarafında bellekten en üst düzeyde tasarruf edersiniz.
Başlık: Ynt: STM32 Nextion İletişim Problemi
Gönderen: sedronjames - 14 Nisan 2022, 11:48:46
yanıtınız için çok teşekkür ederim .
bahsettiğiniz haberleşme tarzında bir örnek mevcut mu acaba.
örnek üzerinden incelemek daha öğretici oluyor benim için.
Başlık: Ynt: STM32 Nextion İletişim Problemi
Gönderen: ziyaretci - 14 Nisan 2022, 16:55:02
Ekrandan ne gelirse gelsin gelen datayı hemen bir önbelleğe alın.

Örneğin;
interrupt()
{
 onbellek[son_indeks]=gelen_data();
 if(son_indeks<onbellek_siniri)
    son_indeks++;
 else
    son_indeks=0;
}

paketle()
{
  //oluşturulan formata göre data paket belleğine taşınır. Ve istenilen işlemler yapılır.
}


main()
{
  while(1)
  {
    if(son_indeks!=ilk_indeks)
    {
        paketle(ilk_indeks);
        if(ilk_indeks<on_bellek_siniri)
          ilk_indeks++;
        else
          ilk_indeks=0;

    }
  }
}


Örnek format(her indeks 1 byte);
[0 ]:Paket id
[1 ]:Paket tanımı
[2 ]:Paket türü
[3 ]:Paket boyutu
[4 ]:Paket data
.
.
[x ]:İsteğe bağlı hata kontrol dataları(checksum, crc vs.)