用并行方式实现快速读写多只单总线器件_第1页
用并行方式实现快速读写多只单总线器件_第2页
用并行方式实现快速读写多只单总线器件_第3页
用并行方式实现快速读写多只单总线器件_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、用并行方式实现快速读写多只单总线器件目前,常用的MCU与外接的元器件进行数据通信的串行总线 主要有I2C总线、SPI总线和SCI总线。其中I2C总线以2线连 接(一条时钟线 , 一条数据线 )进行同步串行通信 ;SPI 总线则以 3 线连接 (一条时钟线 , 一条数据输入线 , 一条数据输出线 ) 进行同 步通信 ;SCI 总线是以两线连接 ( 一条数据输入线 , 一条数据输出 线)进行异步串行进行通信的。这些总线至少需要两条或两条以 上的信号线。而美国的 DALLASS#导体公司推出的单总线 (1-Wire Bus) 技术采用了单根信号线 , 既可传输时钟 , 又能传输 数据, 而且数据传输

2、是双向的 , 因而这种单总线技术具有线路简 单, 硬件开销少 , 成本低廉 , 便于总线扩展和维护等优点。 目前, 常见的单总线器件主要有数字温度传感器DS18B20 A/D转换器如DS2450电源管理芯片DS2438等。对于单总线器件,每一个器件内都有一个 64位的ROM包含 有 8 位的产品系列编码和 48位的 ID 号。这些 ID 号对每个单总 线器件都是唯一的 , 因此我们可以在一条单总线上挂接多个单总 线器件,然后使用单总线传输协议规定的 ReadROM和SearchROM 的操作命令来搜索这些器件的 ID号,并用MatchROM命令选择各 个特定 ID 号的单总线器件分别对其进行读

3、写。但是,在实际应用中,尤其是在一个MCI上连接有多个同类 型的单总线器件的情况下 , 这种通过搜索和指定 ID 号来读写单 总线器件的方式并不方便。我们虽然可以用 ID 号来区分各个器 件并且分别对其读写而互不干扰 , 但是没有很简单的办法把每一 个 ID 号和某个具体的单总线器件对应起来 , 因为每个单总线器 件的 ID 号都是随机的 , 而且这个 ID 号并没有标示在元件上面。 比方说,要在一条单总线上连接两个 DS18B20温度传感器,分别 测量室内和室外的温度 , 可以用程序搜索到两个不同的 ID 号, 得 到两个温度值 , 但是我们并不知道读出来的两个值哪个是室内的 哪个是室外的。

4、虽然 , 对于上面的实例我们可以通过手动屏蔽掉 一个器件的方式确认哪个ID对应哪个器件,并修改MCU勺程序使 之分别显示室内外温度 , 但是如果用于大批量生产的实际产品时 我们不可能对每一个产品的 ID 号和实际所在的位置进行手动对 应。因此, 可以考虑换一种方式来对多个单总线进行操作 : 利用MCU 勺并口同时对多个单总线器件进行读写。我们将多个单总线 器件分别挂到MCI一个并口的多个10端上,这样对于常用的如 51系列PIC系列或者AVR系列等8位MCU一个单总线读写周期 内就能同时读写 8 个单总线器件 , 而且每个单总线器件的位置和 MCU并口 I0端的位置都是对应的。本文以最常用的单

5、总线器件温度传感器DS18B20和最常用的51系列MCI为例,阐述了这种操作方式的实现。电路的连接如下:将8只DS18B20温度传感器各自的DC端分 别与89C51单片机的并口 P1的8个I0端相连,然后各传感器的VCC和GND脚分别接电源和地。根据单总线通信协议规定 ,在每一个单总线读写时序中 , 一 条总线只能传输一位数据。MCI向单总线器件写数据时,MCU在拉 低总线1015uS后释放总线,即向单总线器件写1;若MCL拉低 总线后保持60uS的低电平,则向单总线器件写0。MCI从单总线单总线器件读取数据时,MCU将总线下拉为低 电平1uS左右后释放总线,单总线器件在检测到总线电平被拉低

6、后15uS后向MCI传输数据,若单总线器件发送1,则总线保持高 电平, 若发送 0, 则拉低总线。具体对于一个DS18B20我们要输出或输入各类数据时,可以 采用位寻址方式 , 直接对连接单总线器件的 IO 端口进行位操作 , 产生上述时序以对单总线器件进行读写。但是 , 对于并行连接的 多个DS18B20如果还采用上述方法,程序就会变得比较复杂,而 且速度也会很大的减慢 , 所以我们换一种方式 , 用字节寻址的方 式来同时读写连接于一个并口上的一组DS18B2 0这样就可以一次读入或写出 8 个位的数据 , 从而达到简化程序并提高读写效率 的目的。以并行方式该读取数据的具体实现算法如下:fo

7、r(i=0;i=1;if (TDataj&Maski)0) Datai|=0x80;else Datai|=0;具体对于DS18B20温度传感器而言,因为温度读数是以高字节和低字节两个字存储的 , 因此上述程序需要运行两次方能得到 最终的读数。同样, 如果需要向各个单总线器件写入数据 , 也需要先把要 写入各个单总线器件的数据存储到一个数组中 , 用上述算法进行 转换 , 然后在写入。写入数据的具体算法如下 :TransData(TWriteData,WriteData);for(i=0;i=1;delay60();DQ_Byte=0xff;这样,通过上述方法,就可以实现一次对连接个一个 MCL并 口的不多于 8 个的单总线器件进行读写。这种对多个单总线并行读写的方式虽然比传统的单线串接 的方式使用了更多的 MCU勺10端口,线路连接也使用了更多的连 线, 但是这样可以绕过对单总线器件的 ROMID 的搜索和匹配操作 节省了每次数据读写操作时间 ;而且一次可以读写 8 组数据而所

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论