将DS1868 3线器件连接至SPI总线

描述

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.传输/接收的数据(详细信息)。

审核编辑:郭婷

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分