




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
总线技术I2C与SPI接口《小型智能电子产品设计与制作》总线总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束在计算机系统中,各个部件之间传送信息的公共通路叫总线,微型计算机是以总线结构来连接各个功能部件的。总线分类
按照传输数据的方式划分,可以分为串行总线和并行总线。串行总线中,二进制数据逐位通过1根数据线发送到目的器件;并行总线的数据线通常超过2根。常见的串行总线有SPI、I2C、USB及RS232等。按照时钟信号是否独立,可以分为同步总线和异步总线。同步总线的时钟信号独立于数据,而异步总线的时钟信号是从数据中提取出来的。SPI、I2C是同步串行总线,RS232采用异步串行总线。SCSI、ATA、PCI、IEEE1394总线技术指标总线的工作频率:以MHZ为单位,工作频率越高,总线工作速度越快,总线带宽越宽。总线的位宽:总线能同时传送的二进制数据的位数总线的带宽=总线的工作频率*总线的位宽/8注意:波特率是指数据信号对载波的调制速率,它用单位时间内载波调制状态改变的次数来表示,其单位是波特(Baud)。波特率与比特率(数字信号的传输速率bit/s)的关系是比特率=波特率X单个调制状态对应的二进制位数。。异步通信字符格式:规定有起始位、数据位、奇偶校验位、停止位等(RS232\485)数据传送方向概念单工方式:只允许数据按照一个固定的方向传送半双工方式:每次只能有一个站发送,另一个站接收全双工方式:允许通信双方同时进行发送和接收串行与并行总线对比与并行扩展总线相比,串行扩展总线能够最大程度发挥最小系统的资源功能、简化连接线路,缩小电路板面积、扩展性好,可简化系统设计。串行总线的缺点是数据吞吐容量小,信号传输较慢。但随着CPU芯片工作频率的提高,以及串行总线的功能增强,这些缺点将逐步淡化。SPI、I2C、1-Wire、RS232是目前单片机应用系统中最常用的几个串行总线接口。I2C总线I2C总线I2C(InterIntegratedCircuit)常译为内部集成电路总线,或集成电路间总线,它是由Philips公司推出的芯片间串行传输总线。使用2线实现数据通信。
1根串行数据线(SDA)
1根串行时钟线(SCL)I2C总线的基本特性1硬件结构上具有相同的硬件接口界面R:4.7K-5.1K-20k(DATASHEET)I2C总线的基本特性2在单主系统中,每个I2C接口芯片具有唯一的器件地址,各从器件之间互不干扰,相互之间不能进行通信。MCU与I2C器件之间的通信是通过独一无二的器件地址来实现的。如果两个或更多主机同时初始化数据传输,可以通过冲突检测和仲裁防止数据被破坏。任何器件通过I2C总线与MCU进行数据传送的方式基本一样,决定了I2C总线软件编写的一致性。数据传输位速率在标准模式下可达100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s。I2C总线信息传送当I2C总线没有进行信息传送时,数据线(SDA)和时钟线(SCL)都为高电平(上拉)开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。开始信号和结束信号之间传送的是信息,信息的字节数没有限制,但每个字节必须为8位,高位在前,低位在后。数据线SDA上每一位信息状态的改变只能发生在时钟线SCL为低电平的期间,因为SCL高电平的期间SDA状态的改变已经被用来表示开始信号和结束信号。每个字节后面必须接收一个应答信号(ACK),ACK是从控制器在接收到8位数据后向主控制器发出的特定的低电平脉冲,用以表示已收到数据。主控制器接收到应答信号(ACK)后,可根据实际情况作出是否继续传递信号的判断。若未收到ACK,则判断为从控制器出现故障。读写操作主控制器每次传送的信息的第一个字节必须是器件地址码,第二个字节为器件单元地址,用于实现选择所操作的器件的内部单元,从第三个字节开始为传送的数据。其中器件地址码格式如下:D7D6D5D4D3D2D1D0器件类型码片选R/WI2C读写操作范例/*电平模拟函数和基本读写函数voidIIC_Start(void);voidIIC_Stop(void);voidSEND_0(void);voidSEND_1(void);bitCheck_Acknowledge(void);voidWrite_Byte(ucharb);bitWrite_N_Bytes(uchar*buffer,ucharn);bitRead_N_Bytes(ucharSlaveAdr,ucharn,uchar*buffer);ucharRead_Byte(void);*/sbitSCL=P1^6;sbitSDA=P1^7;voidDELAY(uintt){while(t!=0)t--;}voidIIC_Start(void){//启动I2C总线的函数,当SCL为高电平时使SDA产生一个负跳变
SDA=1;SCL=1;DELAY(DELAY_TIME);SDA=0;DELAY(DELAY_TIME);SCL=0;DELAY(DELAY_TIME);}voidIIC_Stop(void){//终止I2C总线,当SCL为高电平时使SDA产生一个正跳变SDA=0;SCL=1;DELAY(DELAY_TIME);SDA=1;DELAY(DELAY_TIME);SCL=0;DELAY(DELAY_TIME);}voidSEND_0(void){//发送0,在SCL为低电平时使SDA信号变为低SCL=0;SDA=0;SCL=1;DELAY(DELAY_TIME);SCL=0;DELAY(DELAY_TIME);}voidSEND_1(void){//发送1,在SCL为低电平时使SDA信号变为高SCL=0;SDA=1;SCL=1;DELAY(DELAY_TIME);SCL=0;DELAY(DELAY_TIME);}bitCheck_Acknowledge(void){//发送完一个字节后检验设备的应答信号SDA=1;SCL=1;DELAY(DELAY_TIME/2);F0=SDA;DELAY(DELAY_TIME/2);SCL=0;DELAY(DELAY_TIME);if(F0==1)returnFALSE;returnTRUE;}voidWrite_Byte(ucharb){//向IIC总线写一个字节uchari;for(i=0;i<8;i++)if((b<<i)&0x80)SEND_1();elseSEND_0();}bitWrite_N_Bytes(uchar*buffer,ucharn){//向I2C总线写n个字节uchari;IIC_Start();for(i=0;i<n;i++) { Write_Byte(buffer[i]); if(!Check_Acknowledge()) { IIC_Stop(); return(i==n); } }IIC_Stop();returnTRUE;}ucharRead_Byte(void)reentrant{//从I2C总线读一个字节ucharb=0,i;for(i=0;i<8;i++) { SDA=1;//释放总线
SCL=1;//接受数据
DELAY(10); F0=SDA; DELAY(10); SCL=0; if(F0==1) { b=b<<1; b=b|0x01; } else b=b<<1; }returnb;}bitRead_N_Bytes(ucharSlaveAdr,ucharn,uchar*buffer){//从I2C总线读n个字节uchari;IIC_Start();Write_Byte(SlaveAdr);//向总线发送接收器地址if(!Check_Acknowledge())//等待接收器应答信号returnFALSE;for(i=0;i<n;i++) { buffer[i]=Read_Byte(); if(i!=n) SEND_0();//发送应答
else SEND_1();//发送非应答
}IIC_Stop();returnTRUE;}SPI串行总线SPI串行总线SPI总线的特点(串行外围设备接口:serialperipheralinterface)一般使用4条线
串行时钟线(SCK) 主机输入/从机输出数据线MISO
主机输出/从机输入数据线MOSI
低电平有效的从机选择线SSSPI总线技术是Motorola公司推出的一种同步串行接口SPI总线系统的构成MCS-51单片机I/O口模拟SPI总线接口原理图常用SPI串行总线接口的器件单片机,如Motorola公司的M68HC08系列、Cygnal公司的C8051F0XX系列、Philips公司的P89LPC93X系列。A/D和D/A转换器,如:AD公司的AD7811/12、TI公司的TLC1543、TLC2543、TLC5615等。实时时钟RTC,如Dallas公司的DS1302/05/06等。温度传感器,如AD公司的AD7816/17/18;NS公司的LM74等。其他设备,如LED控制驱动器MAX7219、HD7279等,集成看门狗、电压监控、E2PROM等功能的X5045等。SPI时序SPI接口的一个缺点:没有指定的流控制,没有应答机制确认是否接收到数据。
Dallas公司的DS1302为例DS1302的引脚如图:其中:X1、X2:32.768KHz晶振接入引脚。GND:地。/RST:复位引脚,低电平有效。I/O:数据输入/输出引脚,具有三态功能。SCLK:串行时钟输入引脚。VCC1:工作电源引脚。VCC2:备用电源引脚。DS1302与单片机的连接DS1302与单片机的连接仅需要3条线:时钟线SCLK、数据线I/O和复位线RST。时钟线SCLK与P1.0相连,数据线I/O与P1.1相连,复位线RST与P1.2相连(片选)。VCC2X1X2GNDVCC1SCLKI/ORST+5V8051P1.0P1.2P1.3+5VDS1302DS1302控制字控制寄存器用于存放DS1302的控制命令字,DS1302的RST引脚回到高电平后写入的第一个字就为控制命令。它用于对DS1302读写过程进行控制,它的格式如下:D7D6D5D4D3D2D1D01RAM/CKA4A3A2A1A0RD/W寄存器名称D7D6D5D4D3D2D1D01RAM/CKA4A3A2A1A0R/W秒寄存器10000000或1分寄存器10000010或1小时寄存器10000100或1日寄存器10000110或1月寄存器10001000或1星期寄存器10001010或1年寄存器10001100或1写保护寄存器10001110或1慢充电寄存器10010000或1时钟突发模式10111110或1RAM011000000或1110或1RAM3011111100或1RAM突发模式11111110或1DS1302的输入输出过程DS1302通过RST引脚驱动输入输出过程,当置RST高电平启动输入输出过程,在SCLK时钟的控制下,首先把控制命令字写入DS1302的控制寄存器,其次根据写入的控制命令字,依次读写内部寄存器或片内RAM单元的数据,对于日历、时钟寄存器,根据控制命令字,一次可以读写一个日历、时钟寄存器,也可以一次读写8个字节,对所有的日历、时钟寄存器;对于片内RAM单元,根据控制命令字,一次可读写一个字节,一次也可读写31个字节。当数据读写完后,RST变为低电平结束输入输出过程。无论是命令字还是数据,一个字节传送时都是低位在前,高位在后,每一位的读写发生在时钟的上升沿。程序模拟#define……..。。。。。。SbitAcc_7=Acc^7;SbitSCLK=P1^0;SbitDIO=P1^1;SbitRST=P1^2;//地址、数据发送子程序voidWrite1302(unsignedcharaddr,dat){unsignedchari,temp;RST=0;//数据传送终止
SCLK=0;//清零时钟线
RST=1;//引脚为高,启动读写//发送写地址控制字
for(i=8;i>0;i--)//循环8次
{SCLK=0;temp=addr;DIO=(bit)(temp&0x01);//从低位到高位
addr>>=1;SCLK=1;//上升沿写入
}(续)//发送数据
for(i=8;i>0;i-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 夫妻购房担保合同协议
- 堵漏防水合同协议
- 大型餐饮合作合同协议
- 大型登高车采购合同协议
- 工程合同到期解除协议
- 奖学金合同协议
- 场地划分协议书范本
- 固定资产订购合同协议
- 大丰秧苗订购合同协议
- 多人入股协议书范本
- 反应釜50L验证方案
- 矿山协议合同范本
- 《运筹学》全套课件(完整版)
- DZ∕T 0382-2021 固体矿产勘查地质填图规范(正式版)
- 2024春期国开电大《应用写作(汉语)》形考任务1-6参考答案
- 《研学旅行课程设计》课件-研学课程方案设计
- 川教版《生命生态安全》九年级下册第十课树立生态文明意识 课件
- GB/T 9442-2024铸造用硅砂
- 中国椎管内分娩镇痛专家共识(2020版)
- 2023-2024学年天津市红桥区八年级(下)期中数学试卷(含解析)
- 国开2024年《机械设计基础》形考任务1-4答案
评论
0/150
提交评论