|
一、探究背景
從事電子行業(yè)的朋友,特別是從事嵌入式工作的朋友,都知道邏輯分析儀這個(gè)工具,用它來抓協(xié)議是非常方便可靠的。基本上所有的標(biāo)準(zhǔn)總線協(xié)議, 邏輯分析儀都能分析出來。
但是,對于非標(biāo)準(zhǔn)的協(xié)議,邏輯分析儀就無能為力了。因?yàn)檫壿嫹治鰞x 所分析的協(xié)議是標(biāo)準(zhǔn)的、已知的、預(yù)編程分析的。所以,有必要對非標(biāo)準(zhǔn)的 協(xié)議進(jìn)行處理。
接下來,我會在本文中討論和制作一種非標(biāo)準(zhǔn)單總線協(xié)議輔助工具。
二、單總線的特點(diǎn)
單總線,就是主機(jī)和從機(jī)在一根線上來回傳輸數(shù)據(jù)。由于只有一根線, 所以數(shù)據(jù)和時(shí)鐘都包含在內(nèi),它的傳輸時(shí)“半雙工”的,即可以主機(jī)發(fā)從機(jī) 收或者從機(jī)發(fā)主機(jī)收。有兩種方向但不能同時(shí)進(jìn)行,所以稱為“半雙工”。
還有就是,總線空閑時(shí),一定是高電平,一般需要外接上拉電阻把總線拉高。
主機(jī)和從機(jī)的通信端口一般都是配置為輸入懸浮,即端口本身不接上拉電阻 和下拉電阻,端口本身的電平是不確定的,所以需要外接一個(gè)上拉電阻將總 線拉高。在通信時(shí),發(fā)送方端口被配置為輸出模式來拉低電平,端口被配置 為輸入懸浮來釋放總線;接收方的端口配置為輸入懸浮、下降沿中斷來檢測 和獲取數(shù)據(jù)。值得注意的是,單總線對時(shí)序比較敏感,如果傳輸?shù)臄?shù)據(jù)時(shí)序 稍微有偏差,通信往往就失敗。DS18B20溫度傳感器就是標(biāo)準(zhǔn)單總線協(xié)議通 信的,這個(gè)比較典型,網(wǎng)上也有很多例程和講解,單總線入門可以從DS18B20 開始。
三、非標(biāo)準(zhǔn)單總線分析的難點(diǎn)
雖然是非標(biāo)準(zhǔn)的單總線,但其硬件方面還是跟標(biāo)準(zhǔn)的單總線一樣。不同的 地方就是是傳輸協(xié)議了,有許多產(chǎn)品采用非標(biāo)準(zhǔn)單總線協(xié)議來識別自家產(chǎn)品,比 PSP 如日本的數(shù)碼相機(jī)電池、 掌機(jī)電池、部分手機(jī)電池等。它們采用非標(biāo)準(zhǔn)協(xié)議 主要是防止別人生產(chǎn)兼容產(chǎn)品,而且價(jià)格也是比較高的,當(dāng)然對消費(fèi)者是不利的。
以相機(jī)和電池通信為例。把相機(jī)和電池的通信端子和它們的負(fù)極用線引出 來,都接到邏輯分析儀上,我們會看到一大堆高低電平通信,而且還不是標(biāo)準(zhǔn)的 單總線協(xié)議,根本無從下手。
那么問題來了:如果要分析相機(jī)與電池的非標(biāo)準(zhǔn)單總線協(xié)議,如何知道總 線到底是被相機(jī)拉低了還是被電池拉低了?
不解決這個(gè)問題,后面的協(xié)議分析就無法進(jìn)行下去了!!!
四、解決思路
1、相機(jī)和電池通信的等效模
查看附件圖片
2、設(shè)計(jì)模型
查看附件圖片
3、優(yōu)化后模型
查看附件圖片
4、實(shí)際電路設(shè)計(jì)
查看附件圖片
5、實(shí)際測試
查看附件圖片
五、總結(jié)
本文從最簡單的模型分析判斷總線被哪方拉低的可能性,然后逐步完成電路
的設(shè)計(jì),最后搭建電路并且經(jīng)過了測試。對于非標(biāo)準(zhǔn)的協(xié)議輔助分析,本工具能派上用場的。
|
|