Evdə hazırlanmış 2 kanallı məntiq analizatoru. Çindən məntiq analizatorunun təkmilləşdirilməsi

22.02.2024

0

Vassilis Serasidis Məntiq analizatoru rəqəmsal siqnalda məntiqi 0 və 1-lərin ardıcıllığını görməyə və təhlil etməyə imkan verən alətdir. Məsələn, bir çox elektron cihazlarda TSOP-1736 IR demodulator qəbuledicisindən rəqəmsal siqnalı, MAX232 çipinin çıxış və giriş siqnallarını, həmçinin I2C avtobusunu (saat xətti və məlumat xətti) öyrənə bilərsiniz. Bu yazıda Nokia 5110/3110 mobil telefonundan LCD displeyli miniatür 4 kanallı məntiq analizatorunun dizaynına baxacağıq. Dizaynın əsasını Atmel ATmega8 mikrokontrolleri təşkil edir, buna əlavə olaraq daha bir neçə diskret komponentlər istifadə olunur. Cihazın əsas xüsusiyyətləri: 4 kanallı məntiq analizatoru; 400 kHz-ə qədər tezliyə malik siqnalları öyrənmək imkanı; giriş gərginliyi +5 V-a qədər; 84 × 48 piksel təsvir ölçülü LCD displey; 4 batareyadan 1,2 V, maksimum təchizatı gərginliyi 4,8 V; yaddaş: yüksək sürətli siqnallar üçün 3,7 ms-dən aşağı sürətli siqnallar üçün 36 s-ə qədər; idarəetmə düymələri; sadə dizayn. Sxematik diaqram Şəkil 1 cihazın sxematik diaqramını göstərir. Dərhal qeyd etmək lazımdır ki, cihaz hər biri 1,2 V gərginlikli 4 batareya ilə təchiz edilmişdir.
Böyütmək üçün klikləyin Diqqət!!! 1,5 V gərginlikli 4 batareyadan enerji təchizatı bu cihaz dövrəsi üçün qəbuledilməzdir, çünki 6 V gərginlik mikrokontroller və LCD displeyə zərər verə bilər.
Switch S1 enerji təchizatı üçün nəzərdə tutulmuşdur. Pull-up rezistorları R2-R5 elektromaqnit sahələrinin təsiri nəticəsində və ya barmaqlar siqnal zondlarına toxunduqda cihazın rəqəmsal girişlərində yanlış məlumatların görünməsinin qarşısını almaq üçün quraşdırılmışdır. LED1 cihazın rəqəmsal girişlərində siqnalın mövcudluğunu və buna görə də siqnalların yaddaşa yazılmasının başlanğıcını göstərmək üçün nəzərdə tutulmuşdur. Dövrə Nokia 3310/5510 cib telefonunun LCD göstəricisindən istifadə edir, 3,3 V - 5,0 V təchizatı gərginliyi ilə işləmək üçün nəzərdə tutulmuşdur, lakin ekranın arxa işığı üçün maksimum gərginlik 3,3 V-dir, buna görə də dövrədə üç 1N4007 var. diodlar ekranın arxa işığı elektrik xətti vasitəsilə ardıcıl olaraq (D1-D3) birləşdirilir. Diodlar sayəsində gərginlik 2,7 V-ə düşəcək və arxa işığı gücləndirmək üçün kifayət qədər olacaq. Məlumatların tutulması prosesi və proqram təminatı Qeyd etmək lazımdır ki, müəllif mikrokontroller proqram təminatının iki versiyasını hazırlamışdır. Əvvəlcə məntiq analizatorunun 1.00 versiyası üçün inteqrasiya olunmuş inkişaf mühiti AVR Studio 4.18 istifadə edildi, lakin sonra müəllif AVR Studio 5 - 1.01 versiyası üçün mənbə kodunu yenidən tərtib etdi. İnkişaf mühitinin 5-ci versiyası üçün yenidən tərtib edildikdən və cihazın daha da sınaqdan keçirilməsindən sonra tutulan siqnalların sabitliyində yaxşılaşma müşahidə edildi. Siqnallar 290 nümunə üçün nəzərdə tutulmuş daxili RAM yaddaş buferinə qeyd olunur. Məlumat buferi 870 baytdan (mikrokontroller proqramının 1-ci versiyası üçün) formalaşır, bunun 2 baytı sayğac üçün, 1 baytı isə giriş kanalı haqqında məlumat vermək üçün istifadə olunur. 1.01 versiyasında məlumat tutma sürətini artırmaq üçün məlumat buferi 256×3=768 Bayta endirildi, çünki Bufer ölçüsü dəyişəni proqram təminatının ilk versiyasında istifadə edilən 16 bit əvəzinə 8 bitdir. Güc verildikdən sonra mikrokontroller cihazın 4 girişindən hər hansı birində nəbz gözləmə rejiminə keçir. Giriş nəbzi aşkar edildikdə, mikrokontroller növbəti impuls 4 girişdən hər hansı birinə çatana qədər vaxtı saymağa başlayır. Nümunə müddəti 16 bitlik dəyişən “sayğacda” saxlanılır. Bu dəyişən daşdıqdan sonra 4 girişin vəziyyəti və sayğac dəyəri haqqında məlumat buferdə saxlanılır və onun ünvanının dəyəri üç artırılır (sayğac üçün 2 bayt və giriş xətti haqqında məlumat üçün 1 bayt). Bu proses mikrokontroller bütün buferi doldurana qədər təkrarlanır (870/3=290 nümunə və ya impuls). Mikrokontroller yaddaşına siqnalların yazılması prosesi Şəkil 2-də göstərilmişdir. Bufer doldurulduqdan sonra bütün yığılmış məlumatlar LCD displeydə oscilloqram şəklində göstərilir. İstifadəçi dalğa formasını idarə edə bilər - bütün saxlanmış impuls ardıcıllığına baxmaq üçün onu sola (S3 düyməsi) və ya sağa (S4 düyməsi) köçürün. Əgər aşağı sürət siqnalları qeydə alınıbsa, istifadəçi S2 düyməsini sıxaraq miqyasını 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096 və ya 8192 ilə dəyişə bilər. Mikrokontrolleri proqramlaşdırarkən, Sigorta bitlərini rəqəmə uyğun olaraq təyin etməlisiniz. Çap dövrə lövhəsinin növü və komponentlərin yeri

