【哈爾濱工業大學】《單片機原理》(建議收藏) P35 - 35. 12.1-AT89S51單片機的串行擴展技術(1)

长安书院_
145粉絲
2026年11月13日
AI 生成·可能包含錯誤
我們今天呢主要介紹第十一章二十二章
就是單片機的串行擴展
大家注意啊
單片機的串行擴展呢
是近幾年特別應用非常廣泛的
特別受大家歡迎的一種擴展技術啊
所以是單片機的串行擴展技術
這是我們第十二章的內容
那麼我們前面介紹系統擴展呢
主要講的是並行總線擴展
但是現在呢又出現了串行總線的擴展技術
也是目前單片機應系統設計當中呢
經常用的一種系統擴展技術啊
比如說現在使用比較多的
飛利浦公司的iPhone7串行總線接口
還有達拉斯公司的單總線接口
也把它叫做ewear或者onewear啊
還有摩托羅拉公司推出的
SPI串行接口啊
好
下面大家往前看
我們把這三種常用的
目前常見的串行擴展總線
也俗稱爲123串行總線
一呢
就是單總線
二呢
就是iPhone7
三呢
就SPI啊
就是串行外設接口
好
那麼我們這一張呢
主要介紹這三種串行擴展接口總線的工作原理特點
和它的系統結構
重點介紹一下iPhone7串行擴展技術
那麼大家知道
AT89S5要單片機
片內沒有iPhone7接口
那怎麼辦呢
我們可以利用89S5要單片機的IO口來模擬iPhone7總線
那麼串行擴展技術和並行擴展技術相比呢
它有哪些優點呢
第一和單片機接口需要的IO口線很少
一到四根線
這接口非常簡單
第二個優點呢
是串口器件由於它是串行連接
它的引腳少
所以它的體積小
所以佔用的電路板的面積就小
它的體積實際上大概是並行接口器件的十分之一
另外呢
可以減小電路板的空間和成本
另外它還有什麼優點呢
工作電壓寬
抗干擾能力強
我再三說過
我們設計一個單片機應用系統
抗干擾能力是我們設計系統啊
調試系統一個非常大的一個瓶頸
尤其在環境惡劣的條件下
另外功耗低
數據不易丟失這些優點
所以目前的串行擴展技術呢
在埃及卡智能儀器儀表還有分佈式測控系統都得到了廣泛的應用
首先我們先介紹單種線
就是這一種線的串行擴展
單種線的是美國達拉斯公司推出來
它和外部的外圍器件連接
只有一條數據輸入輸出線叫DQ
那麼總線上所有的器件
你要擴展的器件
都掛在這個DQ線上
那麼實際上大家要注意
由於電路內部呢
還有一個電容
你就不用再外接電源了
所有這個器件的工作電源呢
都有內部的那個電容提供
一會兒我們就會看到
那麼單種線的各種器件
大家注意它實際上是由達拉斯提供公司提供的
爲啥呢
這個總線是達拉斯公司推出來的
那麼它這個器件帶有這個接口呢
都是由達拉斯公司來提供的專用芯片來實現
每一個芯片裏面都有一個64位的ROM
其中呢
這64位裏面存有了16位實進制的編碼序列號
那麼這個序列號實際上就是器件的地址
那麼每一個芯片呢
都是用激光燒寫的編碼
是吧
這樣的話呢
它的地址碼確定以後呢
它在總線上的地址呢
也就是唯一被確定了
那單片機就通過這一根線和各個外圍器件相連
所以就單種線一根線
好
那麼除了這個芯片帶有單種線接口
除了裏面用激光燒寫的地址編碼以外
還包含一些收發控制和電源存儲電路
大家看這個啊
這個就是那一根線
這器件有的那一根線
這裏面有個ROM
裏面把16位BCD碼的那個編碼燒進去了
實際上就是它地址
然後有接收數據
就是從單種線來的數據和接收
這是發送數據
發送數據
然後呢
大家注意這裏面有個電容
這個電容呢
實際上就作爲電源能量存儲
省去了這個器件的電源
所以這個單種線就有非常
這種單種線器件就有非常好的
這個首先和單片機的接口非常簡單
另外呢
這個內部邏輯也比較簡單
原因就是單種線一根線
好
那麼
這個電容呢
它實際上起一個電源的作用
它大家知道電容是儲能的
那麼從總線上
這是單種線
匯送的這個電容呢
到匯送能量存到電容裏面
就可以爲這個器件提供電源
電源能量
所以呢
一般情況下
你這器件帶有單種線接口的器件
不用再外加電源了
原因就在這
好
具體應用
我們看一個例子
這個例子呢
是我們單片機應用系統當中經常用到的一個經典例子
看啊
圖12-2是單種線構成的分佈式溫度測量系統
大家看這個
這是151單片機
然後這就是單種線
DQ線
那麼各個芯片呢
都掛到這個
這根線上
單種線嘛
大家注意看啊
DS18B20實際上是一個溫度傳感器
溫度傳感器
這個系統呢
實際上是一個多點的分佈式溫度監測系統
那麼這些都是溫度傳感器
放置在你要監測的各個點上
大家注意啊
這就通過一條線連
沒有電源線了
爲什麼沒有電源線
道理剛纔已經講了
然後這個芯片的外形呢
就是這樣啊
所以大家注意
單種線系統
尤其是51單片機和DS18B20構成的多點分佈式溫度監測系統
這個結構非常非常簡單啊
好
這個是數字溫度計的外形
那麼大家看到了
溫度傳感器實際上就是一個小芯片
由一根線和單片機相連
所以它可以用在狹小空間內
設備的數字測溫
大家一定要注意
這個例子也是將來我們要進行
設計一個比較好用的溫度監測
例子案例啊
那麼這個多個芯片都掛在單片機這一根L口線
那麼大家注意
單片機就通過這個總線DQ尋址
然後呢
對各個溫度傳感器進行訪問
另外大家注意啊
各個芯片的DQ端
它都是漏極開路的
所以呢
使用的時候必須要加一個上拉電阻
所謂上拉呢
通過這個電阻接到正阻上
好
那麼
DS18B20這個溫度傳感器啊
它有各種各樣的系列型號
大家注意
DS1820
DS18S20
還有DS1822
這個都是達拉夫公司生產的
單種線的溫度傳感器
它的工作原理和特性的基本都相同
好
那麼
大家注意這個
呃
溫度傳感器有什麼特點
首先體積小結構簡單
使用方便
第二個特點呢
它每一個芯片有一個64位光刻的肉模編碼
它的家族碼
是28
那前面家族碼28
你探測的話
你就知道這是DS18B20這個系列溫度傳感器
溫度測量範圍
大家一定要注意
-55度到正125度
還有呢
在-10度到85度範圍內呢
測量精度可以達到正負0.5度
所以大家一定要注意
這個方案是我們進行溫度測量
尤其在狹小空間多點分佈式系統內
非常好的一個溫度測量方案
大家應該把這個掌握
另外呢
分辨率啊
分辨率呢
這個DS18B20呢
它可以通過軟件編程設成9位到12位
其中有一位是符號位
那麼對應的溫度變化量是多少呢
0.5度
0.25度
0.125度
肯定位數越高
分辨率越高
那麼轉換時間呢
和分辨率有關
就是說一個溫度量經過DS18B20進行轉換
轉換成數字量
那麼跟分辨率是有關
如果你設置成
把這個溫度傳感器芯片設置成9位
轉換時間呢
是93.75毫秒
也就是說當你開始溫度轉換的時候
要經過這麼長時間以後
你才能讀寫它的數據
這纔是準確的
10位的話呢
轉換時間是187.5毫秒
11位呢
轉換時間是375毫秒
12位呢
轉換時間750毫秒
很明顯
位數越多
它的轉換時間越長
至於說是多少位的分辨率
由你軟件來數
好
片內呢
有靜態RAM
還有一方P-ROM
你比如測溫的話呢
你經常需要溫度上下線
到上下線的話
要報警
那你片內有一方P-ROM的話呢
可以把你要報警的上下線溫度呢
寫到DS18B20
存到什麼呢
片內的一方P-ROM
所以我原來一直給大家提一個問題
一方P-ROM和FLASH存儲器
它倆的差別在哪
這個大家一定要清楚嗎
你們查一查
上網可以查
那麼它倆從表面
單片機對它的讀寫特性都一樣
但是FLASH是FLASH
一方P-ROM是一方P-ROM
什麼情況下用一方P-ROM呢
比如說剛纔說的
我測溫的話
要溫度上下線
要事先設定好
那這是一個常數
要寫到一方P-ROM
寫完以後
即使這個單片機系統掉電了
它那個值還非意識性的
非意識性
那麼這個大家
我作爲留給大家的一個小小的思考題
回去考慮一下
FLASH和一方P-ROM差別在哪
那爲什麼要一方P-ROM
它的片內集成
正好你要把車文的上線下線放到
超出這個就報警
你可以編寫軟件報警
另外
單片機向DS18B20寫入的功能命令有兩類
其中一條是啓動溫度轉換命令
單片機通過這單種線
往DS18B20寫個44H就可以了
另外還有五條讀寫靜態RAM和一方P-ROM
這些命令
我們不詳細介紹
你可以查一下DS18B20的說明書
那麼下面大家看這個電路
這個電路
如果我們在擴單種線的那種LED數碼管的驅動器
就可以掛上數碼管
實際上你就構成了一個什麼
單片機控制的單種線的溫度測量系統
溫度測量系統
那麼你可以在單種線基礎上
自己再擴一些其他帶有單種線的這些器件
單種線接口的器件
那麼大家知道這個單種線接口器件
由於單種線是達拉斯公司推出來的
所以器件的話
你就到達拉斯公司的網站去查找
然後你設立一個系統
大家可以看到剛纔那系統就一根線
單片機和各個外設相外圍器件相連
這系統結構非常簡單
尤其是這個測溫系統
大家知道我們經常有時候用單片機做測溫系統
要監測很多點的溫度
那麼尤其那空間非常小
這個時候你用單片機擴展DS18B20
是非常好的一個設計方案
那麼在單種線上傳輸的是數字信號
它實際上把溫度量變成數字量了
然後串行傳輸
那麼數據傳輸採用CRC碼檢驗
這個我們可能在數字電路里面
我們有一位同學學過這部分
那麼達拉斯公司爲單種線的尋址和數據傳送
制定了一個總線協議
這個詳細的呢
大家查一些相關資料
你要說這個總線有什麼不足
那麼它傳輸速率呢
不是那麼快
有比較慢
好在你測溫的話呢
它不是一個快速變化的量
有時候要求也不那麼快
實用的話呢
就是在什麼場合用這單種線呢
測控點比較多
分佈面比較廣
那就一根線啊
單片機和這些溫度傳感器連接就一根線
另外呢
又需要集中監控統一管理的應用場合
這時候使用這個單種線是非常方便的
好
下面介紹
一二三種線的三種線
三種線
剛纔的單種線是一
二呢
是我們這一張重點是iPhone7總線
那麼SPI總線
這是一個同步的串口總線
串型總線
它在SPI的碩寫是
呃
是一個碩寫是serial
這是外設的單詞
就是串型外設接口
它實際上是一個同步的串型外設接口
所以SPI總線
這個串口總線同步的
在現在單片機系統裏面
在各種各樣嵌入式處理器系統裏面
比如說
DSP
啊
還有其他各種類型的嵌入式控制器裏面
SPI接口
這個
用的比較多
現在大部分的單片機和控制用的DSP都帶有
SPI接口
啊
所以呢
這個串型接口也是非常重要
這個大家注意啊
只要
你按照SPI這個接口標準做的接口
這種單片機可以和各個廠家帶有SPI接口的外設直接相連
啊
直接相連
啊
那麼用串型方式來交換信息
大家注意
這個是摩托羅拉公司推出來的
啊
那麼這個是現在應用十分廣泛的
同步的串型外設接口
同步是什麼意思啊
就是說在數據傳送的時候
他有一根失蹤信號
失蹤線
發出失蹤信號
控制的數據的傳播
發送和接收是同步的
啊
是靠着失蹤信號
所以這個失蹤
我們也把它叫同步失蹤
啊
那麼大家看一看
先看一下這個SPI系統結構圖啊
這是單片機啊
單片機
如果這個單片機帶有SPI接口的話呢
實際上這就是三根線
啊
三根線
那麼大家注意SDK呢
就是這個失蹤啊
是失蹤線
這個呢
是Master Out Slave Input
就是主輸出
重輸入
這個呢
MISO呢
是Master Input Slave Output
就是主輸入
重輸出
所以呢
這個是主機往外發
這個是主機收
那麼片外的器件
大家注意
這些外圍器件都帶有這幾個信號
所以現在好多公司生產的這外圍接口芯片都帶有SPI接口
那麼單片機呢
我們講的這個AT89S51單片機不帶這個SPI接口
但是現在其他各種增強型擴展型的單片機
不管是什麼型號的
幾乎都有SPI接口
所以這個SPI接口呢
將來同學做系統擴展的話呢
是一個非常有用的串行接口
那麼大家注意
我要選擇某一個芯片跟單片機進行通訊的話
串行通訊
大家注意
你可以用單片機的IO口線呢
加到這個外圍器件的片選端上
每一個器件
你可以用一個IO口線來控制
那你有N個器件可以用N個IO口線
所以這個SPI總線接口呢
我們把它叫三
主要是指它
當然有人也把這個片選端
這個信號也算了一個
它在總線裏的一個信號
那就是四
所以大家注意看
剛纔的系統結構圖裏面
我們可以看到
不算的片選端的話
我們就使用三條線
用的片選端的話
使用的片選端就四條線
所以ICK呢
就是同步的串行失蹤
MISO呢
剛纔我已經解釋過了
它是主器件輸入
重器件輸出的數據線
MOSI呢
是主器件輸出
重器件輸出的數據線
片選端呢
是指這個芯片
被選通的控制信號線
所以叫重器件選擇線
那麼SPI接口一般主要是指這三條線
指這三條線
算上它是四條線
好
那麼大家注意
我們來看一下
SPI總線系統的典型應用
一般情況下
最常用的是單主系統
單主
主就是Master
單主呢
這個單主
就主器件
是由誰來擔當
都有單片機來擔當
那麼重器件呢
就是帶有SPI接口的外圍接口器件
那麼大家要注意
SPI接口的外圍器件
像現在的存儲器
IO接口
ADDA
就是我們前面學到的那些
所有並行擴展的這些器件
現在都有帶有SPI的這些外圍器件
你比如說
存儲器IO
ADDA
鍵盤
日曆時鐘
和顯示驅動器
這些各種各樣的外圍接口器件
都帶有SPI接口
所以這個系統擴展起來非常方便
如果你擴展單個的SPI器件
就是說一個單片機
這個
SPI總線上就掛一個器件
這時候大家注意
你片選端直接可以接地
或者是用IO來控制
一般都直接把它接地了
爲什麼呢
不需要和其他器件進行區別
你把接地就永遠被選中了
單片機只能和它一個進行通訊
如果是多個SPI器件
這時候
你可以通過剛纔的系統結構圖看到
通過片選端
通過單片機的IO
控制這些片選端
也就是說這些外圍器件的片選端
和單片機的IO連在一起
然後單片機用指令來控制
這些IO口線的高低電平
好
那麼大家注意
如果在這SPI系統裏面
某一個程序件只做輸入
比如說鍵盤
或者只做輸出
比如說數碼管顯示器
這時候呢
兩根數據線一出一進
可以省去一條
對吧
省去一條數據線
就是數據輸出線可以省去
或者是數據輸入線
實際上就構成了一個雙線系統
這時候呢
你片選端就接地就可以了
片選端接地
單片機如何對多個SPI接口器件進行選擇呢
就靠這片選端
用什麼呢
單片機IO口線
來控制這片選端
這樣的話
大家知道
這就不用什麼呢
先發地址
先選中這個器件
不用那樣
直接用一個IO口線控制片選端就可以了
但是這裏有一個問題
當SPI接口
這個單片機要擴的外圍器件比較多的話呢
那每一個芯片都有一個片選端
每一個帶有SPI接口的外圍接口部件都帶有這片選端
這時候需要的IO口線就比較多
來控制片選吧
這樣線就比較多
所以呢
大家注意
一般情況下呢
SPI系統呢
它這個串線擴展並不需要太多的器件
所以這系統結構也比較簡單
也不需要那麼多IO口線來去區別各個器件
另外呢
大家注意
看它的時序
在SPI這個系統當中
如果主器件一般都是單片機來單
啓動一次傳送的話呢
它就自動的產生八個時鐘
當然
這個單片機必須帶有SPI接口
如果不帶着SPI接口怎麼辦
單片機就用
你像AT89S51用IO口這個軟件來模擬
來模擬這些同步時鐘
那麼八個時鐘
每一個時鐘對應一個數據位
那麼它的格式呢
就是高位在前
低位在後
那麼大家注意
它伴隨着同步時鐘
實際上大家注意
對應一個時鐘位
那麼要對數據線進行採樣
那麼
SPI系統裏面
擴展的各種外圍器件呢
有的是在這個時鐘線的上條沿
你去採樣對得起作用
有的是在時鐘的下降沿
對得起作用
所以這個大家要注意
那麼SPI這個速傳速率呢
最高時候能達到每秒1.05兆位
1.05兆位
這個數據傳輸率呢
也不低
不低
好
那麼大家看就剛纔說的
你看這個
SPI的時鐘
啓動的話呢
它自動發出八個數據位
高位先發高位後發低位
那麼這時候呢
加到這個SPI器件的片線端
一定要有效
那麼大家注意
摩托羅拉公司推出的SPI接口
實際上它本身也提供了一套
具有SPI接口的單片級和外圍接口芯片
大家注意
這個SPI接口的器件
現在呢
各大公司都在做
所以大家在做SPI接口
使用SPI接口進行系統擴展的話呢
非常方便
爲什麼呢
各大公司都推出一系列具有SPI接口的外圍接口芯片
單片機
大家一定要注意
包括我們下一期要學的DSP選修課
那麼這些控制用的DSP
包括現在各種各樣的增強型單片機
都帶有這個SPI接口
比如說大家看一看
比較常見的外圍接口芯片
比如說存儲器MC
MC表示摩托羅拉器件
2814
另外呢
還有顯示驅動器MC14499和MC14489
大家注意
你這顯示驅動器芯片
它就掛到SPI總線上
然後呢
它就可以驅動顯示器顯示
所以我們大家做一個測量系統的話
基於SPI的測量系統的話呢
你可以接上這些顯示驅動器
控制那些LED數碼管顯示
那麼大家注意
一般外圍器件
我們都把它叫做重器件
主器件指的是單片機
它具有控制作用
重器件一般說來都要帶有SPI接口
這個SPI接口呢
現在使用比較廣泛
大家都認可它
所以很多公司做的一些器件呢
都帶有SPI接口
那麼已經說了
各大公司生產的單片機
現在的單片機
由於集成電路技術的飛速發展
大部分都帶SPI接口
所以大家將來進行系統設計的時候
除了我們前面介紹的
並行擴展技術以外
還要考慮使用串營擴展技術
接口非常簡單
下面大家看一個例子
設計一個單片機和串型AD轉合芯片
TLC2543的SPI接口
並且把它驅動程序變出來
大家注意
由於現在這是美國TIA公司推出的
AD轉合芯片是串型
串型總線
這是美國TIA公司非常有名的一個
做生產DSP和單片機的公司
那麼它的串型AD轉換器
現在用的比較廣泛
那麼前面我們講的12位DA並行擴展
單片機擴一個12位的DA
那廣數據線就12條
當然實際上是和單片機的P0口相連
它數據線12位要和單片機的P0口相連
那麼現在要採用這個串型AD
它就是一個12位分辨率的
連接的話就是按SPI總線規範來連接
TLC2543這是一個非常經典的
AD轉換器SPI接口
那麼它的分辨率12位
轉換時間1微秒
所以現在好多人的AD轉換器接口
只要這個轉換時間夠的話
它就採用這種方案來設計一個
比如說我們拿來測電壓
單片機加AD就可以測電壓
所以這個芯片的性能還比較高
那麼大家看一看
它片內有一個14路的模擬開關
注意這14路的模擬開關
可以對11路的模擬輸入量
要檢測11路的模擬輸入量
還有3路的內部測試電壓
進行AD轉換
所以這個方案大家注意
也是一個非常好的
SPI總線的應用方案
下面先看一下圖
就是系統結構圖
這邊是單片機
利用了4根L口線
P1口的4根L口線
大家注意
這個芯片是TLC2543
12位AD轉換時間1微秒
那麼大家看
它們之間的連接
這個是同步失蹤
這個是
注意
它的數據輸入短
就是控制它
這個是數據輸出短
是幹嘛的呢
是對這邊模擬電壓進行轉換
然後它的數據輸出
轉換成的數量
這個是片選端
用P1.3口線來進行控制
那麼大家看
這個AD轉換接口電路非常簡單
還12位的
同學可以把這個接口電路
推廣到14位的16位的
有時候我們在設計一個
數據採集系統的話
它往往要求分辨率更高
比如說14位的16位的
那麼TI公司
它做的AD芯片
做了一個大系列
裏面12位14位16位
實際上這個工作原理都是一樣的
對吧
工作原理都是一樣的
好
那麼這些模擬量
大家注意看
11路模擬量
通過這
它還能對內部的
有個測試電壓
三路進行檢測
所以這個芯片呢
和這個與單片機的接口電路設計方案
大家要把它儘量掌握
這個掌握
下面我們介紹一下軟件編程
講軟件編程之前呢
我們把連線再說明一下
剛纔看的時鐘
還有data input
還有片顯端
由單片機的P1.0
1.1和1.3來控制
注意
轉換完畢的結果的輸出數據
由單片機P1.2串線接收
那麼單片機呢
要寫這個
TLC2543呢
是通過什麼呢
P1.1引腳
把這個命令字呢
寫到TLC2543裏面
大家可以看這個
看這個
這個是單片機往
這芯片裏寫一些命令
命令呢
包括對這芯片的處理化設置
轉換完的AD結果呢
從這讀到單片機裏面
然後大家注意
這個就是輸入輸出的同步時鐘
所謂同步同步
是指這個信號
這個時鐘
每一個時鐘位和你寫的
或者讀的那些數字量啊
一位一位都對應的
這個是片顯端
另外呢
大家注意
我們下面要介紹的程序呢
就是選擇IN0
A是模擬的意思
IN0這個通道
一共可以對11路的模擬量進行數據採集
那麼轉換結果
大家一定要注意是12位
那麼他是怎麼讀寫的話
大家一定要注意
TI公司的這種AD轉換器呢
他挺有特性
大家一定要注意
結果12位呢
得分兩次往裏讀
因爲他看到前面時序了
一次呢
是八位
那麼這12位呢
一次讀不了分兩次
大家注意
我們先把這個前提整明白
你才能看懂下面的程序
先讀入裏面的八位轉換結果
應當是12位結果
先讀入八位
讀入八位
把這八位轉換結果送到單面機裏
讀進來
然後再寫入轉換命令
大家注意
這時候我這一次讀結果和我這一次要寫的命令
尤其是這一次寫的命令
是下一次進行AD轉換的轉換命令
有關這些命令呢
大家可以看看TLC2453的說明書
然後呢
大家注意再讀
所以呢
這個子程序編寫要注意怎麼來控制呢
先串着讀入八位AD轉換結果
然後再寫入轉換命令
然後寫入這次寫入的轉換命令
是下一次
就他的AD轉換結果是下一次才能讀
這個大家一定要
實際上剛纔這一次讀的八位轉換結果
是上一次往裏面寫的命令
然後呢
結果這一次才能往裏讀
所以先讀八位
再寫入八位轉換命令
然後再讀那四位
明白這個邏輯關係以後
時序關係
我們就可以看到下面的程序
來理解他是怎麼
爲什麼要這麼編
這裏剛纔已經反覆強調
他每次讀取的轉換結果都是上一次
你寫入的轉換命令的轉換結果
你這次往裏寫的命令是下一週期呢
才能被串行讀出來
所以呢
大家注意
當你開始啓動2543AD轉換器的時候
第一次讀取的結果
一般情況下都不要
不可能準確
因爲什麼呢
他要進行一些內部調整啊
大家應當知道這個明確這個事實
所以你單片機擴展2543的時候呢
第一次讀的結果
一般情況下都應該把它丟棄掉
不準
好
下面看程序啊
大家注意
這是定義了一些單元啊
6F這是命令存儲單元
就是你要單片機控制2543AD進行工作的話呢
先發個命令
這個呢
是存儲結果的高把位單元
6E呢
高四位單元是6E
低把位單元的是6D
所以你12位轉換結果要存到6E和6D裏面
P1.0呢
實際上是作爲他模擬SPI口
因爲89S51單片機沒有這個SPI口
我們完全可以用軟件一根IO口線來模擬
那模擬這個SPI裏面
這接口的始終信號
P1.3呢
是片選段啊
片選段
他爲第一的話就選中2543
08大家注意看啊
先最開始把Clock清零
是單片機控制Clock
IO Clock的引腳
P1.0引腳爲低電平
下一個把P1.3這個引腳也清零
實際上說穿了
選中這個芯片
TLC2543
然後母08H送到R2
這幹嘛呢
因爲你讀數據串着讀
一次讀進來以爲你要讀八次
要讀八次
然後大家注意
你這回先讀八位以後啊
低把位讀進來以後
再往裏寫個命令
這個這次寫的命令
下一次他的轉換結果纔有效
就是說下一次才能讀出來
所以你那個轉換命令
大家注意事先
事先存到這個符號地址裏面
這符號地址
大家注意啊
就存到這裏面啊
把命令先放到這裏
好了大家看
把它先送到A
把送到A了
這時候你要記住
A裏面存的是轉換命令
然後下面就開始進行這接口操作
先把P1.2引腳
就是AD轉換器的數據輸出
就上一次送完命令的轉換結果讀到C位裏面啊
大家注意啊
直接送到C
A累加器的進位位
實際上是一位單片機的地累加器
然後大家注意啊
把這個A裏的內容右移
大家挺奇怪
先把這個轉換結果的一位讀進來
然後再把這個A裏的
這個結果呢
右移實際上大家注意
這個是帶標誌位的右移
實際上剛纔的第一位數據進來以後
在CY標誌位裏面
然後把A累加器結果右移
什麼意思呢
實際上把第一位轉換數據
大家看一下
對看這個啊
這個是C累加器
剛纔從1.2G引腳讀進來讀到這裏
然後用下面的RC指令
把整個結果往右移一位
右移啊
這裏面裝的G7到G0什麼的
就我剛纔說的下
就是要寫入的轉換命令
好了
大家看一下
我這麼右移一下呢
這個G0呢
到這兒
進到這位了
你剛纔讀進來的一位轉換結果呢
移到這個地方
這個地方是個技巧
它是先讀第八位數據裏面的一位
然後一移
你事先要把命令寫到這裏面
移這麼右環移的話呢
命令的這一位G0
你看通過它就進到這兒
然後下一條指令幹嘛呢
再把這個命令的這一位往外發
把命令的這一位往外發
所以大家看一下啊
大家看這是右移那條指令
就是剛纔那圖裏面
然後大家注意
這個就把這一位的命令的G0
那個命令往外發
發到哪呢
通過誰往外發
P1.1往外發
然後呢
大家注意
這四條藍顏色標誌的指令呢
是表示要產生一個脈衝
因爲剛纔看見
持續每一位要對應一個脈衝
每一位要對應一個脈衝
這個用軟件來模擬那個脈衝
通過哪往外發呢
通過P1.0端
P1.0就我們剛纔講的
SPI接口的clock端
就時鐘端
這個來模擬一個時鐘
什麼意思呢
這一位出去了
讀進了一位又出去一位
然後呢
大家注意這個就判一下R2是否爲0
R2初值是多少
08
因爲實際上要進行第一把位的讀入
完了送出八位命令
所以R2來這麼一次就把它減1
是否爲0呢
這八次轉換是否完呢
如果非0的話
再跳到前面loop1呢
對吧
跳到這個地方loop1
不會0
說明這八次讀入呢還沒完
八位嘛
那怎麼辦
沒讀完就反覆進行這個循環
讀完了
大家注意
你這轉換結果
按照我們剛纔那圖
大家注意
經過八次移位以後
這個轉換結果都不都在這呢
轉換結果
是吧
八位轉換結果
然後怎麼辦呢
就把它送到A累加器裏面
大家注意
八位轉換結果
第一把位轉換結果在這
把裏面的八位轉換結果送到這個單元裏面
然後再把A累加器清零
然後再讀入高四位
讀入高四位做好準備
然後呢
大家注意
這四條指令呢
來產生一個魔力的失蹤脈衝
然後大家注意
把R裏面存的是零四
那麼實際上就要讀進來高四位
高四位
當然如果減到零就往下執行
高四位轉換結果呢
就存到這個結果的高四位
就這個單元裏面
然後呢
再把這個單元裏面的高低四位轉一下
Swipe什麼意思
高低四位互換
然後就行了
然後呢
大家注意
下面這個呢
等你四位都讀完了以後呢
大家注意
最後要把失蹤讓它無效
把它只一就行
把P1.0那個演講失蹤輸出端呢
只一失蹤無效
那你這個12位AD轉換結果
加上八位命令
就已經發送完了
所以大家一定要注意把這個圖看明白啊
這個圖一定看明白
這個就是把高八位的低八位的結果
和往外發的命令同時進行了
這實際上利用一個什麼技巧呢
他先第一次先讀命令的結果的最低位
最高位來了
然後下一次再往外送
結果進來以後
還疑一次
又還疑一次
然後呢
最低位這個命令啊
就進到這一還疑
進到這位
然後再從他往外出
再從他往外出
這樣讀進低八位結果一位
送出一位命令
命令是八位組成的
低八位結果也是八位
這樣的話呢
他這個編程的話就很好的利用了這還疑指令
當然這是我們只要實現這功能就行了
那麼拔次又一以後
大家注意你這八個命令位啊
也都全都通過這塊出去了
然後你低八位轉換結果也讀進來
這裏圖裏面沒有給出高四位的一位結果
大家呢
完全可以照這個規律呢
把它畫出來
根據那個指令啊
根據那子程序
好
還有一種Makerware這個總線呢
這個用了我們現在用的不多啊
我們就簡單介紹
大家知道寫到教材裏面
大家看一看啊
那麼這一張的重點呢
實現關鍵在這兒啊
iPhone7總線這個串行擴展
iPhone7總線是目前串行擴展裏面和SPI一樣用的比較多
也就是我們剛纔說的一種線
二種線
三種線
三種線指的SPI
二種線呢
二就是指的iPhone7
一種線就單種線
那麼iPhone7總線誰推出來
飛利浦啊
飛利浦
它實際上大家注意是芯片間的串行擴展總線
大家可以把這個碩寫打開看一下
它就是指一成中文
就是芯片間的串行擴展總線
實際上一個單片機系統就是單片機外擴迎接芯片
通過這兩條線呢
把各個芯片連在一起啊
兩條信號線
一條是數據線
大家記住啊
SDA
另一條呢
是時鐘線
SCL
它們都是雙向的啊
雙向的
那麼所有那些iPhone7器件
就你一個系統
一個單片機
加若干個iPhone7器件
都掛到SDA線上
那麼器件的時鐘線呢
都掛到這個時鐘線上
所以它的系統結構呢
大家看一看
是這樣
看屏幕啊
大家看
就是兩條線
然後呢
時鐘線
SCL
數據線
所有這些器件
大家注意
都是兩條線掛在上面
大家一定要注意啊
這有個上拉電阻
上拉電阻
一會兒我們要注意
爲什麼要有這個上拉電阻
好
這就是iPhone7系統結構
這是目前使用最廣泛的一種單片機串行擴展結構
iPhone7總線也是應用比較廣泛的一個串行總線
好
那麼大家注意
現在有些單片機帶iPhone7接口
有些單片機不帶
比如說我們的AT89S51不帶
但是呢
飛利浦的
比如說原來的804152這個單片機
它就帶iPhone7總線接口
那麼現在的單片機
增強型
擴展型的
各種各樣的單片機
一般都帶iPhone7接口和SPI接口
這個大家要引起注意
我們將來進行系統設計的話
尤其是要很好的利用這串行擴展技術
它直接通過這個串行總線和各個器件相連
好
那麼iPhone7這個總線
它實際上採用純軟件尋址
不像SPI還得需要片選
這樣的話呢
這個總線數量就可以大大減化
就兩根線就可以了
兩根線
一根時鐘線
一根數據線
那麼它也分爲主器件
重器件
大家要注意
主器件一般就是來控制iPhone7系統運行
來啓動數據的發送
控制發出時鐘信號
另外呢
傳送結束的話呢
要發出中止信號的器件
這個一般都由單片機來擔當
那麼重器件
重器件就是各種各樣的外圍擴展器件
包括存儲器啊
LED LCD驅動器啊
ADDA啊
還有時鐘日曆這些器件
那麼大家注意
這重器件一般都要帶iPhone7接口
所以大家呢
設計一個系統的話
你查各種外圍器件的話
你可以查這些帶有iPhone7接口的器件
現在這些器件都品種都比較豐富了
比較容易買到啊
非常好買
好
大家要注意
當iPhone7總線空閒的時候
不工作的時候
沒有數據進行傳輸的話
它的數據線和它的時鐘線
這兩條線都應當是高帶的電路
大家注意
它這個iPhone7外圍器件設計的時候
都是漏級開路或者極電級開路
所以掛到總線上的話
應當加一個上拉電阻
使它在不工作的時候
iPhone7總線的這兩條線都爲高電平
所以大家看一看
這兩條線都通過一個上拉電阻
接到電源上
好
那麼大家還要注意
這種連接方法實際上它是限餘的
什麼意思呢
各個器件漏級開路
都通過總線上掛上拉電阻
與正負相連
那麼大家一定要注意
它是限餘的關係
爲什麼是限餘的關係呢
大家都併到這根線上
只要有一個器件的這根線爲低電平
整個這種線就由高電平變爲低電平
大家一定要注意這個特點
也就掛到這一條線上的這些器件
大家注意看
這些器件
只要它一根線爲低電平
整個這根線就一定爲低電平
爲什麼呢
它們是極電極開路
已經構成了限餘的邏輯關係
好
所以它們是限餘的關係
那麼在不工作的話
這兩條線都應當上拉爲高電平
那麼道理很簡單
你接了上拉電阻
只要它不工作
沒有任何器件去把這兩根線拉低
那它一定就是高電平
那麼這裏面大家一定要注意
這個時鐘線上的時鐘信號
對數據線上各器件之間的數據傳輸
起到同步控制作用
換句話說
時鐘信號控制了數據線上的數據傳輸
所以大家一定要注意
數據線上的數據起始位
終止位和數據的有效性都要通過
都要根據SDA這個數據線上的時鐘
這時候你要看
這個是數據線
你還要看對應這時候的SCL線
就是時鐘線
它是什麼狀態來判斷它們的
那麼標準iPhone7的數傳輸率是100K
就是標準的iPhone7模式
如果你採用高速模式的話
它的是每秒是400K
標準iPhone7模式是100K
高速模式是400K
這什麼意思呢
每秒多少K位
另外大家注意iPhone7總線上
剛纔我們大家看到的結構就兩根線
大家都往上掛
那麼能夠掛多
它的負載是多少呢
負載量
這個不是由它的電流負載來決定的
而是由電容負載來決定的
一般注意每一個器件
就是每個節點的器件接口
它都有一個等效電容
如果連的器件越多
它的電容值就越大
電容值越大就會造成什麼呢
你進行01信號
數字信號容易造成傳輸的延遲
所以總線上允許的器件數
大約是這樣
器件的總的電容量
小於等於400pF
如果你在總線上加驅動器
可以達到4000pF
這樣的話
你就可以計算出總線長度
和連接器件的數目
這個裏面大家一定要注意
就這兩條線大家都往上掛
我們可能有的同學瞭解
就學過工業控制總線裏面
有個叫CAN總線
結構也是這樣的
兩條線
大家都往上掛
但是這個一定要注意
一個是時鐘線
一個是數據線
而那個實際上就是一個數據的
輸入線和輸出線
那麼結構非常類似
那麼它倆的區別在哪呢
大家一定要注意
有一個思考問題是這麼問的
iPhone7總線結構和CAN總線結構非常相似
它們的差別在哪
CAN總線結構就這兩條線
是連在它是工業線上用的總線
可以達到1000多米
那麼工業線上的好多測控元件
都會掛到這兩條線上
而這iPhone7總線
是單片機系統裏面
芯片間的互相連接總線
它這兩個信號
一個是時鐘信號
一個是數據信號
而CAN總線那兩條線
是工業線上裏面連接各個功能部件的
一個是數據輸入線
一個是數據輸出線
它是用在兩種不同場合
那個CAN總線是用在工業線上
而這個iPhone7呢
是用在我們線路式處理器
擴展外圍器件的一個芯片間的連接總線
好
我們休息一會兒
再介紹iPhone7
