1、开放实验项目报告实验项目 SPI协议编程与器件应用学生姓名 罗叶森班级学号 B10050419学 院 自动化学院专 业 测控技术与仪器指导教师 张 熠指导单位 电工电子实验教学中心摘 要本 系 统 实 现 的 是 基于 SPI协议的简易数据采集系统。 用 c 语 言编 程 , 通 过 TLC2543 模 数 转 换 器 实 现 数 据 的 采 集 , 再 采 用 存 储 器AT24C1024 存 储 数 据 , 数 据 经 过 单 片 机 STC89C52 进 行 处 理 后 , 最终 在 虚 拟 终 端 上 进 行 显 示 。 系 统 以 单 片 机 为 主 控 器 , 在 单 片 机 系统
2、 实 现 了 读 写 。关 键 字 : SPI 数 据 采 集 , 模 数 转 换 , AT24C1024 存 储 。目 录绪言4第一章 系统方案5第二章 系统硬件设计62.1 SPI协议介绍62.2 主要器件介绍7 2.3 电路原理图9 第三章 系统软件设计93.1 SPI协议设计93.2主程序设计11第四章 仿真情况20第五章 小结20绪 言随着技术与社会的发展,在很多领域实现需要数据的精密采集和处理,它是各种实验及各种工业制造的基础。其中数据的采集及处理系统就是其中的一个典型例子。数据的采集及处理系统是现代化发展的需要,它集微机自动识别技术和数据采集存储显示技术,涉及了电子,机械,计算机
3、技术,通讯技术,生物技术等诸多新技术。它是各种行业功能实现的基础。适用各种机要部门,如银行、宾馆、机房、军械库、机要室、办公间,智能化小区,工厂等。 第一章 系统设计方案在本系统中,控制器采用单片机 ATC89C52,T LC2543 作为 A/D进行数据采集,采用 AT24C1024 进 行 存 储 , 并 在 虚 拟 终 端 上 显 示下图所示的是数据的采集及处理系统总体设计框图。主控器AT89C52显示器A/D 模数转换,采集数据数据传输 AT24C1024存储器数据传输RS232PC第二章 系统硬件设计2.1 SPI协议介绍 SPI是高速同步串行口,是一种标准的四线同步双向串行总线。S
4、PI,就是串行外围设备接口。 SPI 接口主要应用在 EEPROM,FLASH,实时时钟,AD 转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便. SPI 总线系统是一种同步串行外设接口,它可以使 MCU与各种外围设备以串行方式进行通信以交换信息。外围设置 FLASHRAM、网络控制器、LCD 显示驱动器、A/D转换器和 MCU等。SPI 总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用 4条线:串行时钟线(SCK) 、主机输入/从机输出数
5、据线 MISO、主机输出/从机输入数据线 MOSI和低电平有效的从机选择线 SS(有的 SPI接口芯片带有中断信号线INT、有的 SPI接口芯片没有主机输出/从机输入数据线 MOSI)。SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少 4根线,事实上 3根也可以(用于单向传输时,也就是 半双工方式) 。也是所有基于 SPI的设备共有的,它们是 SDI(数据输入) ,SDO(数据输出) ,SCK(时钟) ,CS(片选) 。 (1)SDO 主设备数据输出,从设备数据输入 (2)SDI 主设备数据输入,从设备数据输出 (3)SCLK 时钟信号,由主设备产
6、生 (4)CS 从设备使能信号,由主设备控制 其中 CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位) ,对此芯片的操作才有效。这就允许在同一总线上连接多个 SPI设备成为可能。 负责通讯有 3根线,通讯是通过数据交换完成的,先要知道SPI是串行通讯协议,也就是说数据是一位一位的传输的。这就是SCK时钟线存在的原因,由 SCK提供时钟脉冲,SDI,SDO 则基于此脉冲完成数据传输。数据输出通过 SDO 线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。完成一位数据传输,输入也使用同样原理。这样,在至少 8次时钟信号的改变(上沿和下沿为一次
7、) ,就可以完成 8位数据的传输。2.2 主要器件介绍(1) AT89C52的简单介绍AT89C52与 MCS-51单片机产品兼容 、8K 字节在系统可编程Flash存储器、 1000 次擦写周期、全静态操作:0Hz33Hz 、三级加密程序存储器 、 32 个可编程 I/O口线 、三个 16位定时器/计数器八个中断源、全双工 UART串行通道、 低功耗空闲和掉电模式 、掉电后中断可唤醒 、看门狗定时器 、双数据指针 、掉电标识符 。端口引脚 第二功能:P1.0 T2 (定时器/计数器 T2的外部计数输入) ,时钟输出P1.1 T2EX(定时器/计数器 T2的捕捉/重载触发信号和方向控制)P1.
8、5 MOSI(在线系统编程用)P1.6 MISO(在线系统编程用)P1.7 SCK(在线系统编程用)P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 INTO(外中断0)P3.3 INT1(外中断1)P3.4 TO(定时/计数器0)P3.5 T1(定时/计数器1)P3.6 WR(外部数据存储器写选通)P3.7 RD(外部数据存储器读选通)此外,P3 口还接收一些用于 FLASH闪存编程和程序校验的控制信号。(2)T LC2543 的简单介绍TLC2543C 和 TLC2543I 是 12 位 开 关 电 容 逐 次 逼 近 模 数转 换 器 。 每 个 器 件 有 三 个
9、控 制 输 入 端 :片 选 ( CS ) , 输 入 /输 出 时 钟 ( I/O CLOCK ) 以 及 地 址 输入 端 ( DATA INPUT ) 。 它 还 可 以 通 过 一 个 串 行 的 3 态 输 出端 ( DATA OUT ) 与 主 处 理 器 或 其 外 围 的 串 行 口 通 讯 , 输 出 转换 结 果 。 本 器 件 可 以 从 主 机 高 速 传 输 数 据 。 除 了 高 速 的 转 换 器和 通 用 的 控 制 能 力 外 , 本 器 件 有 一 个 片 内 的 14 通 道 多 路 器 可 以在 11 个 输 入 通 道 或 3 个 内 部 自 测 试
10、( self-test ) 电 压 中 任意 选 择 一 个 。 采 样 -保 持 是 自 动 的 。 在 转 换 结 束 时 , “转 换 结 束 ”( EOC ) 输 出 端 变 高 以 指 示 转 换 的 完 成 。 本 器 件 中 的 转 换 器 结合 外 部 输 入 的 差 分 高 阻 抗 的 基 准 电 压 , 具 有 简 化 比 率 转 换 、 刻 度以 及 模 拟 电 路 与 逻 辑 电 路 和 电 源 噪 声 隔 离 的 特 点 。 开 关 电 容 的 设计 可 以 使 在 整 个 温 度 范 围 内 有 较 小 的 转 换 误 差 。2.1 特 点 12 位 分 辨 率 A
11、/D 转 换 器 在 温 度 范 围 内 10 s 转 换 时 间 11 个 模 拟 输 入 通 道 3 路 内 置 自 测 试 方 式 固 有 的 采 样 与 保 持 线 性 误 差 1LSB Max 片 内 系 统 时 钟 转 换 结 束 ( End-of-Conversion , EOC ) 输 出 单 极 性 或 双 极 性 输 出 ( 有 符 号 的 双 极 性 , 相 对 于 所 加基 准 电 压 的 1/2 ) 可 编 程 的 MSB 或 LSB 前 导 可 编 程 的 输 出 数 据 长 度 采 用 CMOS 技 术 可 提 供 应 用 笔 记 *2.2 功 能 框 图2.3
12、详 细 说 明 一 开 始 , 片 选 ( CS ) 为 高 , I/O CLOCK 和 DATA INPUT 被 禁 止 以 及 DATA OUT 为 高 阻 抗 状 态 。 CS 变 低 开 始 转换 过 程 , I/O CLOCK 和 DATA INPUT 使 能 , 并 使 DATA OUT 端脱 离 高 阻 抗 状 态 。 输 入 数 据 是 一 个 包 括 一 个 4 位 模 拟 通 道 地 址 ( D7 D4 ) 、 一 个 2 位 数 据 长 度 选 择 ( D3 D2 ) 、 一 个 输 出 MSB 或 LSB 在 前 的 位 ( D1 ) 以 及 一 个 单 极 性 或 双
13、 极性 输 出 选 择 位 ( D0 ) 的 8 位 数 据 流 , 这 个 数 据 流 是 从 DATA INPUT 端 加 入 的 。 输 入 /输 出 时 钟 系 列 是 加 在 I/O CLOCK 端 ,以 传 送 这 个 数 据 到 输 入 数 据 寄 存 器 。 在 这 个 传 送 的 同 时 , 输 入 /输 出 时 钟 系 列 也 将 前 一 次 转 换 的 结 果 从 输 出 数 据 寄 存 器 移 到DATA OUT 端 。 I/O CLOCK 接 收 输 入 系 列 的 8 、 12 或 16 个时 钟 长 度 取 决 于 输 入 数 据 寄 存 器 中 的 数 据 长
14、度 选 择 位 。 模 拟 输 入 的 采 样 开 始 于 输 入 I/O CLOCK 的 第 4 个 下 降 沿 而 保 持 则 在 I/O CLOCK 的 最 后 一 个 下 降 沿 之 后 。 I/O CLOCK 的 最 后 一 个 下 降 沿也 使 EOC 变 低 并 开 始 转 换 。2.3.1 转 换 工 作 转 换 器 的 工 作 分 成 连 续 的 二 个 不 同 的 周 期 : ( 1 ) I/O 周 期 , ( 2 ) 实 际 转 换 周 期 。 I/O 周 期 由 外 部 提 供 的 I/O CLOCK 定 义 , 延 续 8 、 12 或 16 个 时 钟 周 期 ,
15、这 取 决 于 选 定的 输 出 数 据 的 长 度 。 2.3.2 I/O 周 期 在 I/O 周 期 中 , 同 时 发 生 二 种 操 作 : a. 一 个 包 括 地 址 和 控 制 信 息 的 8 位 数 据 流 被 送 到 DATA INPUT 。 这 个 数 据 在 前 8 个 输 入 /输 出 时 钟 的 上 升 沿 被 移 入 器 件 。 当 12 或 16 个 I/O 时 钟 传 送 时 , 在 前 8 个 时 钟 之 后 DATA INPUT 便 无 效 。 b. 在 DATA OUT 端 串 行 地 提 供 8 、 12 或 16 位 长 度的 数 据 输 出 。 当
16、CS 保 持 为 低 时 , 第 一 个 输 出 数 据 位 发 生 在EOC 的 上 升 沿 。 若 转 换 是 由 CS 控 制 , 则 第 一 个 输 出 数 据 位 发 生在 CS 的 下 降 沿 。 这 个 数 据 是 前 一 次 转 换 的 结 果 , 在 第 一 个 输 出数 据 位 之 后 的 每 个 后 续 位 由 后 续 的 I/O 时 钟 每 个 下 降 沿 输 出 。 2.3.3. 转 换 周 期 转 换 周 期 对 用 户 是 透 明 的 , 它 是 由 I/O 时 钟 同 步 的 内 部 时钟 来 控 制 的 。 当 转 换 时 , 器 件 对 模 拟 输 入 电
17、压 完 成 逐 次 逼 近 式 的转 换 。 在 转 换 周 期 开 始 时 EOC 输 出 端 变 低 而 当 转 换 完 成 时 变 高 ,并 且 输 出 数 据 寄 存 器 被 锁 存 。 只 有 在 I/O 周 期 完 成 后 才 开 始 一 次转 换 周 期 , 这 样 可 减 小 外 部 的 数 字 噪 声 对 转 换 精 度 的 影 响 。2.3.4 上 电 和 初 始 化 在 上 电 后 , CS 必 须 从 高 变 到 低 以 开 始 一 次 I/O 周 期 。EOC 开 始 为 高 , 输 入 数 据 寄 存 器 被 置 为 全 零 。 输 出 数 据 寄 存 器 的内 容
18、 是 随 机 的 , 并 且 第 一 次 转 换 的 结 果 将 被 忽 略 。 为 了 对 器 件 初始 化 , CS 被 转 为 高 再 回 到 低 以 开 始 下 一 次 I/O 周 期 。 在 器 件 从掉 电 状 态 返 回 后 的 第 一 次 转 换 , 由 于 器 件 的 内 部 调 整 , 读 数 可 能不 准 确 。 2.4 数 据 输 入 数 据 输 入 端 在 内 部 被 连 接 到 一 个 8 位 的 串 行 输 入 的 地 址 和控 制 寄 存 器 。 该 寄 存 器 规 定 了 转 换 器 的 工 作 和 输 出 数 据 的 长 度 。主 机 提 供 的 数 据 字
19、 是 以 MSB 为 前 导 的 。 每 个 数 据 位 都 是 在 I/O CLOCK 序 列 的 上 升 沿 被 输 入 的 ( 见 表 1 中 数 据 “输 入 寄 存 器格 式 ”) 。2.5 时序图第三章 软件设计3.1 SPI 协议编程按照 SPI协议规范,编写程序如下:void ADpian(uchar x)uchar i;shugao=0;shudi=0;cs=0;delay1ms(20);for(i=0;i0)Serial_send(0x20);Serial_send(c+0x30);Serial_send(b+0x30);Serial_send(a+0x30);Serial_send(0x20);count+;if(count%12=0)Serial_send(0x0a);Serial_send(0x0d);delay(5);/count=0;delay(5);第四章 仿真情况4.1 整体电路图4.2 数据采集结果显示4.3 数据存储结果显示44 虚拟终端结果显示4.5 局部电路图第五章 小结SPI接口应用非常广泛,协议简单实用性强,支持高速传输,采用单片机编程实现可以加深对协议的理解,对其它串行协议如I2C、MICROWIRE 等可以触类旁通。本实验还提高了单片机系统设计编程能力和对相关软件的使用。使自己的电子技术应用水平有了很大提高。