15 yanvar 2013-cü il, saat 13:59

LogicDiscovery - sadə məntiq analizatoru

  • DIY və ya özünüz edin

Çox vaxt ev elektron sənətkarlıqlarında bu və ya digər siqnala baxmağa ehtiyac var və onun rəqəmsal təmsili kifayətdir - MK-nın I2C vasitəsilə nə ötürdüyü, PWM-nin düzgün konfiqurasiya edilib-edilməməsi və s. Əgər işinizdə yaxşı bir osiloskopunuz varsa, o zaman eviniz üçün bir osiloskop almaq çox baha başa gəlir, xüsusən də ehtiyac yalnız bəzən yarandıqda.
Bu yaxınlarda ucuz (təxminən 50 dollar) məntiq analizatorları peyda oldu, lakin bir fikir məni həmişə onları almaqdan çəkindirdi: iş son dərəcə sadədir, niyə onu qırıntılardan özünüz hazırlamayasınız?
Bu yazıda sizə minimal maliyyə xərcləri ilə sadə məntiq analizatorunu necə edəcəyinizi söyləyəcəyəm - sizə lazım olan tək şey Stm32F4Discovery sazlama lövhəsidir.

Məntiq analizatoru (bundan sonra LA adlandırılacaq)– rəqəmsal sxemlərdə siqnalları qeyd etmək, baxmaq və təhlil etmək üçün nəzərdə tutulmuş cihaz. Bir osiloskop kimi, LA təhlil edilən dövrəyə bir və ya daha çox zondla bağlıdır, lakin osiloskopdan fərqli olaraq, yalnız iki siqnal vəziyyətini "0" və "1" qeyd edir. Təyyarənin mühüm funksiyası qeydə alınmış siqnalları avtomatik deşifrə etmək, məsələn, I2C və ya SPI avtobusunda məlumat mübadiləsini təhlil etmək qabiliyyətidir. Həmçinin, LA-lar osiloskoplarla müqayisədə daha çox analiz edilmiş xətlərlə fərqlənir: sadə analizatorlarda 8-dən sənaye nümunələrində yüzlərlə.
Burada təsvir olunan layihə - LogicDiscovery - kompüter üçün USB pristavka formatında hazırlanmış SUMP uyğun məntiq analizatorudur. Olduqca təvazökar xüsusiyyətlərə malikdir: 20MHz, 16 kanal, 24kB yaddaş. Bununla belə, bu, çox geniş spektrli tapşırıqlar üçün kifayətdir: UART, I2C, SPI xətlərinin təhlili (bir neçə megahertz daxilində), paralel avtobuslar, siqnal vaxtı xüsusiyyətlərinin ölçülməsi və s.

Başlayaq

Beləliklə, bizə lazım olan tək şey:
  • İnkişaf lövhəsi Stm32F4Discovery. Moskva pərakəndə satışında 500 rubldan və ya bəlkə artıq qutularınızdadır? STM32F4 və ya STM32F2 əsaslı hər hansı digər lövhə bunu edəcək, lakin sonra siz mənbələri düzəltməli olacaqsınız.
  • Təhlil olunan dövrəyə qoşulmaq üçün bir neçə tel.
  • İstifadəyə hazır proqram təminatı Google.Code-da mövcuddur. Mənbələr də oradadır.
  • Bundan əlavə, sizə PC üçün müştəri lazımdır, OLS-i tövsiyə edirəm.
Müştəri Java-da yazılmışdır, buna görə də nəticədə həll ƏS-dən müstəqildir. Teorik olaraq, hər hansı bir SUMP uyğun müştəri istifadə edə bilərsiniz, lakin aşağıda bu xüsusi proqramla işləməyi təsvir edəcəyəm.
Stm32F4Discovery mini-USB portu ilə təchiz edilib, onun vasitəsilə işıqlandırılır. Təyyarə funksiyalarından istifadə etmək üçün lövhə mikro-USB portu vasitəsilə PC-yə qoşulur. Lövhəni eyni portdan gücləndirmək üçün sancaqları jumper ilə birləşdirin PA95V. PA9 birbaşa mikro-USB portunun Vbus-a qoşulur və 5V lövhə üçün güc yaradan stabilizatorun girişidir. Əməliyyatı yoxlamaq üçün portları birləşdirin PA2PD0. PA2-də sınaq siqnalı yaradılır və PD0 təyyarənin ilk girişidir.

Lövhə PC tərəfindən Linux üçün COM portu kimi tanınır, sürücülər standartdır və artıq Win üçün kerneldə olmalıdır, sürücülər ST veb saytından yüklənir; Lövhə müəyyən edildikdən sonra müştərini işə salıb işə başlaya bilərsiniz.
Ancaq əvvəlcə məlhəmdə bir milçək.

Məhdudiyyətlər

Layihə açıq SUMP protokolundan istifadə edir. Bu protokol əvvəlcə FPGA əsaslı təyyarələr üçün hazırlanmışdır və mikrokontrollerlər hələ də giriş siqnallarını qeyd etmək və məlumat axınını təhlil etmək baxımından onlardan daha aşağı olduqları üçün müştəridə tətbiq olunan bütün funksiyalar bizim üçün mövcud olmayacaq:
  • Maksimum qeyd tezliyi – 20 MHz, orijinalda 200 MHz-ə qədər
  • RLE sıxılma və səs-küyün filtrasiyası dəstəklənmir.
  • Siz ixtiyari kanal qruplarını seçə bilməzsiniz, yalnız birinci (8 kanal) və ya birinci + ikinci (16 kanal).
  • Tətiklər dəyərlə deyil, kənar ilə işləyir (lakin mənim fikrimcə, bu artıq bir üstünlükdür).
  • Qabaqcıl (Kompleks) tetikleyiciler üçün dəstək yoxdur.
Müştərinin konfiqurasiyası zamanı bu məhdudiyyətlər yadda saxlanmalıdır. O, bu məhdudiyyətlər haqqında heç nə bilmir və sizə istənilən parametrləri seçməyə imkan verəcək. Bu halda əldə edilən nəticə yanlış olacaq.

istifadə edirik

İstifadə olunan OS-dən asılı olaraq, müştərini run.bat və ya run.sh faylı vasitəsilə işə salırıq. Müştərinin funksiyaları haqqında onun səhifəsində oxuya bilərsiniz; burada mən ilk nümunələrin əldə edilməsi prosesini və məhdudiyyətlərə məruz qalan parametrləri təsvir edəcəyəm.

Menyuda "tutmaq", elementin seçilməsi "Təsir etməyə başlayın", qeyd parametrləri pəncərəsini açın. Sahənin ilk səhifəsində "" Analizator portu" təyyarəmizin oturduğu limanı seçirik, başqa heç nəyi dəyişdirmək lazım deyil. Düymə "Cihaz metadatasını göstər" Bağlantını yoxlaya bilərsiniz:

İkinci səhifədə tutma parametrlərini göstəririk. İlk iki nöqtəyə toxunmuruq,
"Nümunə alma dərəcəsi" 20 MHz-dən yüksək olmayan (daha çox göstərsəniz, lövhə hələ də 20 MHz istifadə edir, lakin müştəri göstərilən dəyərin istifadə edildiyini düşünəcək, ümumiyyətlə, cəfəngiyat olacaq).
"Kanal qrupları": 0 – bir qrup kanaldan istifadə edirik, bunlar PD0-PD7 sətirləri və ya 0 və 1 – iki qrup kanaldan istifadə edirik – PD0-PD15 xətləri.
"Qeydiyyatın ölçüsü": bir qrup kanal üçün – istənilən dəyər, iki qrup üçün – 12kB-dən çox deyil (bu sahədə yanlış dəyər seçildikdə müştəri xəbərdarlıq edəcək).
Bu səhifədəki qeyd xanalarına toxunmuruq, onlar dəstəklənmir:

Səhifə "Tetiklər"- ən maraqlısı. Tətikləri aktivləşdirmək üçün ilk qutunu yoxlayırıq.
"Əvvəl/sonra nisbəti" bufer işə salınmazdan əvvəl nə qədər məlumatın saxlanacağını faizlə müəyyən etməyə imkan verir. Tıkladıqdan sonra "tutmaq" Təyyarə dərhal məlumatları yazmağa başlayır, onu tsiklik buferə əlavə edir və tətik işə salındıqda, After sahəsində göstərilən vaxtın faizini hesablayır və məlumatları PC-yə göndərir.
"Növ"- Yalnız "Sadə", "Kompleks" - dəstəklənmir.
"Rejim"- Yalnız "Paralel".
"Maska"- bunlar PD0 xəttində tetikleyicinin siqnalın düşməsini gözləyəcəyi sətirlərdir;
"Dəyər"- tetikleyicinin işə salınacağı siqnalın kənarı. Bayraq yoxlanılır - qabaqcıl kənar. İşarələnməmiş – arxa:

İşi yoxlamaq üçün PD0 və PA2 portlarını (UART test siqnalı bu portda çıxış edir) jumper ilə birləşdirin.

Hamısı budur, klikləyin "tutmaq" və qəbul edilən siqnala baxın (Ctrl+F - ümumi baxış şkalası):

Heç bir şey baş verməyibsə, bu o deməkdir ki, siz yanlış xətlərdə atəş açmaq üçün tətiyi təyin etmisiniz və ya heç bir siqnal yoxdur - lövhənin parametrlərini və əlaqələrini yoxlayın. Tətiyi İstifadəçi düyməsini (mavi düymə) basmaqla əl ilə işə salmaq olar.

Təhlükəsizlik tədbirləri

Unutmayın: mikrokontroller portlarına birbaşa qoşulursunuz! Lövhədə MK-ya quraşdırılmış diodlardan başqa heç bir qoruma yoxdur. Buna görə də, əvvəlcə öyrənilən siqnalın maksimum 3,3V, ekstremal hallarda 5V gərginliyinə malik olduğundan əmin olun, lakin sonra siqnal mənbəyi ilə təyyarə arasında qoruyucu rezistor əlavə etmək məsləhətdir.

Təhlil olunan dövrəyə qoşulduqda, əvvəlcə zəminləri, sonra isə siqnal xətlərini birləşdirməyi unutmayın. Xüsusilə təhlil edilən dövrə təyyarənin qoşulduğu kompüterdən deyil, öz enerji təchizatından qidalandıqda.

Bu məqalə bir məntiq analizatoru haqqında danışacaq - tərs mühəndislik üçün əvəzsiz bir vasitədir və ümumiyyətlə evdə faydalı bir cihazdır. Heç vaxt belə bir cihazla qarşılaşmayanlar üçün deyim ki, məntiq analizatoru osiloskop kimi bir şeydir, lakin onun çoxlu kanalları var və yalnız iki siqnal vəziyyətini ayırd edə bilir: məntiqi sıfır və bir. O, əsasən özünü hansısa məlumat avtobusuna qoşmaq və ondan kompüterə ötürülənləri oxumaq üçün istifadə olunur. Yaxşı, kompüter bu məlumatları istifadəçi dostu bir formada göstərən xüsusi proqramla işləyir. Əgər proqram bizə sadəcə olaraq zamanla uzanan birlər və sıfırlar toplusunu göstərsəydi, o zaman mənasız olardı, çünki bu cür məlumatların təhlili çox mürəkkəbdir və hətta təcrübəli mühəndisi də partlatmağa qadirdir. Buna görə də bütün normal proqramlar 1-Wire, i2c, SPI, UART və s. kimi protokolları deşifrə edə bilir. Mənim qurduğum analizator iki məşhur proqramı dəstəkləyir Saleae məntiqiUSBee Suite.

Cihazın ürəyi internetdə geniş tanınan CY7C68013A nəzarətçisidir. İnsanlar mənim kimi cihazları pərçimləyirlər. Təəssüf ki, burada tapa bilmədim, Ebay-da bu nəzarətçi ilə kiçik bir sazlama lövhəsi almalı oldum ($13) və sonra onu vəhşicəsinə oradan götürməli oldum. Yeri gəlmişkən, eyni lövhədə cihazı düzəltmək üçün lazım olan demək olar ki, hər şey var (buferdən başqa). Şərf özü belə görünür:

Nəzarətçinin pin meydançası çox kiçikdir və əgər siz “birə ayaqqabısı vurmaq” istəmirsinizsə, bu lövhəyə sadəcə bufer lehimləməklə nəzarətçini yerində qoya bilərsiniz. Ancaq demək olar ki, bütün gün beynimi qarışdırdığım bir məqam var - lövhədəki yaddaş çipi eyni deyil. Bu çipin ilk bir neçə baytında cihaz və istehsalçı identifikatoru (PID və VID) olmalıdır. Sonradan məlum olduğu kimi, bu EEPROM yaddaşı nəzarətçi proqramı tərəfindən bəzi məqsədlər üçün istifadə edilə bilər. Mikroproqram 24lc02 yaddaşının nəzarətçiyə qoşulduğunu güman edir, lakin əslində çinlilər oraya 24lc128 əlavə etdilər. Hüceyrələrə ünvanlanan fərqliliyə görə, mikroproqram bəzi yaddaş hüceyrəsinə nəsə yaza (və ya oxuya bilmir) və cihaz işə düşmür. Bununla belə, PID və VID ilə ilk baytlar daha böyük yaddaş çipi ilə belə düzgün yazılır/oxunur. Mikrosxem olduqca nadirdir (köhnə olduğuna görə) və mən onu yerli radio bazarında tapmadım və mövcud olanlardan növbə ilə hər cürə yapışdım. 24lc04 uğurla işlədi, lakin 24lc16 və daha böyük olan hər şey düzgün işləməkdən imtina etdi. Bu problem yalnız Saleae-dən olan proqram təminatı ilə baş verdi, USBee-yə gəldikdə, orada hər şey çipi dəyişdirmədən işləyirdi. Yeri gəlmişkən, CY7C68013A nəzarətçisinin bir əlamətdar xüsusiyyəti var: onun proqram təminatının saxlandığı heç bir dəyişkən yaddaşı yoxdur. Sürücü tərəfindən nəzarətçiyə yazılır və güc olana qədər orada qalır. Beləliklə, yaddaş çipindəki VID və PID-i dəyişdirərək cihazı istənilən şeyə çevirə bilərik :) İndi gəlin cihazımızın nədən hazırlandığına baxaq:

Amma əslində orada demək olar ki, heç nə yoxdur:

  • Nəzarətçinin özü CY7C68013A
  • Yaddaş çipi
  • Bufer
  • 3.3 V stabilizator

Yaxşı, hər hansı bir standart qoşqu. Yeri gəlmişkən, forumlarda insanlar kondansatörlərə qənaət etməyi məsləhət görmürlər, əks halda kortəbii sıfırlamalara və digər sürprizlərə zəmanət verilir. Ayrı-ayrılıqda, tullananların məqsədi haqqında danışmağa dəyər. Mənə nə üçün JP3 lazımdır? Onsuz, indilik hər şey qaydasındadır. Jumper JP1 yazma mühafizəsini idarə edir, onun mövcudluğu çipə bir şey yazmağa imkan verir. JP2 yaddaşı onun sonrakı mikroproqramı üçün nəzarətçidən müvəqqəti olaraq ayırmaq üçün lazımdır. İndi bunu necə edəcəyimizi anlayaq. Yeri gəlmişkən, belə mikrosxemlər üçün adi bir proqramçı ilə onu yandıra bilərsiniz, lakin rahatlıq üçün mənim metodumu istifadə etmək daha yaxşıdır. Etməli olduğunuz ilk şey Cypress SuiteUSB 3.4-ü yükləmək (və quraşdırmaq!)dır, bunu rəsmi internet saytında və ya məndən edə bilərsiniz. Sonra JP2 jumperini çıxarıb JP1 jumperini quraşdırmalısınız. Bundan sonra cihazı bağlayırıq və yeni bir cihazın göründüyünü görürük. Sürücüləri quraşdırdıqdan sonra belə görünməlidir:

Aydındır ki, nəzarətçi yaddaş çipini aşkar etməyib və VID və PID-i oxuya bilməməsi səbəbindən onun kim olduğunu başa düşmür. Nəzarətçi bu rejimdə olduqda, əvvəllər quraşdırdığımız xüsusi yardım proqramından istifadə edərək EEPROM yaddaşına nəsə yaza bilərik. Cihazı ayırmadan JP2 jumperini yerinə qaytarırıq! İndi Usb idarəetmə mərkəzi proqramını işə salmalı və soldakı siyahıdan cihazımızı seçməlisiniz " Cypress EZ-USB FX2LP EEPROM yoxdur". Sonra menyuda elementi seçməlisiniz FX2 proqramı -> Kiçik EEPROM və açılan pəncərədə məzmununu EEPROM-da yandırmaq istədiyiniz faylı seçin. Proqramdan istifadə etmək istəyirsinizsə Saleae məntiqi, onda siz onu orada yandırmalısınız. Və istifadə etmək istəyirsinizsə USBee Suite Bu . Hər şey uğurla tikildikdə, pəncərənin altında aşağıdakı mesaj görünəcək:

Səhv varsa, JP1 və JP2 keçidləri quraşdırılmayıb. İndi proqramı quraşdıra və analizatoru işə salmağa cəhd edə bilərsiniz. Proqram təminatı Saleae məntiqi Siz onu rəsmi internet saytından yükləyə bilərsiniz və ya USBee Suite ya da mənim. Quraşdırma heç bir problem yaratmamalıdır, biz hər yerdə "növbəti" düyməsini sıxırıq və hər şeylə razılaşırıq :) Mən hələ bu analizatordan xüsusilə aktiv istifadə etməmişəm, ona görə də proqram təminatı haqqında ətraflı danışmayacağam, yalnız sizə deyəcəm. bu iki proqramın əsas imkanları. Yaxşı, daha sadə bir şeylə başlayacağam: Saleae məntiqi. Proqram təminatı aşağıdakı protokolları deşifrə edə bilər:

  • DMX-512
  • I2S/PCM
  • Mançester
  • 1-tel
  • Async Serial
  • Sadə Paralel
  • UNI/O

Şifrəni açdıqdan sonra məlumatlar mətn faylına yüklənə və ya xam formada saxlanıla və sonra təhlil edilə bilər. Məsələn, DS18B20 termometri ilə nəzarətçi arasında məlumat mübadiləsi belə görünür:


Və buradan salamlar göndərirəm:

Məlumatların tutulması ya əllə, ya da tətiklə başlaya bilər. Bu proqramın üstünlüyü onun sadəliyi və intuitiv interfeysidir. Və aşağıdakı proqramla müqayisədə resurslara çox tələbkar deyil USBee Suite. Başlanğıcdan dərhal sonra dizaynımızda fiziki olaraq mövcud olmayan 8 rəqəmsal kanal və bir analoqumuz olacaq. Buna görə də, onun yanındakı xaça klikləməklə onu söndürə bilərsiniz. Yaxşı, ya da ADC-ni və bir az naqilləri lehimləyə bilərsiniz və işə başlayacaq. Ancaq normal osiloskopumla buna ehtiyacım yoxdur və narahat olmadım. Proqram aşağıdakı protokolları başa düşə bilər

  • Serialı sinxronlaşdırın
  • Paralel avtobus
  • Async Serial
  • SMBus
  • 1-tel

Əsas artı odur ki, o, USB-ni başa düşür, mənə hələ lazım deyil, amma tezliklə onu yandıracağam və sonra analizator lazımlı olacaq. Bu proqramdan istifadə edərək yuxarıda göstərilən məlumatları götürməyə çalışdım. Yenə Dallas yarımkeçiricisindən eyni 1 telli termometr:

və yenə eyni məlumat vasitəsilə göndərildi:

Təəccübləndim ki, bütün sərinliyinə baxmayaraq, hər iki proqram UART sürətini avtomatik olaraq necə aşkar etməyi bilmir. Digər protokollara gəlincə, onlar hələ buna nail olmayıblar, amma mən onları mütləq sınayacağam. Cihaz üçün heç bir mənzilim yoxdur, amma yaxın gələcəkdə biri görünəcək. Mən də rəngli məftillər almağı məsləhət görürəm, çünki proqramlardakı hər bir kanalın öz rəngi var və bu, çox rahatdır. Lövhənin demək olar ki, hər hansı bir yerinə rahatlıqla bağlana bilən tutacaqlar da faydalı olacaq:

Onlar "adlanır Test çəngəl klipi zondları" kim xaricdə mağazalara baxsa. Onlar DealExtreme-də bir anda 20 dəstdə satılır. Şura ilə bağlı sualları gözləyərək, onun adi LUT tərəfindən edildiyini dərhal söyləyəcəyəm. Heç bir yerə heç nə düşmədi. Nəzarətçi bir lehimləmə dəmiri, paspaslar və saç qurutma maşını ilə lehimləndi. Əsas odur ki, tələsməyin. Yaxşı, bütün digər hissələr çox böyükdür və saç qurutma maşını və ya lehimləmə dəmiri ilə asanlıqla və təbii şəkildə lehimlənə bilər. Yeri gəlmişkən, bu mənim Eagle-da ilk lövhəmdir, ona görə də çox sərt mühakimə etməyin :)

