İçindekiler:

Esp8266 Saat ve Darbe Üreteci: 3 Adım
Esp8266 Saat ve Darbe Üreteci: 3 Adım

Video: Esp8266 Saat ve Darbe Üreteci: 3 Adım

Video: Esp8266 Saat ve Darbe Üreteci: 3 Adım
Video: STM32F1 Donanım Mimarisi: SPI (Seri Çevre Arabirimi) 2024, Temmuz
Anonim
Esp8266 Saat ve Darbe Üreteci
Esp8266 Saat ve Darbe Üreteci

Bu talimat, basit bir test ekipmanı parçası içindir; bir saat ve puls üreteci.

Bir test saati veya bir darbe dizisi oluşturmak için bir esp8266'daki i2S donanım arayüzünü kullanır. Bu, temel bir sistem için özel bir donanım gerekmediğinden bir araya getirmeyi kolaylaştırır.

  • 2Hz'den 20MHz'e saat üretimi
  • Herhangi bir frekans kullanılabilir
  • 160MHz taban saatinden en iyi saat bölücü eşleşmesini ve bit uzunluğunu arar
  • < 100KHz frekanslar için tipik olarak %0,1'den daha iyi eşleşme
  • Boşluk oranı seçimini işaretleyin
  • Daha iyi işaret alanı kullanımı elde etmek için frekans eşleştirme toleransı gevşetilebilir
  • Dosyalardaki tanımlara dayalı darbe dizisi oluşturma
  • PC, telefon, tabletten kontrol sağlayan web tabanlı GUI
  • Kolay ilk yönlendirici kurulumuna izin vermek için Wifi Yönetimi
  • OTA yazılım güncellemesi
  • Esnek kontrol sağlayan özel bir I2s kitaplığı (i2sTXcircular) kullanır

Adım 1: Donanım

Donanım
Donanım
Donanım
Donanım

Madeni bir USB şarj cihazı, bir açma/kapama düğmesi, çıkış sinyali için 3 pinli bir başlık fişi olan bir 18650 pili tutan 3 boyutlu baskılı bir muhafaza içinde oluşturdum.

Muhafaza, pilin yanında elektroniği tutmak için dar bir yuvaya sahiptir.

Sinyal, GPIO3 pininden (RX) çıkar. Bu doğrudan kullanılabilir ancak daha yüksek sürücü kapasitesi için 74LVC2G34 kullanarak küçük bir arabellek eklemeyi seçtim. Daha fazla sürücü yeteneği sağlamak için bu aygıttaki iki arabelleği paralel hale getirdim.

Her şey sadece cihazdaki yazılımda yapılır ve kontrol bir web sunucusu sağlanarak yapılır, böylece bir PC, telefon veya tablet üzerindeki bir tarayıcı tam kontrol sağlar.

2. Adım: Yazılım

Yazılımı oluşturmak ve kurmak için https://github.com/roberttidey/espI2sClockGen adresindeki kodu kullanın.

  • i2sTXcircular kütüphanesini kurun (dahil)
  • BaseSupport kitaplığını kurun (https://github.com/roberttidey/BaseSupport)
  • WifiManager kitaplığı ekle
  • BaseConfig.h'de parolaları düzenleyin
  • Arduino ortamında derleme ve yükleme
  • AP'ye bağlanarak ve 192.168.4.1'e göz atarak wifi ağ yönetimini ayarlayın
  • STA ip/upload kullanarak veri klasöründen temel dosya setini yükleyin
  • daha sonra ip/edit kullanılarak daha fazla yükleme yapılabilir - normal arayüz ip/'de

Nasıl çalışır

i2sTXcircular kütüphanesi, daha sonra DMA kullanılarak esp8266 üzerindeki i2S donanımı tarafından otomatik olarak çıkarılan dairesel bir tampon zinciri oluşturmaya izin verir, böylece bir kez çalıştığında hiçbir yazılım ek yükü kullanılmaz.

Cihazdaki temel saat, bir çift bölücü tarafından bölünmüş 160 MHz'dir. Çıktı sinyali daha sonra bölünmüş saat tarafından çıktı olarak verilen arabelleklere hangi verilerin konulduğu ile belirlenir. İki bölücü seçilerek ve her darbeyi temsil etmek için potansiyel olarak birden çok veri biti kullanılarak bir frekansa oldukça yakın bir şekilde yaklaşılabilir. Ayrıca görev döngüsünün (saat darbelerinin işaret/boşluk oranı) değiştirilmesine izin verir.

Tarayıcı javascript kodu, seçilen herhangi bir frekansa yakın bir eşleşme sağlamak için parametre seçimini optimize etmeye çalışır.

Ana amaç saatler üretmek olsa da, daha sonra üretilecek ve dairesel tampona konacak verileri kontrol eden bir darbe dosyasına bir tanım koyarak daha karmaşık darbe katarları üretmek de mümkündür. Ayrıntılar, dahil edilen örnek darbe dosyalarındadır.

3. Adım: Çalıştırma

İşlem, ana resimde gösterilen tarayıcı arayüzü tarafından kontrol edilir.

Normal saat üretimi için hedef saati ve işaret alanı % oranını seçmeniz yeterlidir. Elde edilen gerçek saat ve hatası görüntülenir. Saat Oluştur butonuna basıldığında parametreler cihaza gönderilir ve bu parametreleri kullanarak saat üretimi başlar.

Gelişmiş çubuğuna tıklayarak daha fazla ayrıntı görülebilir.

Bit saati, kullanılan 160 MHz'nin alt katını gösterir.

İşaret ve boşluk bitleri, işaretleri ve boşlukları temsil etmek için kaç bit kullanıldığını gösterir.

Div1 ve Div2, en yakın bit saatini oluşturmak için seçilen iki bölücüyü gösterir.

Normalde, iki bölücü, seçilen frekansa en yakın eşleşmeyi verecek ve farklı görev döngülerine izin vermede daha fazla esneklik sağlamaya yardımcı olan kullanılan veri bitlerinin sayısını maksimize edecek şekilde seçilir. Bununla birlikte, bazen en iyi eşleşme, görev döngüsünü değiştirmek için çok az yer bırakan düşük bit sayısıyla sonuçlanır. Tolerans % değerini değiştirerek, bölücüler bu tolerans dahilinde ancak potansiyel olarak daha fazla veri biti kullanılarak bir frekans verecek şekilde seçilecektir. Örneğin toleransı 0,5 veya 1 olarak ayarlamayı deneyin.

Parametre seçimini kontrol etmek için Kelime başına Bit sayısını da ayarlayabilirsiniz. 0 (varsayılan), kelime başına herhangi bir bit seçmek anlamına gelir. Tek bir sayı (ör. 24), yalnızca bununla eşleşen parametreleri seçmek anlamına gelir. Ayrıca bir aralık da koyabilirsiniz (ör. 24, 31). Bu, yalnızca 10KHz'in üzerindeki hedef Hz için çalışır, bu ölçeklemenin altında, sayının çarpılması için etkili olur.

Tampon boyutu, 32 bit sözcüklerde kullanılan toplam arabellek aralığını gösterir. Bu, saat darbesinin tampona mükemmel bir dairesel uyum oluşturmasını sağlamak için seçilir. Dahili olarak bu tampon, zincirleme DMA'nın çalışmasına izin vermek için birkaç küçük rbuffer'a bölünür.

Darbe işlemi için darbeler TAB'ını seçin. Bu, mevcut darbe dosyalarını ve her birinin yanında tanımına göre bir darbe dizisi üretecek bir düğmeyi gösterir. Dosyanın içeriğini linkine tıklayarak görebilirsiniz. ip/edit dosya tarayıcısı kullanılarak daha fazla darbe dosyası yüklenebilir. Nabız adı ile başlamalıdırlar.

Önerilen: