Cov txheej txheem:

Arduino UNO Logic Sniffer: 8 Kauj Ruam (nrog Duab)
Arduino UNO Logic Sniffer: 8 Kauj Ruam (nrog Duab)

Video: Arduino UNO Logic Sniffer: 8 Kauj Ruam (nrog Duab)

Video: Arduino UNO Logic Sniffer: 8 Kauj Ruam (nrog Duab)
Video: Logic Analyzer to Decode I2C Bus from BK1088 DSP Radio Receiver + Arduino 2024, Hlis ntuj nqeg
Anonim
Arduino UNO Logic Sniffer
Arduino UNO Logic Sniffer

Txoj haujlwm no pib ua qhov kev sim yooj yim. Thaum kuv tshawb fawb txog ATMEGA328P cov ntawv rau lwm qhov haujlwm, Kuv pom qee yam uas ntxim nyiam. Timer1 Lub Tswv Yim Ntsuas Lub Tsev. Nws tso cai rau peb Arduino UNO lub microcontroller txhawm rau txheeb xyuas lub teeb liab, khaws lub sijhawm, thiab ua kom muaj kev cuam tshuam, txhua yam khoom siv kho vajtse.

Tom qab ntawd kuv xav tsis thoob hauv daim ntawv thov twg nws tuaj yeem muaj txiaj ntsig, thiab yuav ntsuas nws li cas. Raws li kuv xav kom tau txais kev txheeb xyuas qhov laj thawj rau qee lub sijhawm tam sim no, Kuv txiav txim siab sim ua ib qho hauv kuv li Arduino UNO pawg thawj coj, tsuas yog sim qhov tshwj xeeb, thiab saib seb peb puas tuaj yeem tau txais txiaj ntsig zoo los ntawm nws.

Kuv tsis yog tib tus uas muaj lub tswv yim no, thiab koj yuav pom ntau ntawm lawv los ntawm googling "Arduino Logic Analyzer". Thaum pib ntawm txoj haujlwm, raws li nws nyuam qhuav pib ua qhov kev sim, kuv tsis tau paub tias tib neeg twb ua nws lawm, thiab zoo siab los ntawm cov txiaj ntsig zoo uas lawv ua tiav nrog cov khoom me me no. Txawm li cas los xij, kuv tsis tuaj yeem nrhiav lwm txoj haujlwm uas siv chav ntsuas cov khoom siv, yog li yog koj twb tau pom qhov no, qhia rau kuv paub!

Txhawm rau ua kom pom tseeb, kuv tus kws tshuaj xyuas qhov laj thawj yuav:

  • Muaj ib channel,
  • Muaj lub graphical interface,
  • Sib tham nrog lub interface los ntawm USB,
  • Khiav ntawm Arduino UNO board.

Thaum kawg nws yuav muaj 800 qhov ntsuas qhov cim xeeb tob, thiab muaj peev xwm ua tiav ntes 115200 bauds UART lus (Kuv tsis tau sim nws tiag tiag ntawm qhov nrawm dua).

Cov lus qhia no muaj ob qho "nws ua haujlwm li cas" thiab "yuav siv nws li cas" ib feem ntawm txoj haujlwm no, yog li rau cov uas tsis txaus siab los ntawm cov kws tshaj lij, koj tuaj yeem dhia ncaj qha mus rau theem 4.

Khoom siv

Kuv xav khaws cov kws tshuaj xyuas yooj yim li sai tau, yog li xav tau cov cuab yeej me me heev.

Koj yuav xav tau:

  • Ib pawg Arduino UNO (lossis sib npaug li nws tso siab rau ATMEGA328P MCU),
  • Ib lub computer,
  • Ib yam dab tsi los debug (lwm Arduino UNO board ua haujlwm tau zoo los ua qee qhov kev sim).