İşarənin özü yüklənə bilər. Təklif və iradlar qəbul olunur.

Arduino, yalnız mühəndisin təxəyyülü ilə məhdudlaşan istənilən cihazı yaratmağa imkan verən unikal mikrokontrollerdir. Bu gün biz bu layihələrdən biri haqqında danışacağıq və Arduino-da anten analizatorunu, həmçinin lehimləmə və proqramlaşdırma zamanı qarşılaşmalı olduğunuz bütün nüansları təhlil edəcəyik.

Əslində, Arduino-da spektr analizatoru kifayət qədər sadə bir layihədir, lakin bu, yeni başlayanlar və bu cihazı alət dəstinə əlavə etmək istəyənlər üçün idealdır. Arduino-da məntiq analizatorunun nə olduğuna və onu dizayn və lehimləmə zamanı sizi hansı tələlərin gözlədiyinə baxaq.

Arduino MK əsasında məntiq analizator sxemi

Əvvəlcə lehimləyəcəyimiz şeyi dizayn etməliyik. Məntiq analizatoru sadə bir alətdir, onun bütün işi elektrik cərəyanının tətbiqi ilə ötürülən ikili kodu (rəqəmsal siqnal) oxumaq və təhlil etməkdir.

Başqa sözlə, cihaza verilən hər 5 volt birdir, bunun olmaması sıfırdır. Bu ikili kod verilənlərin kodlaşdırılmasında və bir çox cihazlarda, o cümlədən Arduino-da istifadə olunur. Oxumaq, bir qayda olaraq, birindən başlayır. Layihənizi binar kodlaşdırma ilə yoxlamaq üçün sizə məntiq analizatoru lazımdır.

Ən asan yol, bu günə qədər əksər elektron cihazlarda istifadə olunan I2C avtobusunda cihazı sınamaqdır. Nə dizayn etməli olduğumuzu anlamaq üçün cihazın əsas xüsusiyyətlərinə baxaq:

  1. Daxil olan siqnalların məntiqi təhlili üçün 4 kanal.
  2. Siqnal tezliklərinin dəyişkənliyi 400 kHz-ə qədərdir, bu diapazon ixtisaslaşmış olanlar istisna olmaqla, əksər müasir cihazları əhatə edəcəkdir.
  3. Giriş gərginliyi +5 Volta qədər olmalıdır, artıq təsvir olunduğu kimi, bu, vahid kimi qəbul edilən standartdır (siqnalın olması).
  4. Məlumat göstərmək üçün LED displey. Xüsusilə mürəkkəb proqramçılar bir neçə LED ala və ehtiyac duyduqları diaqonalın öz displeyini qura bilərlər, lakin hər kəs üçün belə bir cihaz üçün proqram yazmaq çox əmək tələb edəcək və lazımsız bir addım olacaq. Buna görə də, burada LCD displeyli bir cihaz versiyasını nəzərdən keçirəcəyik.
  5. Enerji təchizatı üçün 4 batareya, maksimum 4,8 Volt gərginlikdə 1,2 V.
  6. RAM. İki növ götürmək məsləhətdir - yüksək sürətli (bir siqnal üçün 3,6 ms) və aşağı sürətli (36 s), bu həll bütün siqnal diapazonunu əhatə etməyə imkan verəcəkdir.
  7. İdarəetmə paneli və ya bir cüt düymə.
  8. Quruluşun bərkidilməsi üçün hər hansı bir qabıq. Onu 3D printerdə çap edə bilərsiniz, lazımsız plastik qutu götürə və ya ümumiyyətlə qutusuz edə bilərsiniz. Burada məsləhət verməyəcəyik, cihaz qabıqlı və ya qabıqsız işləyir, seçim sizindir.

Güc üçün batareyaları seçməlisiniz, çünki 4 1,5 Volt batareya Arduino-nu zədələyə və lövhəni yandıra bilər. LCD displey üçün təhlükəni demirəm. Buna görə də, qənaət etməyin və keyfiyyətli komponentləri götürməyin. Axı, son məhsulun keyfiyyəti onun ən pis komponentinin parametrinə bərabərdir.

Batareyaların sadəcə boşalmaması üçün enerji təchizatı və cihazı söndürmək üçün istifadə ediləcək son dövrəyə S1 açarını əlavə etməyi unutmayın.

Siqnal zondunun barmaqlarının elektromaqnit sahəsinə görə görünə biləcək yanlış məlumatları aradan qaldıracaq xüsusi açılan rezistorlar da tələb olunacaq. Nəticədə rəqəmsal girişlərdə səs-küy və təhrif minimal olacaqdır.

LED-i istədiyiniz kimi götürə bilərsiniz, rəqəmsal siqnalın mövcudluğunu göstərmək lazımdır və onu tamamilə LCD displey üçün proqram təminatı ilə əvəz etmək olar. Bu həll yalnız rəqəmsal siqnalların yaddaşa yazılmasının göstəricisi kimi rahatdır, lakin istənilən halda cihazı əl ilə aktivləşdirəcəksiniz, beləliklə, lazım olduqda belə bir göstərici silinə bilər.

Arduino mikrokontrolleri əsasında məntiq analizatoru yaratmaq üçün tövsiyə olunan periferiya qurğuları

Yuxarıda göstərilənlərin hamısından, siz artıq satınalma üçün periferik cihazların təxmini siyahısını tərtib etmisiniz, lakin bu məqamı aydınlaşdıraq. Məntiq analizatorunda sizə lazım olacaq:

  1. Arduino mikro nəzarət cihazının özü. Hansı birini seçdiyinizin fərqi yoxdur, bu, yalnız cihazın son ölçüsünə təsir edəcək. İstənilən versiya üçün proqram eyni görünür. Yuxarıdakı şəkildəki lövhədən istifadə olunub.
  2. LCD displey. Köhnə düyməli telefonunuz varsa, onu çıxarıb “tullantısız” istehsal qura bilərsiniz.
  3. Müxtəlif tutumlu rezistorlar.
  4. Cari sensor.
  5. 4 batareya.
  6. Bir və ya iki LED.
  7. Yaddaş kartı, lakin bu isteğe bağlıdır.

Bundan əlavə, təbii olaraq bir lehimləmə dəmir, lehim və digər aksesuarlara ehtiyacınız olacaq. Bütün bunları toplayacağınız bir yer əvvəlcədən tapmaq daha yaxşıdır. Və ilk dəfə bir lehimləmə dəmiri ilə işləyirsinizsə, hər bir hissəni 10 dəfə yenidən lehimləməmək üçün yanğın təhlükəsizliyi qaydalarını və işinin xüsusiyyətlərini öyrənin.

“Məntiq analizatoru” layihəsini həyata keçirərkən Arduino MK-nın proqramlaşdırılması

Arduino-nun populyarlığı sayəsində bu MK-da məntiq analizatorları üçün artıq hazır kitabxanalar və funksiyalar mövcuddur. Etməli olduğunuz yeganə şey düzgün olanı seçmək və cihazınız üçün proqram kodunu yenidən yazmaqdır. Axı, lövhələr, sensorlar və digər girişlər hər kəs üçün fərqlidir və cihazınızın problemsiz işləməsi üçün başqasının kodunu ehtiyaclarınıza uyğunlaşdırmalısınız. Özünüzü narahat etmək istəmirsinizsə və C++ dilində proqramlaşdırma təcrübəniz varsa, istədiyiniz mühitdən istifadə edə bilərsiniz.

Yuxarıdakı fotoşəkildəki dövrə üçün kod belə ola bilər:

/**************************************** 128 by 64 LCD Logic Analyzer 6 kanal və 3Mb/s By Bob Davis Universal 8bit Qrafik Kitabxanasından istifadə edir, http://code.google.com/p/u8glib/ Müəlliflik hüququ (c) 2012, [email protected] Bütün hüquqlar qorunur. ***************************************************** ****/ #include "U8glib. h" // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 // U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11 , 4, 5, 6, 7, 18, 17, 16); // **** QEYD **** Mən üç nəzarət pinini köçürdüm !!! U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 1, 2, 3); int Nümunə; int Giriş=0; int OldInput=0; int xpos=0; void u8g_prepare(void) ( u8g.setFont(u8g_font_6x10); u8g.setFontRefHeightExtendedText(); u8g.setDefaultForegroundColor(); u8g.setFontPosTop(); ) void DrawMarkers(void)(u8.2,8,8,0) (u8,8,0); .drawPixel(20,1); u8g.drawPixel (100,62); müsbət gedən girişin tetikleyicisini gözləyin Input=digitalRead(A0); while (Input != 1)( Input=digitalRead(A0); ) // Analoq məlumatı massivdə toplayın // Heç bir dövrə təxminən 50% daha sürətli deyil. Nümunə=PINC; Nümunə=PINC;<128; xpos++) { u8g.drawLine (xpos, ((Sample&B00000001)*4)+4, xpos, ((Sample&B00000001)*4)+4); u8g.drawLine (xpos, ((Sample&B00000010)*2)+14, xpos, ((Sample&B00000010)*2)+14); u8g.drawLine (xpos, ((Sample&B00000100)*1)+24, xpos, ((Sample&B00000100)*1)+24); u8g.drawLine (xpos, ((Sample&B00001000)/2)+34, xpos, ((Sample&B00001000)/2)+34); u8g.drawLine (xpos, ((Sample&B00010000)/4)+44, xpos, ((Sample&B00010000)/4)+44); u8g.drawLine (xpos, ((Sample&B00100000)/8)+54, xpos, ((Sample&B00100000)/8)+54); } } void setup(void) { pinMode(A0, INPUT); pinMode(A1, INPUT); pinMode(A2, INPUT); pinMode(A3, INPUT); pinMode(A4, INPUT); pinMode(A5, INPUT); // assign default color value if (u8g.getMode() == U8G_MODE_R3G3B2) u8g.setColorIndex(255); // RGB=white else if (u8g.getMode() == U8G_MODE_GRAY2BIT) u8g.setColorIndex(3); // max intensity else if (u8g.getMode() == U8G_MODE_BW) u8g.setColorIndex(1); // pixel on, black } void loop(void) { // picture loop // u8g.firstPage(); do { draw(); } while(u8g.nextPage()); // rebuild the picture after some delay delay(100); }

Arduino ilə işləmək üçün kitabxanaları yükləməyi unutmayın. Həm də nəzərə alın ki, çıxış LCD ekrana gedir. Proqram təminatını yazmağı bitirdikdən sonra onu xüsusi USB adapterdən istifadə edərək lövhəyə yükləmək kifayətdir.

Ola bilər ki, LCD displeydə məlumatın göstərilmə üsuluna görə sizin cihazın kifayət qədər daimi yaddaşı olmayacaq. Bu halda, bir flash sürücü almaq və onu sistemə əlavə etmək mantiqidir. Xoşbəxtlikdən, bu olduqca sadə şəkildə edilir və sizə lazım olan tək şey fiziki sürücü forma faktorunuz üçün xüsusi adapterdir.

Cihazın əsas xüsusiyyətləri:

  • 32-yə qədər giriş kanalı;
  • yaddaş hər kanal üçün 128 KB;
  • 100 MHz-ə qədər seçmə tezliyi;
  • xarici saat girişi;
  • bütün girişlər 3,3 V və 5 V məntiqə uyğundur;
  • konfiqurasiya edilə bilən qabaqcadan gətirmə/sonradan gətirmə bufer ölçüsü 8 KB-a bərabərdir;
  • 16 bitlik daxili saat generatoru;
  • bir neçə daxili sinxronizasiya rejimi;
  • proqramlaşdırıla bilən sinxronizasiya gecikməsi;
  • proqramlaşdırıla bilən sinxronizasiya hadisə sayğacı;
  • xarici sinxronizasiya girişi;
  • LPT (EPP rejimi) və ya USB interfeysi vasitəsilə PC ilə əlaqə;
  • Müxtəlif əməliyyat sistemləri üçün kompüter proqramlarının bir neçə versiyası.

Məntiq analizatorunun əsas elementi bütün əsas funksiyaları yerinə yetirən şirkət tərəfindən istehsal olunan FPGA-dır. Cihazın sxematik diaqramı Şəkil 1-də göstərilmişdir.

Köhnə kompüter anakartından götürülmüş osilator IC4 (IC6) FPGA üçün saat mənbəyi kimi istifadə olunur. Osilatorun 5 V gərginlikdə işləmək üçün nəzərdə tutulmasına baxmayaraq, 3,3 V gərginliklə təchiz edildikdə cihazın işində heç bir problem müəyyən edilməmişdir.

Nümunələri saxlamaq üçün xarici yüksək sürətli RAM çipi istifadə olunur.

Cihazı gücləndirmək üçün 15 V-a qədər çıxış gərginliyi olan xarici mənbə istifadə olunur, FPGA və RAM-da 3,3 V təchizatı gərginliyi var, buna görə də LD1117DT33 seriyasının 3,3 V gərginlik tənzimləyicisi quraşdırılmışdır.

K7 paralel port konnektoru məntiq analizatorunun lövhəsində yerləşir və birbaşa FPGA-ya qoşulur. Məntiq analizatorunun dövrə lövhəsi səthə montaj komponentləri və adi qurğuşun komponentlərdən istifadə etməklə ikitərəflidir. Çap dövrə lövhəsinin görünüşü Şəkil 2-də göstərilmişdir.

Şərh. SRAM çipinin 40-cı pininin (Vss) yerinə bu çipin 39-cu pin torpağa bağlıdır. Həll yolu: PCB-də 39 və 40-cı pinləri birləşdirin (pin 39 SRAM çipində istifadə edilmir).

USB vasitəsilə fərdi kompüterə qoşulmaq üçün diaqramı Şəkil 3-də göstərilən xüsusi adapterdən istifadə etməlisiniz.

Məntiq analizatoru üçün USB interfeys adapteri FTDI tərəfindən istehsal edilmiş FT2232C seriyalı çipdə yığılmışdır. Bu mikrosxem iki ayrı mikrosxem FT232BM və FT245BM-in funksionallığını birləşdirir. Ayrı-ayrılıqda konfiqurasiya edilmiş iki I/O kanalı var. Cihazın bir hissəsi kimi istifadə üçün FT2232C konfiqurasiyasının əsas məqamları USB interfeysindən enerji təchizatı və mikrokontroller avtobusunun emulyasiya rejimidir (MCU Host Bus Emulation rejimi). Bu rejim IC3 74HCT4053D multipleksorundan istifadə edərək EPP protokoluna çevrilir. /DST, /AST və RD/WR siqnallarının birbaşa dekodlanması zamanlama ziddiyyətlərinə səbəb ola biləcəyi üçün, EPP protokolu vasitəsilə məlumat ötürülməsi dövrlərində RD/WR (oxu/yazma) siqnalı kimi istifadə olunan əlavə A8 siqnalı istifadə olunur. .

JTAG konnektoru (CON2) FPGA-nı konfiqurasiya etmək üçün istifadə olunur - bu gələcək inkişaf üçündür, hazırda bu interfeys istifadə edilmir.

93LC56 seriyalı EEPROM (IC2) FT2232C üçün konfiqurasiya məlumatlarını saxlayır və proqramlaşdırıla bilən interfeysin düzgün işləməsi üçün tələb olunur. Bu çipi proqramlaşdırmaq üçün FT_Prog yardım proqramı istifadə olunur (əvvəllər MProg adlanırdı). Bu yardım proqramı və FT2232C sürücüləri FTDI saytında yükləmək üçün mövcuddur.

Adapter çaplı dövrə lövhəsi birtərəfli dizayn edilmişdir ki, bu da onun istehsalını asanlaşdırır.

USB interfeys adapterinin B 1.0 versiyası da var (Şəkil 5). Bu versiya CANNON 25 konnektorunun gövdəsinə inteqrasiya olunmaq üçün nəzərdə tutulmuş JTAG konnektorunun və çap dövrə lövhəsinin olmaması ilə fərqlənir.

a) b)
Şəkil 6. USB interfeys adapterinin A 1.1 (a) versiyası və B 1.0 (b) versiyasının görünüşü

USB və LPT interfeyslərinin artıq inteqrasiya olunduğu məntiq analizator sxeminin başqa bir versiyası da var (Şəkil 7). Bu variantın müəllifi Bob Griebdir və dövrəni hazırlayarkən TinyCAD mühitindən istifadə edilmişdir, bunun üçün çap dövrə lövhəsi FreePCB redaktorunda hazırlanmışdır.