DS1868采用雙通道數字電位器,具有3線(移位寄存器)接口。本應用筆記描述了將DS1868以及達拉斯半導體的3線器件連接至摩托羅拉SPI總線所需的邏輯和固件。
DS1868簡介
DS1868為雙通道數字電位器,具有3線接口。本應用筆記將介紹如何將達拉斯半導體3線器件與具有SPITM接口的微控制器連接。
比較SPI和3線接口
SPI和3線是不同的串行接口,但它們是兼容的。以下部分介紹這些差異。
串行外設接口 (SPI)
SPI 有 4 個信號:SDO、SDI、SCK 和/SS。SDO信號是數據輸出,SDI是數據輸入,SCK是時鐘,/SS是從選擇。
3線串行接口
3線串行接口有4個信號:DQ、Cout、/RST和CLK。數據輸入在DQ信號上,數據輸出在Cout信號上,/RST信號使能3線接口,CLK是時鐘。
串行接口 | 信號名稱 | 信號描述 | 總線速度(典型值) | 數據格式 | ||
3線 | DQ | 數據輸入 | 500kHz 至 5 MHz | LSB 在前,MSB 在后 | ||
庫特 | 數據輸出 | |||||
/RST有效 | /有效復位 | |||||
時鐘 | 時鐘 | |||||
SPI | 空間數據指數 | 數據輸入 | 10兆赫 | MSB 在前,LSB 在后 | ||
性別歧視條例 | 數據輸出 | |||||
/SS有效 | /從選擇有效 | |||||
SCK | 時鐘 | |||||
注意:在本應用筆記中,不使用/SS(僅在從模式下使用)。 |
寫入/讀取字節數
將數據寫入DS1868
微控制器包含一個SPI接口,以8位的倍數發送和接收數據。因此,需要將 7 個額外的位與 17 位數據一起發送,總共 3 個字節。微控制器首先發送MSB。當微控制器將數據寫入DS1868時,第一個字節的前7位被推出移位寄存器,b0包含第一個字節的LSB(見圖1)。
圖1.在寫入過程中移位寄存器,增加 7 位。
從DS1868讀取數據
當微控制器從DS1868讀取數據時,首先傳輸堆棧選擇位(b0),然后傳輸電位1(b1)的MSB,依此類推(見圖2)。讀取時,額外的 7 位位于第三個字節中。
圖2.17位移位寄存器。
下面是如何寫入和讀取字節的示例。在本例中,堆棧選擇位選擇鍋 1。電位器1編程為0Fh,電位器0編程為55h。所選電位器刮水器的值將在 S 上外針。寫入DS1868的三個字節分別為01h、0Fh和55h。01h 的前導零是另外 7 位。微控制器首先發送MSB,因此首先發送前導的7個零。這些前導零從末端掉落,“1”以 b0 結束。底池 1 的前 4 位填充為 0,后 4 位填充 1。電位 0 中的 MSB 將為“0”,其余位在 1 和 0 之間交替。
字節 0: 00000001b (01h) 其他位帶有下劃線。
字節 1: 00001111b (0Fh) 字節 2: 01010101b (55h)
讀取數據時,b0 是第一個輸出位。輸出的 3 個字節現在將如下所示:
字節 0: 10000111 (87h) 字節 1: 10101010 (AAh) 字節 2: 10000000 (80h)
其他位帶有下劃線。
另外 7 位現在位于字節 2 的末尾。
表 2 中提供了更多將寫入數據轉換為讀取數據的示例。
軟件將寫入的字節與從DS1868讀取的字節進行比較(參見附錄)。
寫入 3 個字節(十六進制) | 寫入 3 字節(二進制) |
鍋設置 不銹鋼鍋1 鍋0 |
3 字節讀取(十六進制) | 3 字節讀取(二進制) |
01h FFh 80h |
00000001 11111111 10000000 |
1 FFh 80h | FFh C0h 00h |
11111111 11000000 00000000 |
01h 80h 80h |
00000001 10000000 10000000 |
1 FFh 80h | C0h 40h 00h |
11000000 01000000 00000000 |
00h 80h 0Fh |
00000000 10000000 00001111 |
0 80h 0Fh | 40h 07h 80h |
01000000 00000111 10000000 |
硬件配置
該板的原理圖如圖3所示。
圖3.電路板原理圖。
軟件配置
軟件配置適用于 PIC16F872。
端口設置
TRISx 寄存器將引腳設置為輸入 (1) 或輸出 (0)。PORTA 寄存器將驅動/RST和LED至5V或0V。
TRISA = --1xxx00—RA5/SS設置為輸入。這用于啟用串行端口。RA0 和 RA1 已設置 至/RST和LED
的輸出 TRISB = 未使用
TRISC = xx010xxx — 清除 SCK 和 SDO,設置 SDI
/RST引腳需要在發送/接收數據之前設置,然后在交易完成后需要清除。
SPI 設置
SSPSTAT = 01000000 (40h) - 位 SMP = 0,位 CKE = 1
當 SMP = 0 時,在數據輸出時間結束時對輸入數據進行采樣。
當 CKE = 1 時,當 CKP = 0 時,從活動時鐘狀態轉換到空閑時鐘狀態時會發生傳輸。
SSPSTAT寄存器設置時鐘和數據,使其具有正確的時序,以便與DS1868接口。
SSPCON = 00100001 (21h) - 位 SSPEN = 1,位 SSPM3-0 = 0001
SSPEN = 1 啟用串行端口。
SSPM3-0選擇了時鐘頻率。SSPM3-0 = 0001 = Fosc/16 = 20MHz/16 = 1.25MHz
DS1868的最大時鐘速率為10MHz。
法典
附錄包含用于寫入、讀取和比較電位計數據的匯編代碼。
除了SPI端口之外,還需要初始化使用的每個端口。電位計也需要初始化為零。然后可以將數據寫入電位計。
SPI 時序
使用上述寄存器設置,微控制器產生以下定時信號。
圖4.SPI 時序圖。
SDO上的數據傳輸在時鐘的下降沿完成。數據在時鐘周期內由SDI接收。 以下是接收和發送的電位計數據的圖表。圖5所示為01h、FFh和80h被發送到SDO線路上的DS1868。SDI包含DS1868發送回微控制器的數據。SDI上的數據是FFh,C0h和00h。有關轉換數據的詳細信息,請參閱表 2。
圖5.傳輸/接收的數據。
SDO上的數據傳輸在時鐘的下降沿完成。數據在時鐘周期內由SDI接收。 以下是接收和發送的電位計數據的圖表。圖5所示為01h、FFh和80h被發送到SDO線路上的DS1868。SDI包含DS1868發送回微控制器的數據。SDI上的數據是FFh,C0h和00h。有關轉換數據的詳細信息,請參閱表 2。
圖6所示為01h、80h和80h被發送到DS1868。然后將數據與 C0h、40h 和 00h 進行比較。 有關轉換數據的詳細信息,請參閱表 2。
圖6.傳輸/接收的數據(詳細信息)。
審核編輯:郭婷
-
半導體
+關注
關注
334文章
27290瀏覽量
218090 -
電位器
+關注
關注
14文章
1012瀏覽量
66766 -
總線
+關注
關注
10文章
2878瀏覽量
88052
發布評論請先 登錄
相關推薦
評論