Cov cai rau ob qho Arduino UNO thiab lub vev xaib sib tham tuaj yeem pom ntawm no. Koj tseem yuav xav tau p5.serialcontrol, thiab PulseView software.

Kauj Ruam 1: Txoj Cai Ua Haujlwm

Txoj Cai Ua Haujlwm
Txoj Cai Ua Haujlwm

Lub tswv yim yog yooj yim. Koj xaiv qhov chaw teeb tsa, thiab nyem rau ntawm "tau". Lub vev xaib sib tham yuav xa lawv mus rau p5.serialcontrol software, uas tso cai rau peb siv cov lej sib cuam tshuam los ntawm qhov browser, vim nws tsis tuaj yeem nkag ncaj qha rau nws. P5.serialcontrol software tom qab xa cov ntaub ntawv mus rau Arduino UNO pawg thawj coj, uas ntes cov ntaub ntawv, thiab xa lawv rov qab mus rau lub interface los ntawm tib txoj hauv kev.

Yooj yim! Zoo … Raws li kuv tsis zoo tiag ntawm Tib Neeg/Tshuab interface programming lossis lub vev xaib thev naus laus zis, kuv yog qhov tseeb me ntsis dab tuag thiab kab laum. Tab sis nws tso cai rau kuv kom pib ntes thiab khaws kuv cov ntaub ntawv rov qab, uas yog qhov nws tau tsim los rau, yog li kuv xav tias nws zoo. Rau kev txheeb xyuas hnyav dua ua haujlwm, Kuv xa kuv cov ntaub ntawv mus rau PulseView, uas yog qhov yooj yim siv thiab muab cov txheej txheem zoo thiab cov txheej txheem txiav txim siab, raws li peb yuav pom tom qab.

Arduino UNO cov khoom siv nkag tau tuaj yeem teeb tsa los siv ntau lub sijhawm sib faib, yog li txo qhov kev daws teeb meem, tab sis ua rau ncua qeeb ua ntej dhau los. Nws tseem tuaj yeem ua rau nce, ntog lossis ob sab los pib khaws cov ntaub ntawv.

Kauj ruam 2: Arduino UNO Sketch

Arduino UNO Daim Duab
Arduino UNO Daim Duab

Kuv tau sau thiab suav ua cov duab nrog Arduino IDE. Kuv xub pib los ntawm teeb tsa Timer1 hauv "Normal" hom haujlwm los ntawm kev sau ntawv mus rau nws TCCR1A thiab TCCR1B sau npe hauv teeb (). Kuv tom qab ntawd tau ua qee qhov haujlwm kom yooj yim me ntsis nws siv yav tom ntej, zoo li ib qho los teeb tsa lub moos faib npe "setTim1PSC ()". Kuv kuj tau sau cov haujlwm los qhib thiab ua haujlwm Timer1 cov khoom siv nkag mus thiab cov kev cuam tshuam ntau dhau.

Kuv ntxiv qhov "piv txwv" array, uas yuav tuav cov ntaub ntawv tau txais. Nws yog cov txheej txheem thoob ntiaj teb uas kuv tau teeb tsa "tsis hloov pauv" los tiv thaiv cov ntawv sau ua kom ua kom zoo dua qub thiab muab tso rau hauv flash, zoo li nws tau ua thaum kuv thawj zaug suav sau. Kuv txhais nws raws li "uint16_t" array, raws li Timer1 kuj tseem yog 16 ntsis, nrog qhov ntev ntawm 810. Peb nres ntes ntawm 800 qhov txiaj ntsig, tab sis raws li qhov ntsuas tau ua tiav sab nraud ntawm kev cuam tshuam rau qhov laj thawj pom tseeb, Kuv tau xaiv kom khaws 10 ntau qhov tseem ceeb los tiv thaiv kev hla. Nrog ob peb qhov kev hloov pauv ntxiv rau tus lej seem, daim duab kos siv 1313 bytes (88%) ntawm kev nco, tawm hauv peb nrog 235 bytes ntawm RAM dawb. Peb twb tau siv lub cim xeeb siab, thiab kuv tsis xav ntxiv qhov peev xwm ua piv txwv, vim nws tuaj yeem ua rau coj tus cwj pwm txawv vim qhov chaw nco tsawg dhau.

Hauv kuv qhov kev thov kom ib txwm nce kev ua tiav nrawm, Kuv siv cov lus taw qhia tsis yog yog cov lus sab hauv cuam tshuam, txhawm rau txo lawv lub sijhawm ua haujlwm kom tsawg kawg. Tus pin ntes yuav ib txwm yog Arduino UNO tus lej 8, vim nws tsuas yog ib qho txuas nrog Timer1 cov khoom siv nkag mus.

Cov txheej txheem ntes tau pom ntawm daim duab saum toj no. Nws pib thaum Arduino UNO tau txais UART cov ntaub ntawv siv tau, muaj cov kev teeb tsa xav tau. Tom qab ntawd peb ua cov txheej txheem no los ntawm kev teeb tsa cov npe raug cai txhawm rau ntes ntawm ntug uas tau xaiv, thiab siv txoj cai faib sijhawm. Peb mam li pab PCINT0 (tus pin hloov) cuam tshuam txhawm rau txheeb xyuas thawj lub teeb liab. Thaum peb tau txais nws, peb rov pib dua Timer1 tus nqi, ua kom lub PCINT0 cuam tshuam, thiab pab kom ICU (Input Capture Unit) cuam tshuam. Txij lub sijhawm ntawd, txhua qhov ntog/nce ntawm ntug ntawm lub teeb liab (nyob ntawm kev teeb tsa xaiv), yuav ua rau lub tsev ntim khoom nkag, yog li txuag lub sijhawm ntawm qhov xwm txheej no rau hauv ICR1 rau npe, thiab ua haujlwm cuam tshuam. Hauv qhov kev cuam tshuam no peb muab tus nqi sau npe ICR1 rau hauv peb cov qauv "piv txwv", thiab nce qhov ntsuas rau kev ntes tom ntej. Thaum Timer1 lossis cov array dhau mus, peb kaw qhov ntes cuam tshuam, thiab xa cov ntaub ntawv rov qab mus rau lub vev xaib sib txuas los ntawm UART.

Kuv txiav txim siab siv tus pin hloov pauv cuam tshuam rau kev ntes, vim tias cov khoom siv nkag nkag tsuas yog tso cai ntes ntawm ib lossis lwm qhov ntug, tsis yog ob qho. Nws kuj ua teeb meem thaum koj xav ntes ob sab. Kuv qhov kev daws teeb meem tom qab ntawd yuav tsum hloov pauv me ntsis uas tswj hwm kev xaiv ntug hauv cov ntawv khaws cia tswj kev sau npe ntawm txhua tus qauv khaws cia. Txoj kev ntawd peb xoob hauv kev ua tiav nrawm, tab sis peb tseem tuaj yeem siv cov khoom siv nkag mus rau chav ua haujlwm.

Yog li, raws li koj yuav tau pom, peb tsis tau ntes txhua qhov piv txwv ntawm lub sijhawm ua ntu zus, tab sis peb ntes lub sijhawm qhov kev hloov pauv teeb liab tshwm sim. Yog tias peb tau ntes ib qho piv txwv ntawm txhua lub voj voos moos, txawm tias muaj lub sijhawm faib ntau tshaj plaws, peb yuav tau ntim qhov tsis nyob hauv kwv yees li 0.1s, piv txwv tias peb tau siv hom uint8_t, uas yog qhov tsawg tshaj plaws hauv kev nco tsis siv cov qauv.

Kauj Ruam 3: Web Interface thiab P5.js

Web Interface thiab P5.js
Web Interface thiab P5.js

Raws li lub npe cuam tshuam, lub vev xaib sib tham tau tsim los ntawm kev pab ntawm p5.js. Rau cov uas tsis paub nws twb dhau los lawm, Kuv xav kom koj mus thiab tshawb xyuas lub vev xaib, vim nws yog lub tsev qiv ntawv zoo tiag tiag. Nws yog raws li Kev Ua Haujlwm, siv tau yooj yim, tso cai rau koj kom tau txais txiaj ntsig zoo sai heev, thiab tau sau tseg zoo. Nws yog rau txhua qhov laj thawj uas kuv tau xaiv lub tsev qiv ntawv no. Kuv kuj siv lub tsev qiv ntawv quicksettings.js rau cov ntawv qhia zaub mov, grafica.js ib qho los npaj kuv cov ntaub ntawv, thiab p5.serialport lub tsev qiv ntawv los sib tham nrog Arduino UNO.

Kuv yuav tsis siv sijhawm ntau dhau ntawm lub interface, raws li kuv tsuas yog tsim nws rau cov ntaub ntawv saib ua ntej thiab teeb tsa kev tswj hwm, thiab tseem vim tias nws tsis yog qhov kev kawm ntawm kuv qhov kev sim txhua. Txawm li cas los xij kuv yuav piav qhia hauv cov ntu hauv qab no cov qib sib txawv los siv tag nrho cov kab ke, yog li piav qhia ntau yam kev tswj hwm muaj.

Kauj ruam 4: Teeb System

Thawj qhov yog rub tawm Arduino UNO thiab tus lej interface ntawm no yog tias tseem tsis tau ua tiav. Koj tuaj yeem rov sau dua koj li Arduino UNO board nrog "UNO_LS.ino" kos duab los ntawm Arduino IDE.

Koj yuav tsum tau rub tawm p5.serialcontrol software los ntawm nws qhov chaw cia khoom github. Koj yuav tsum tau txais cov ntawv zip txuam nrog koj lub operating system (Kuv tsuas yog sim nws ntawm Windows). Extract zip hauv daim nplaub tshev, pib ua tiav qhov ua tau pom hauv nws, thiab tawm nws zoo li ntawd. Tsis txhob sim txuas mus rau ib qho chaw nres nkoj, tsuas yog tso nws khiav hauv keeb kwm yav dhau, nws yuav siv los ua kev sib txuas.

Qhib cov ntawv "Interface". Koj yuav tsum nrhiav cov ntaub ntawv npe "index.html". Qhib nws hauv koj tus browser, nws yog lub web interface.

Thiab qhov ntawd yog nws! Koj tsis tas yuav rub cov tsev qiv ntawv ntxiv, txhua yam yuav tsum suav nrog hauv pob uas kuv tau muab.

Kauj Ruam 5: Kev sib txuas, teeb tsa thiab tau txais

Kev sib txuas, Kev teeb tsa thiab kev yuav khoom
Kev sib txuas, Kev teeb tsa thiab kev yuav khoom

Txhawm rau txuas lub interface rau Arduino UNO lub rooj tsavxwm, tsuas yog xaiv qhov chaw nres nkoj sib xws hauv cov npe thiab ntaus lub pob "Qhib". Yog tias kev ua haujlwm tau ua tiav, cov lus "xeev" yuav tsum tso saib qee yam xws li "COMX qhib".

Tam sim no koj tuaj yeem xaiv koj cov kev xaiv ntes. Thawj yog xaiv ntug. Kuv pom zoo koj ib txwm siv "Ob", vim nws yuav muab rau koj sawv cev zoo tshaj plaws ntawm lub teeb liab tiag. Yog tias "Ob qho" teeb tsa tsis tuaj yeem ntes lub teeb liab (yog tias lub teeb liab ntau dhau piv txwv), koj tuaj yeem sim nrog "Rising" lossis "Falling" edge setting, nyob ntawm qhov teeb liab koj sim pom.

Qhov teeb tsa thib ob yog lub moos faib. Nws yuav muab qhov kev daws teeb meem rau koj uas koj yuav tuaj yeem ntes lub teeb liab. Koj tuaj yeem xaiv teeb tsa qhov faib faib los ntawm "8", "64", "256" thiab "1024". Arduino UNO pawg thawj coj siv 16MHz quartz txhawm rau ntsuas lub microcontroller, yog li qhov ntsuas qhov ntsuas yuav yog "16MHz/faib faib". Ceev faj nrog qhov teeb tsa no, vim nws tseem yuav txiav txim siab seb koj yuav tuaj yeem ntes lub teeb liab ntev npaum li cas. Raws li Timer1 yog lub sijhawm 16 ntsis, lub sijhawm ntes tau tso cai ua ntej dhau yuav yog "(2^16)*(faib faib)/16MHz". Nyob ntawm qhov teeb tsa koj xaiv, nws yuav nyob nruab nrab ntawm ~ 33ms thiab 4.2s. Khaws koj qhov kev xaiv hauv koj lub siab, koj yuav xav tau nws tom qab.

Qhov teeb tsa zaum kawg yog lub suab nrov canceller. Kuv tsis tau ua ntau qhov kev sim rau nws, thiab koj yuav tsis xav tau nws hauv 99% ntawm cov xwm txheej, yog li cia li tso nws tseg. Rau cov uas tseem xav paub txog nws, koj tuaj yeem tshawb nrhiav lub suab nrov tshem tawm hauv ntu Timer/Counter1 ntawm ATMEGA328P cov ntawv teev npe.

Tsis txhob hnov qab txuas Arduino UNO pawg thawj coj tus pin 8 rau koj lub teeb liab, thiab xaim thaj av ua ke kom muaj qhov ntsuas hluav taws xob zoo ib yam rau ob qho kev sim ntsuas thiab ntsuas kev ntsuas. Yog tias koj xav tau kev sib cais hauv av, lossis xav tau ntsuas cov cim nrog qib sib txawv ntawm 5V, koj yuav xav tau ntxiv ib qho kev cais cais cais rau koj lub Circuit Court.

Thaum txhua yam tau teeb tsa kom raug, koj tuaj yeem nias lub pob "Txais".

Kauj Ruam 6: Txheeb Cov Ntsiab Lus thiab CSV Cov Ntaub Ntawv Xa Tawm

Capture Results thiab CSV Data Export
Capture Results thiab CSV Data Export

Thaum koj Arduino UNO ua tiav qhov kev ntes, nws yuav xa cov ntaub ntawv rov qab mus rau lub vev xaib sib tham, uas yuav npaj lawv. Koj tuaj yeem nthuav tawm lossis tawm nrog txoj kab swb raug, thiab taug kev los ntawm cov qauv nrog hauv qab ib qho.

Cov phiaj xwm tsuas yog muab rau koj saib ua ntej, thiab tsis muaj cov cuab yeej ntsuas cov ntaub ntawv. Yog li, txhawm rau txheeb xyuas ntxiv rau koj cov ntaub ntawv, koj yuav tsum tau xa nws mus rau hauv PulseView.

Thawj kauj ruam yog xa cov ntawv csv uas muaj tag nrho koj cov ntaub ntawv. Txhawm rau ua qhov no, koj tsuas yog yuav tsum nyem rau ntawm "Export" khawm los ntawm lub vev xaib interface. Txuag koj cov ntaub ntawv hauv qhov chaw paub thaum nug.

Tam sim no qhib PulseView. Nyob rau sab saum toj cov ntawv qhia zaub mov bar, nyem rau ntawm "Qhib" (lub cim nplaub tshev), thiab xaiv "Ntshuam Comma cais cov txiaj ntsig …". Xaiv cov ntaub ntawv csv tsim yav tas los uas muaj koj cov ntaub ntawv.

Ib lub qhov rai me me yuav tshwm sim. Tawm txhua yam raws li nws yog, koj tsuas yog yuav tsum hloov kho qhov "Piv txwv" teeb tsa raws li lub sijhawm faib khoom faib rau xaiv. Koj tus qauv piv txwv yuav yog "16MHz/(faib faib)". Tom qab ntawv nyem rau "Ok", koj lub teeb liab yuav tsum tshwm ntawm qhov screen.

Kauj Ruam 7: PulseView Teeb Pom Kev Ntsuam Xyuas

PulseView teeb liab tsom xam
PulseView teeb liab tsom xam

PulseView nta ntau qhov kev txiav txim siab raws tu qauv. Txhawm rau nkag mus rau lawv, nyem rau ntawm "Ntxiv cov txheej txheem txiav txim siab" nyob rau sab saum toj ntawv qhia zaub mov bar (cov cuab yeej zoo tshaj plaws). Rau kuv qhov kev sim, kuv tsuas yog xa cov lus UART yooj yim ntawm 9600 bauds, yog li kuv tshawb nrhiav "UART".

Nws yuav ntxiv cov channel nrog cov cim npe ntawm nws sab laug (ib yam li ib qho rau koj cov ntaub ntawv). Los ntawm txhaj rau ntawm daim ntawv, koj tuaj yeem hloov pauv tus txiav txim siab teeb tsa. Tom qab xaiv qhov raug, kuv tuaj yeem khaws cov lus zoo ib yam li ib qho xa los ntawm kuv lub cuab yeej ntsuas. Qhov no qhia tau tias tag nrho cov kab ke ua haujlwm raws li xav tau.

Kauj Ruam 8: Xaus

Xaus
Xaus

Txawm hais tias txoj haujlwm yog, thaum pib, kev sim, kuv zoo siab nrog cov txiaj ntsig kuv tau txais. Kuv muaj peev xwm ua piv txwv UART cov cim qhia txog li 115200 bauds hauv "Ob leeg" ntug hom yam tsis muaj teeb meem, thiab kuv txawm tias tswj tau nce mus txog 230400 bauds hauv "Ntog" ntug hom. Koj tuaj yeem pom kuv teeb teeb tsa ntawm daim duab saum toj no.

Kuv qhov kev siv muaj ntau qhov tsis zoo, pib los ntawm qhov tseeb tias nws tsuas tuaj yeem ntes ib lub teeb liab ib zaug, txij li tsuas yog Arduino UNO tus pin 8 yog "nkag tau lub peev xwm". Yog tias koj tab tom nrhiav rau Arduino cov laj thawj kev ntsuas nrog ntau txoj hauv kev, mus xyuas Catoblepas 'ib qho.

Koj tsis tuaj yeem cia siab tias Arduino UNO tuaj yeem ntes cov cim nrog cov zaus ntau (qee qhov MHz), vim nws tsuas yog teev ntawm 16MHz (yog tias leej twg ua nws, Kuv yuav txaus siab pom nws txoj kev). Txawm li cas los xij, Kuv tseem txaus siab los ntawm cov txiaj ntsig peb tuaj yeem tawm ntawm ATMEGA328P microcontroller no.

Kuv tsis xav tias kuv yuav ua haujlwm ntau ntawm cov cai. Kuv tau ua kuv qhov kev sim, thiab tau txais cov txiaj ntsig uas kuv tau tshawb nrhiav. Tab sis yog tias leej twg xav pab, xav tias dawb los hloov pauv thiab faib tawm tag nrho lossis ib feem ntawm kuv cov cai.

Qhov ntawd yog kuv thawj Phau Ntawv Qhia, thiab qhov ntev kuv xav. Kuv vam tias nws tau nyeem zoo rau koj.

Qhia rau kuv paub yog tias koj pom yuam kev, lossis yog koj muaj lus nug!

Pom zoo: