STM32 Nextion İletişim Problemi

Başlatan k0rkunc, 06 Eylül 2020, 16:17:29

k0rkunc

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.

sedronjames

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.

ziyaretci

#2
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.

sedronjames

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.

ziyaretci

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.)