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.传输/接收的数据(详细信息)。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !