单片机原理及应用 第7章80C51的串行总线扩展
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
写字节
void DS18B20_WByte(uchar dat) {
uchar i=0; for (i=8; i>0; i--) {
DQ = 0; DQ = dat&0x01; Delay10Us(5);//54 DQ = 1; dat>>=1; } }
7.1.5 DS18B20应用实例
7.2 I2C总线接口及其扩展
>4.7μS
SDA
SCL 起始信号 S
>4μS
2020/5/15
24
停止信号 void Stop(void) {
SDA = 0; SCL = 1; NOP5(); SDA = 1; NOP5(); SCL = 0; }
>4μS
SDA
SCL
>4.7μS
停止信号 P
发送应答位“0”
void Ack(void)
标准80C51没有SPI接口,可模拟SPI时序。
用于E2PROM、A/D、D/A、实时时钟等。
2020/5/15
33
7.3.1 单片机扩展SPI总线的系统结构 对于80C51,主从模式接口电路如下:
P1.0 P1.1 P1.2
89S51
P1.3 P1.4 P1.5
SO SI SCK CS 1#器件
AT24C02为内含256字节的串行E2PROM存储器。体积小、 功耗低、占用I/O口线少。
A0 1 8 VCC A1 2 7 WP A2 3 6 SCL VSS 4 5 SDA
AT24C02
Vcc
P3.5 P3.4
89S51
5.1KΩ×2
+5V
Vcc A0 SDA A1 SCL A2
WP
WP:写保护控制端,接地时允许写入。
❖器件地址由固定部分和可编程部分组成。
以AT24CXX系列存储器为例,见下页表。
器件地址表
器件型号
AT24C01A AT24C02 AT24C04 AT24C08A AT24C16A AT24C32A AT24C64A AT24C128B AT24C256B AT24C512B
字节容量
固定标识
寻址字节 可编程地址 R/W
报警搜索 ECH 主机搜索越限报警的DS18B20器件
RAM操作命令
指令及代码
温度转换
44H
读缓冲器
BEH
写缓冲器
4EH
复制缓冲器 48H
回读E2PROM B8H
读供电方式 B4H
说
明
启动DS18B20开始转换
读缓冲器的9个字节数据
向DS18B20写TH、TL及配置寄存器数据
将缓冲器的TH、TL和配置寄存器值送E2PROM
字节传送(地址或数据)
SDA
MSB
发送机数据
SCL (主机)
1
2
起始信号 S
接收机非应答
接收机应答
8
9
脉冲
2020/5/15
20
寻址字节
位: D7 D6 D5 D4 D3 D2 D1 D0
器件地址
R/W
❖主机发送器件地址,总线上的从器件都将这7 位地址码与自己的地址进行比较。如果相同,则 认为自己正被主机寻址。
7.2.1 I2C总线基础 I2C总线架构
SDA
RP
SCL
RP
SCL SDA SCL SDA
单片机 A
单片机 B
SCL SDA
SRAM或 E2PROM
SCL SDA
A/D或 D/A
SCL SDA
其它I2C 外围设备
+VDD
数据线SDA 时钟线SCL
2020/5/15
16
I2C总线的特点
器件引脚少(2线制) 器件间连接简单,电路板体积减小,可靠性提高
读操作过程
当前地址读
S 器件寻址读 A
Data
AP
单片机发出起始信号S
单片机完成器件寻址读操作 被选中的器件返回确认应答(或非应答) 器件发送数据字节 单片机回复应答 单片机发出停止信号P
2020/5/15
31
随机读
S 器件寻址写 A 数据地址写 A S 器件寻址读 A Data 1
A ……
器件发送数据字节 单片机产生应答 ------------------单片机发出非应答及停止信号P
(程序略)
7.3 SPI总线接口及其扩展
由Motorola推出。基本信号3根线:MOSI、 MISO、SCK。传输速率由SCK决定,MOSI为主机 数据输出、MISO为主机数据输入。
另外,主机要发出CS来控制对哪个从芯片进 行通信;某个从芯片的CS信号有效时,能通过 MOSI接收指令或数据,并通过MISO发出数据。 而未被选中的从芯片的MISO为高阻状态。
2020/5/15
18
P 停止信号 P
传输时序图
S SDA
MSB
SCL S
1
2
应答
从机忙时拉低
7
89
ASK
1
2
应答
P
S
9 ASK
P或S
SCL由主机控制,从器件仅在自己忙时才拉低SCL线; 字节数据由发送器发出,响应位由接收器发出; SCL高电平,SDA线要稳定,SCL低电平,SDA线允许更新。
29
写多字节
S 器件寻址写 A 数据地址写 A
Data 1
A ……
Data n
AP
单片机发出起始信号S 单片机完成器件寻址写操作 被选中的器件返回确认应答(或非应答) 单片机完成数据地址写操作 器件返回确认应答(或非应答)
单片机发送数据字节 器件产生应答 -----------------单片机发出停止信号P 器件进入写周期(10ms内结束)
AGND:模拟地;
REFIN:基准电压输入端, 2V~(VDD - 2);
内部地址 字节数 1
2
页面写 最多可挂 字节数 器件数
8
8
8
8
16
4
16
2
16
1
32
8
32
8
64
8
64
8
128
8
注:P0位,可以区分页。如AT24C04有2个256字节的页。
2020/5/15
22
7.2.2 80C51的I2C总线时序模拟
I2C总线典型信号时序模拟
>4.7μS
SDA
>4μS
>4μS
64位
ROM
及
一线
总线
电 源
接口
检
测
存储器和控制器
高速缓冲 存储器
8位CRC生成器
温度敏感元件 低温触发器TL 高温触发器TH
配置寄存器
64位ROM
MSB 8位CRC MSB LSB
高速缓冲存储❖1器
48位序列号
CRC字节 保留
保留
保留 配置寄存器 TL
E2PROM 配置寄存器 TL
LSB 0010 1000 MSB LSB
2020/5/15
28
写操作过程
写单字节
S 器件寻址写 A 片内地址写 A Data1 A P
单片机发出起始信号S 单片机完成器件寻址写操作 被选中的器件返回确认应答(或非应答) 单片机完成片内地址写操作 器件返回确认应答(或非应答)
单片机发送数据字节 器件产生应答 单片机发出停止信号P
2020/5/15
128
A2 A1 A0 1/0
256
A2 A1 A0 1/0
512
A2 A1 P0 1/0
1K
A2 P1 P0 1/0
2K
P2 P1 P0 1/0
4K
1 0 1 0 A2 A1 A0 1/0
8K
A2 A1 A0 1/0
16K
A2 A1 A0 1/0
32K
A2 A1 A0 1/0
64K
A2 A1 A0 1/0
{
SDA
SDA = 0;
SCL = 1;
NOP5();
SCL = 0;
SCL
SDA = 1;
}
>4μS
应答(“0”)
发送非应答位“1”
void Nack(void)
{
SDA = 1;
SDA
SCL = 1;
NOP5();
SCL = 0;
SCL
SDA = 0;
}
>4μS
非应答(“1”)
7.2.3 80C51与AT24C02的接口
TLC5615引脚
DIN: 串行数据输入端; OUT: 模拟电压输出端;
DIN 1 8 VDD SCLK 2 7 OUT
CS 3 6 REFIN DOUT 4 5 AGND
SCLK:串行时钟输入端。
图8.22 TLC5615的引脚定义
/CS : 芯片选用通端,低电平有效;
DOUT:用于级联时的串行数据输出端;
7.1.1 DS18B20的引脚及内部结构
DS18B20的引脚
DS18B20引脚 GND,电源地 ; DQ,数字信号输入/输出端 ; VDD,外接电源输入端(在寄生电源接线方式时接地) 。
DALLAS 18B20 123 GND DQ VDD
123
DS18B20的内部结构
寄生取电
DQ
GND VDD
将E2PROM中的TH、TL和配置寄存器值送缓冲器
检测供电方式:寄生或外接方式
7.1.3 DS18B20操作时序 初始化时序
写时序
读时序
7.1.4 DS18B20操作函数
初始化函数
void DS18B20_Init(void)
{
uchar x=0;
DQ = 1;
Delay10Us(9); //
十六进制表示 07D0H 0191H 0008H 0000H FFF8H FE6FH FC90H
十进制温度 /℃ +125 +25.0625 +0.5 0 -0.5 -25.0625 -55
12位格式
扩展的符号位
S S S S 27 26 25 24 23 22 21 20 2-1 2-2 2-3 2-4
SO SI SCK CS 2#器件
SO SI SCK CS 3#器件
7.3.2 SPI总线的数据传输时序
CPOL=0 CPHA=0 CLK CPOL=0 CPHA=1 CLK
CPOL=1 CLK CPHA=0
CPOL=1 CPHA=1
CLK
MISO/MOSI
MSB
2020/5/15
35
SPI模式0 SPI模式1 SPI模式2 SPI模式3 LSB
MSB
LSB
TH
TH
温度值
配置寄存器:
位: D7 D6
0
R1
7FH,即分辨率为12位—750ms
D5
D4
D3
D2
D1 D0
R0
1
1
1
1
DS18B20的温度格式
18B20采样值与温度值关系
二进制采样值 0000 0111 1101 0000 0000 0001 1001 0001 0000 0000 0000 1000 0000 0000 0000 0000 1111 1111 1111 1000 1111 1110 0110 1111 1111 1100 1001 0000
传输速率高 标准模式:100Kb/s,快速模式:400Kb/s,高速模 式为3.4Mb/s
支持主/从和多主两种工作方式 标准型80C51没有I2C总线接口,只能工作于主/从方 式(扩展外围从器件)
2020/5/15
17
I2C总线的数据传输
起始信号S与停止信号P
S SDA
高电平空闲
SCL 起始信号 S
SDA
>4.7μS
SCL
SCL
起始信号 S
停止信号 P
SDA SCL
2020/5/15
>4μS
应答(“0”)
SDA SCL
23
>4μS
非应答(“1”)
I2C总线典型信号模拟子程序
起始信号 void Start(void) {
SDA = 1; SCL = 1; NOP5(); SDA = 0; NOP5(); SCL = 0; }
第7章 80C51的串行总线扩展
7.1 一线总线接口及其扩展 7.2 I2C总线接口及其扩展 7.3 SPI总线接口及其扩展
2020/5/15
1
串行扩展 连接线根数少; 系统板尺寸减小; 可靠性提高。
常用的串行扩展总线 一线总线(单总线); I2C总线; SPI总线。
7.1 一线总线接口及其扩展
DQ = 0;
Delay10Us(80);//
DQ = 1;
Delay10Us(37);//
}
读字节
uchar DS18B20_RByte(void) {
uchar i=0; uchar dat = 0; for (i=8;i>0;i--) { DQ = 0; dat>>=1; DQ = 1; if(DQ) dat|=0x80; Delay10Us(5);//54 } return(dat); }
CPOL和CPHA位决定了SPI的四种工作模式 CPOL位:空闲状态时,时钟电平为0或1; CPHA位:采样时钟是第1个还是第2个边沿。
有标准SPI接口的主机可以通过配置工作方 式与外设接口器件进行连接。
无标准SPI接口的80C51单片机,要与SPI器 件传输数据,就要利用I/O口进行软件模拟。
7.3.3 TLC5615 D/A转换器简介
Data n
AP
注:图中深底色表示主机控制SDA线,白底色表示从器件控制SDA线(但起动位始终由主机控制)。
单片机发出起始信号S
单片机完成器件寻址写操作(伪写)
被选中的器件返回确认应答(或非应答)
单片机完成数据地址写操作(伪写)
被选中的器件返回确认应答(或非应答) 单片机完成器件寻址读操作 被选中的器件返回确认应答(或非应答)
MSB
LSB
Leabharlann Baidu
7.1.2 DS18B20操作命令 ROM操作命令
指令及代码
说
明
读ROM
33H 读总线上DS18B20的序列号
匹配ROM 55H 依序列号访问确定的DS18B20器件
跳过ROM CCH 只使用RAM命令,操作在线的DS18B20器件
搜索ROM F0H 对总线上的多个DS18B20进行识别