SPI串口通信应用

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
湖南工程学院
四、DS1302数码管电子钟
1 2 8AH 3 8EH 80H 8CH 7 CH 82H 84H 86H 88H
0
DS1302
80H
4
80H
8CH
湖南工程学院
1
1 1 1 1 1
1
0
0
湖南工程学院
0
1
1
0
0
1
D7 1 1 1 1
D6 RAM/CK 0 0 0
D5 A4 0 0 1
D4 A3 0 1 1
D3 A2 1 0 1
D2 A1 1 0 1
D1 A0 1 0 1
D0 R/W 0 0 0 1 1 1
RAM0
RAM30 RAM
1
1 1 1
1
1 1 1
湖南工程学院
一、SPI总线工作原理
2、SPI接口时序图
(1)四线制:低电平使能,上升沿锁存,先发送最高位
湖南工程学院
一、SPI总线工作原理
(2)三线制:高电平使能,写上升沿锁存,读下降沿锁 存,先发送最低位
湖南工程学院
二、DS1302芯片工作原理
1、DS1302芯片概要
DS1302 SPI DALLAS
读与写操作的不同就在于,写操作是在SCLK低电平时单片机将数据放到IO上, 当SCLK上升沿时,DS1302读取。而读操作是在SCLK高电平时DS1302放数据到 IO上,将SCLK置为低电平后,单片机就可从IO上读取数据。
湖南工程学院
三、DS1302驱动程序
2、写一个字节数据函数
void write_byte(uchar wdata) { uchar i; for(i=0;i<8;i++) { sclk=0; //
/
CPU
31
RAM
1) 秒、分、时、日、星期、月和年的信息; 2)每月的天数和闰年的天数可自动调整; 3 AM/PM 24 12
4
RAM
/
5)采用双电源供电(主电源和备用电源),可设置备用电源充 电方式,提供了对后备电源进行涓细电流充电的能力。 6 2.5 5.5V
湖南工程学院
二、DS1302芯片工作原理
湖南工程学院
7、突发读操作
三、DS1302驱动程序
void burst_read(uchar cmd,uchar len,uchar *prdata) { sclk=0; reset=1; write_byte(cmd); while(len--) { *prdata= read_byte(); prdata++; } write_byte(wdata); sclk=0; reset=0; }
S
CS,SCK,MOSI,MISO CS,SCK,DIO
C S
只能分时
C S C S
SCK
SCK
SCK
MOSI
MOSI
DIO
MISO
湖南工程学院
MISO
DIO
SCK
一、SPI总线工作原理
一主多从的连接模式
SPI主机提供时钟、发起对从设备的读或写操作。 从设备接受时钟,被动的响应主机的读写数据请求。
SPI串口通信应用
SPT总线工作原理 DS1302芯片工作原理 DS1302驱动程序 DS1302数码管电子钟

湖南工程学院
一、SPI总线工作原理
1、SPI总线概述
SPI总线是Motorola 种同步串行总线,数据传输 速度总体来说比I2C总线要快,速度可达到几Mbps

C
SPI SPI
0
1 1
湖南工程学院
0
1 1
0
1 1
0
1 1
0
0 1
0
0 0 0
1
1 1 1
二、DS1302芯片工作原理
4、DS1302有关日历、时间的寄存器
BCD
湖南工程学院
二、DS1302芯片工作原理
DS1302
湖南工程学院
二、DS1302芯片工作原理
5、片内RAM
湖南工程学院
二、DS1302芯片工作原理
2、DS1302引脚
湖南工程学院
二、DS1302芯片工作原理
湖南工程学院
二、DS1302芯片工作原理
3、DS1302的命令字节格式
第一字节是命令字节,位定义:
bit0: bit1~5:5 bit6: RAM bit7: 1 ’1’~ DS1302 RAM DS1302 ’0’~
D7 1
D6 RAM/CK
if(wdata&0x01) io=1; else io=0; sclk=1; _nop_();
wdata>>=1;
//
}}
湖南工程学院
三、DS1302驱动程序
3、读一个字节数据函数
uchar read_byte() { uchar i, rdata=0; io=1; for(i=0;i<8;i++) { sclk=0;
6、DS1302的工作模式寄存器
突发模式是指一次传送多个字节的时钟信号和RAM数据。
在突发模式下,通过连续的脉冲一次性读写完8个字节的 时钟/日历寄存器(8个寄存器要全部读写完:时、分、秒、 日、月、年、星期、写保护寄存器,充电寄存器在突发模 式下不能操作) 在突发模式下,通过连续的脉冲一次性读写完1-31个字节 的RAM数据(可按实际情况读写一定数量的字节,可以不 必一次全部读写完)
rdata>>=1; //
if(io==1)
rdata|=0x80;
sclk=1; } return (rdata); }
//
湖南工程学院
4、单次写操作
RST 0 I/O SCLK SCLK
三、DS1302驱动程序
void singal_write(uchar cmd,uchar wdata) { sclk=0; reset=1; write_byte(cmd); write_byte(wdata); sclk=0; reset=0; }
湖南工程学院
三、DS1302驱动程序
1、DS1302时序图
1 RST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 0 1 SCLK 0 1 I/O R/W 0 A0 A1 A2 A3 A4 R/C 0/1 1 D0 D1 D2 D3 D4 D5 D6 D7 0
1 RST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 1 SCLK 0 1 I/O R/W 1 A0 A1 A2 A3 A4 R/C 0/1 1 D0 D1 D2 D3 D4 D5 D6 D7 0
D5 A4
D4 A3
D3 A2
D2 A1
D1 A0
D0 RD/W
湖南工程学院
D7
1
D6
RAM/CK
D5
A4
D4
A3
D3
A2
D2
A1
D1
A0
D0
R/W
1
1 1 1 1 1
0
0 0 0 0 0
0
0 0 0 0 0
0
0 0 0 0 0
0
0 0 0 1 1
0
0 1 1 0 0
0百度文库
1 0 1 0 1
0
0 0 0 0 0
I/O DS1302 I/O SCLK 1 I/O 8
DS1302 DS1302 CE
湖南工程学院
5、单次读操作
三、DS1302驱动程序
uchar singal_read(uchar cmd) { uchar rdata; sclk=0; reset=1; write_byte(cmd); rdata=read_byte(); sclk=0; reset=0; return (rdata); }
SCLK I/O
DS1302
SCLK
湖南工程学院
6、突发写操作
三、DS1302驱动程序
void burst_write(uchar cmd,uchar len,uchar *pwdata) { sclk=0; reset=1; write_byte(cmd); while(len--) { write_byte(*pwdata); pwdata++; } sclk=0; reset=0; }
相关文档
最新文档