




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、总线技术I2C与SPI接口小型智能电子产品设计与制作总线 总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束 在计算机系统中,各个部件之间传送信息的公共通路叫总线,微型计算机是以总线结构来连接各个功能部件的。 总线分类 按照传输数据的方式划分,可以分为串行总线和并行总线。串行总线中,二进制数据逐位通过1根数据线发送到目的器件;并行总线的数据线通常超过2根。常见的串行总线有SPI、I2C、USB及RS232等。 按照时钟信号是否独立,可以分为同步总线和异步总线。同步总线的时钟信号独立于数据,而异步总线的时钟信号是从数据中提取出来的。SPI、I2C是同步串行总线
2、,RS232采用异步串行总线。 SCSI、ATA、PCI、IEEE1394 总线技术指标 总线的工作频率:以MHZ为单位,工作频率越高,总线工作速度越快,总线带宽越宽。 总线的位宽:总线能同时传送的二进制数据的位数 总线的带宽总线的工作频率*总线的位宽/8 注意:波特率是指数据信号对载波的调制速率,它用单位时间内载波调制状态改变的次数来表示,其单位是波特(Baud)。波特率与比特率(数字信号的传输速率bit/s)的关系是比特率=波特率X单个调制状态对应的二进制位数。 。异步通信 字符格式:规定有起始位、数据位、奇偶校验位、停止位等(RS232485)数据传送方向概念 单工方式:单工方式:只允许
3、数据按照一个固定的方向传送 半双工方式:半双工方式:每次只能有一个站发送,另一个站接收 全双工方式:全双工方式:允许通信双方同时进行发送和接收串行与并行总线对比 与并行扩展总线相比,串行扩展总线能够最大程与并行扩展总线相比,串行扩展总线能够最大程度发挥最小系统的资源功能、简化连接线路,缩度发挥最小系统的资源功能、简化连接线路,缩小电路板面积、扩展性好,可简化系统设计。小电路板面积、扩展性好,可简化系统设计。 串行总线的缺点是数据吞吐容量小,信号传输较串行总线的缺点是数据吞吐容量小,信号传输较慢。但随着慢。但随着CPU芯片工作频率的提高,以及串行芯片工作频率的提高,以及串行总线的功能增强,这些缺
4、点将逐步淡化。总线的功能增强,这些缺点将逐步淡化。 SPI、I2C、1-Wire、RS232是目前单片机应用系是目前单片机应用系统中最常用的几个串行总线接口。统中最常用的几个串行总线接口。I2C总线总线I2C总线总线 I I2 2C C(Inter Integrated CircuitInter Integrated Circuit)常译为常译为内部集成电路总线,或集成电路间总线,内部集成电路总线,或集成电路间总线,它它是由是由PhilipsPhilips公司推出的芯片间串行传输公司推出的芯片间串行传输总线。使用总线。使用2 2线实现数据通信。线实现数据通信。1 1根串行数据线(根串行数据线(
5、SDASDA)1 1根串行时钟线(根串行时钟线(SCLSCL)I2C总线的基本特性总线的基本特性1 硬件结构上具有相同的硬件接口界面 R: 4.7K-5.1K -20k(DATASHEET)I2C总线的基本特性总线的基本特性2 在单主系统中,每个在单主系统中,每个I I2 2C C接口芯片具有唯一的器件地址,接口芯片具有唯一的器件地址,各从器件之间各从器件之间互不干扰互不干扰,相互之间不能进行通信。,相互之间不能进行通信。MCUMCU与与I I2 2C C器件之间的通信是通过独一无二的器件地址来实现的。器件之间的通信是通过独一无二的器件地址来实现的。 如果两个或更多主机同时初始化数据传输,可以
6、通过如果两个或更多主机同时初始化数据传输,可以通过冲突冲突检测和仲裁检测和仲裁防止数据被破坏。防止数据被破坏。 任何器件通过任何器件通过I I2 2C C总线与总线与MCUMCU进行数据传送的方式基本一样,进行数据传送的方式基本一样,决定了决定了I I2 2C C总线总线软件编写的一致性软件编写的一致性。 数据传输位速率在标准模式下可达数据传输位速率在标准模式下可达100kbit/s,快速模式,快速模式下可达下可达400kbit/s,高速模式下可达,高速模式下可达3.4Mbit/s。I2C总线信息传送总线信息传送当当I2C总线没有进行信息传送时,数据线(总线没有进行信息传送时,数据线(SDA)
7、和时钟线()和时钟线(SCL)都为高电平都为高电平(上拉)上拉)开始信号:开始信号:SCL为高电平时,为高电平时,SDA由高电平向低电平跳变,开始传送由高电平向低电平跳变,开始传送数据。数据。结束信号:结束信号:SCL为高电平时,为高电平时,SDA由低电平向高电平跳变,结束传送由低电平向高电平跳变,结束传送数据。数据。开始信号和结束信号之间传送的是信息,信息的字节数没有限制,但开始信号和结束信号之间传送的是信息,信息的字节数没有限制,但每个字节必须为每个字节必须为8位位,高位在前,低位在后。数据线,高位在前,低位在后。数据线SDA上每一位信上每一位信息状态的改变只能发生在时钟线息状态的改变只能
8、发生在时钟线SCL为低电平的期间,因为为低电平的期间,因为SCL高电高电平的期间平的期间SDA状态的改变已经被用来表示开始信号和结束信号。每个状态的改变已经被用来表示开始信号和结束信号。每个字节后面必须接收一个字节后面必须接收一个应答信号应答信号(ACK),),ACK是从控制器在接收是从控制器在接收到到8位数据后向主控制器发出的特定的位数据后向主控制器发出的特定的低电平脉冲低电平脉冲,用以表示已收到,用以表示已收到数据。主控制器接收到应答信号(数据。主控制器接收到应答信号(ACK)后,可根据实际情况作出是)后,可根据实际情况作出是否继续传递信号的判断。若未收到否继续传递信号的判断。若未收到AC
9、K,则判断为从控制器出现故障。,则判断为从控制器出现故障。读写操作 主控制器每次传送的信息的第一个字节必须是器主控制器每次传送的信息的第一个字节必须是器件地址码,第二个字节为器件单元地址,用于实件地址码,第二个字节为器件单元地址,用于实现选择所操作的器件的内部单元,从第三个字节现选择所操作的器件的内部单元,从第三个字节开始为传送的数据。其中器件地址码格式如下:开始为传送的数据。其中器件地址码格式如下:D7D6D5D4D3D2D1D0器件类型码片选R/WI2C读写操作范例读写操作范例/* 电平模拟函数和基本读写函数 void IIC_Start(void); void IIC_Stop(void
10、); void SEND_0(void); void SEND_1(void); bit Check_Acknowledge(void); void Write_Byte(uchar b); bit Write_N_Bytes(uchar *buffer,uchar n);bit Read_N_Bytes(uchar SlaveAdr,uchar n,uchar *buffer); uchar Read_Byte(void); */ sbit SCL=P16; sbit SDA=P17; void DELAY(uint t) while(t!=0) t-; void IIC_Start(voi
11、d) /启动I2C总线的函数,当SCL为高电平时使SDA产生一个负跳变 SDA=1; SCL=1; DELAY(DELAY_TIME); SDA=0; DELAY(DELAY_TIME); SCL=0; DELAY(DELAY_TIME); void IIC_Stop(void) /终止I2C总线,当SCL为高电平时使SDA产生一个正跳变 SDA=0; SCL=1; DELAY(DELAY_TIME); SDA=1; DELAY(DELAY_TIME); SCL=0; DELAY(DELAY_TIME); void SEND_0(void) /发送发送0,在,在SCL为低电平时使为低电平时使S
12、DA信号变为低信号变为低 SCL=0; SDA=0; SCL=1; DELAY(DELAY_TIME); SCL=0;DELAY(DELAY_TIME); void SEND_1(void) /发送发送1,在,在SCL为低电平时使为低电平时使SDA信号变为高信号变为高 SCL=0; SDA=1; SCL=1; DELAY(DELAY_TIME); SCL=0; DELAY(DELAY_TIME); bit Check_Acknowledge(void) /发送完一个字节后检验设备的应答信号 SDA=1; SCL=1; DELAY(DELAY_TIME/2); F0=SDA; DELAY(DEL
13、AY_TIME/2); SCL=0; DELAY(DELAY_TIME); if(F0=1) return FALSE; return TRUE; void Write_Byte(uchar b) /向IIC总线写一个字节 uchar i; for(i=0;i8;i+) if(bi)&0 x80) SEND_1(); else SEND_0(); bit Write_N_Bytes(uchar *buffer,uchar n) /向I2C总线写n个字节 uchar i; IIC_Start(); for(i=0;in;i+) Write_Byte(bufferi); if(!Check
14、_Acknowledge() IIC_Stop(); return(i=n); IIC_Stop(); return TRUE; uchar Read_Byte(void)reentrant /从从I2C总线读一个字节总线读一个字节 uchar b=0,i; for(i=0;i8;i+) SDA=1; /释放总线释放总线 SCL=1; /接受数据接受数据 DELAY(10); F0=SDA; DELAY(10); SCL=0; if(F0=1) b=b1; b=b|0 x01; else b=b1; return b; bit Read_N_Bytes(uchar SlaveAdr,uchar
15、 n,uchar *buffer) /从从I2C总线读总线读n个字节个字节 uchar i; IIC_Start(); Write_Byte(SlaveAdr); /向总线发送接收器地址向总线发送接收器地址 if(!Check_Acknowledge() /等待接收器应答信号等待接收器应答信号 return FALSE; for(i=0;i0; i-) /循环8次 SCLK=0; temp=addr; DIO=(bit)(temp&0 x01); /从低位到高位 addr=1; SCLK=1; /上升沿写入 (续) /发送数据 for (i=8; i0; i-) SCLK=0; temp=dat; DIO=(bit)(temp&0 x01); dat=1; SCLK=1; /上升沿写入 RST=0; /数据读取子程序unsigned char Read1302(unsigned char addr) unsigned char i,temp,dat; RST=0; SCLK=0; RST=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030中国男士全棉内裤行业市场发展现状及商业模式与投融资战略报告
- 2025至2030中国电动控制元件行业产业运行态势及投资规划深度研究报告
- 2025至2030中国电冰箱行业产业运行态势及投资规划深度研究报告
- 中医教育资源国际共享与跨文化教学研究
- 非公企业党建培训课件
- 教育行业中的科技驱动力量-论区块链在学术诚信建设中的重要性
- 智慧安防保护每一座学校-智能监控系统的实践
- 教育技术评估模型的构建及其在实践中的应用研究
- 智慧城市公共服务中的教育系统优化研究
- 商业环境中员工心理健康的支持体系
- 2025区域型变电站智能巡视系统技术规范
- 财务报表编制与审核合同模板
- 上海闵行区教育系统招聘实验员考试真题2024
- 建设部建设工程重大质量安全事故应急预案
- 2025年中航油招聘笔试参考题库附带答案详解
- 2024年中国中高端电子铝箔行业市场调查报告
- DB54∕T 0275-2023 民用建筑节能技术标准
- 2022版体育与健康课程标准
- 《陆上风电场工程概算定额》NBT 31010-2019
- 药品不良反应报告事件表
- DB31T 405-2021 集中空调通风系统卫生管理规范
评论
0/150
提交评论