ARM汇编语言程序设计基础第6章嵌入式系统总线接口

上传人:san****019 文档编号:23730132 上传时间:2021-06-10 格式:PPT 页数:180 大小:5.81MB
返回 下载 相关 举报
ARM汇编语言程序设计基础第6章嵌入式系统总线接口_第1页
第1页 / 共180页
ARM汇编语言程序设计基础第6章嵌入式系统总线接口_第2页
第2页 / 共180页
ARM汇编语言程序设计基础第6章嵌入式系统总线接口_第3页
第3页 / 共180页
点击查看更多>>
资源描述
第 6章 嵌入式系统总线接口 6.1 串行接口 6.1.1 串行接口基本原理与结构 1串行通信概述 常用的数据通信方式有并行通信和串行通信两种。当两台数字设 备之间传输距离较远时,数据往往以串行方式传输。串行通信的 数据是一位一位地进行传输的,在传输中每一位数据都占据一个 固定的时间长度。与并行通信相比,如果 n位并行接口传送 n位数 据需时间 T,则串行传送的时间最少为 nT。串行通信具有传输线 少、成本低等优点,特别适合远距离传送。 串行数据通信模式 串行数据通信模式有单工通信、半双工通信和全双工通信 3种基 本的通信模式。 单工通信:数据仅能从设备 A到设备 B进行单一方向的传输。 半双工通信:数据可以从设备 A到设备 B进行传输,也可以从 设备 B到设备 A进行传输,但不能在同一时刻进行双向传输。 全双工通信:数据可以在同一时刻从设备 A传输到设备 B,或 从设备 B传输到设备 A,即可以同时双向传输。 串行通信方式 串行通信在信息格式的约定上可以分为同步通信和异步通信两种 方式。 a. 异步通信方式 异步通信时数据是一帧一帧传送的,每帧数据包含有起始位 ( ” 0)、数据位、奇偶校验位和停止位( ” 1) ,每帧数据的 传送靠起始位来同步。一帧数据的各位代码间的时间间隔是固定 的,而相邻两帧的数据其时间间隔是不固定的。在异步通信的数 据传送中,传输线上允许空字符。 异步通信对字符的格式、波特率、校验位有确定的要求。 字符的格式 每个字符传送时,必须前面加一起始位,后面加上 1、 1.5或 2位停 止位。例如 ASCII码传送时,一帧数据的组成是:前面 1个起始位, 接着 7位 ASCII编码,再接着一位奇偶校验位,最后一位停止位, 共 10位。 波特率 传送数据位的速率称为波特率,用位秒( bit/s)来表示,称之 为波特。例如,数据传送的速率为 120字符秒,每帧包括 10个 数据位,则传送波特率为: 10 120=1200b/s=1200波特 每一位的传送时间是波特的倒数,如 1/1200=0.833ms。异步通 信的波特率的数值通常为: 150、 300、 600、 1200、 2400、 4800、 9600、 14400、 28800等,数值成倍数变化。 校验位 在一个有 8位的字节( byte)中,其中必有奇数个或偶数个的 “ 1 状态位。对于偶校验就是要使字符加上校验位有偶数个 “ 1;奇 校验就是要使字符加上校验位有奇数个 “ 1。例如数据 “ 00010011,共有奇数个 “ 1,所以当接收器要接收偶数个 “ 1 时(即偶校验时),则校验位就置为 “ 1,反之,接收器要接收 奇数个 “ 1时(即奇校验时),则校验位就置为 “ 0。 一般校验位的产生和检查是由串行通信控制器内部自动产生,除 了加上校验位以外,通信控制器还自动加上停止位,用来指明欲 传送字符的结束。停止位通常取 1、 1.5或 2个位。对接收器而言, 若未能检测到停止位则意味着传送过程发生了错误。 在异步通信方式中,在发送的数据中含有起始位和停止位这两个 与实际需要传送的数据毫无相关的位。如果在传送 1个 8位的字符 时,其校验位、起始位和停止位都为 1个位,则相当于要传送 11 个位信号,传送效率只有约 80%。 ( 2)同步通信方式 为了提高通信效率可以采用同步通信方式。同步传输采用字符块 的方式,减少每一个字符的控制和错误检测数据位,因而可以具 有较高的传输速率。 与异步方式不同的是,同步通信方式不仅在字符的本身之间是同 步的,而且在字符与字符之间的时序仍然是同步的,即同步方式 是将许多的字符聚集成一字符块后,在每块信息(常常称之为信 息帧)之前要加上 1 2个同步字符,字符块之后再加入适当的错 误检测数据才传送出去。在同步通信时必须连续传输,不允许有 间隙,在传输线上没有字符传输时,要发送专用的 ” 空闲 ” 字符 或同步字符。 在同步方式中产生一种所谓 “ 冗余 ” 字符,防止错误传送。假设 欲传送的数据位当作一被除数,而发送器本身产生一固定的除数, 将前者除以后者所得的余数即为该 “ 冗余 ” 字符。当数据位和 “ 冗余 ” 字符位一起被传送到接收器时,接收器产生和发送器相 同的除数,如此即可检查出数据在传送过程中是否发生了错误。 统计数据表明采用 ” 冗余 ” 字符方法错误防止率可达 99%以上。 2 RS-232C串行接口 RS-232C是美国电子工业协会 EIA制定的一种串行通信接口标准。 ( 1) RS-232C接口规格 EIA所制定的传送电气规格如表 6.1.1所示。 RS-232C通常以 12V的电压来 驱动信号线, TTL标准与 RS-232C标准之间的电平转换电路通常采用集成电 路芯片实现,如 MAX232等。 表 6.1.1 EIA的所定的传送电气规格 状态 L(低电平) H(高电平) 电压范围 -25V -3V +3 V +25V 逻辑 1 0 名称 SPACE MARK ( 2) RS-232C接口信号 EIA制定的 RS-232C接口与外界的相连采用 25芯( DB-25)和 9芯 ( DB-9) D型插接件,实际应用中,并不是每只引脚信号都必须 用到, 25芯和 9芯 D型插接件引脚的定义,与信号之间的对应关系 如图 6.1.1所示。 RS-232C DB-9各引脚功能如下: CD:载波检测。主要用于 Modem通知计算机其处于在线状态, 即 Modem检测到拨号音。 RXD:接收数据线。用于接收外部设备送来的数据。 TXD:发送数据线。用于将计算机的数据发送给外部设备。 DTR:数据终端就绪。当此引脚高电平时,通知 Modem可以 进行数据传输,计算机已经准备好。 SG:信号地。 DSR:数据设备就绪。此引脚为高电平时,通知计算机 Modem已经准备好,可以进行数据通信。 RTS请求发送。此引脚由计算机来控制,用以通知 Modem马 上传送数据至计算机;否则, Modem将收到的数据暂时放人缓冲 区中。 CTS清除发送。此引脚由 Modem控制,用以通知计算机将要 传送的数据送至 Mo-dem。 RI:振铃提示。 Modem通知计算机有呼叫进来,是否接听呼 叫由计算机决定。 ( a) DB-25 ( b) DB-9 图 6.1.1 25芯和 9芯 D型插接件引脚的定义和信号之间的对应关系 ( 3) RS-232C的基本连接方式 计算机利用 RS-232C接口进行串口通信,有简单连接和完全连接 两种连接方式。简单连接又称三线连接,即只连接发送数据线、 接收数据线和信号地,如图 6.1.2所示。如果应用中还需要使用 RS-232C的控制信号,则采用完全连接方式,如图 6.1.3所示。在 波特率不高于 9 600 bps的情况下进行串口通信时,通信线路的长 度通常要求小于 15米,否则可能出现数据丢失现象。 图 6.1.2 简单连接形式 图 6.1.3 完全连接形式 3 RS-422串行通信接口 RS-422标准是 RS-232的改进型, RS-422标准全称是 “ 平衡电压数 字接口电路的电气特性 ” 。允许在相同传输线上连接多个接收节 点,最多可接 10个节点,即一个主设备( Master),其余 10个为 从设备( Salve),从设备之间不能通信。 RS-422支持一点对多点 的双向通信。 RS-422四线接口由于采用单独的发送和接收通道, 因此不必控制数据方向,各装置之间任何必需的信号交换均可以 按软件方式( XON/XOFF握手)或硬件方式(一对单独的双绞线) 实现。 RS-422的最大传输距离为 4000英尺(约 1219m),最大传输速率 为 10Mb/s。传输速率与平衡双绞线的长度有关,只有在很短的距 离下才能获得最高传输速率。在最大传输距离时,传输速率为 100Kb/s。一般 100m长的双绞线上所能获得的最大传输速率仅为 1 Mb/s。 RS-422需要在传输电缆的最远端连接一个电阻,要求电阻阻值约 等于传输电缆的特性阻抗。在短距离( 300m以下)传输时可以不 连接电阻。 4 RS-485串行总线接口 在 RS-422的基础上,为扩展应用范围, EIA制定了 RS-485标准, 增加了多点、双向通信能力。在通信距离为几十米至上千米时, 通常采用 RS-485收发器。 RS-485收发器采用平衡发送和差分接收, 即在发送端,驱动器将 TTL电平信号转换成差分信号输出;在接 收端,接收器将差分信号变成 TTL电平,因此具有抑制共模干扰 的能力。接收器能够检测低达 200mV的电压,具有高的灵敏度, 故数据传输距离可达千米以上。 RS-485可以采用二线与四线方式,二线制可实现真正的多点双向 通信。而采用四线连接时,与 RS-422一样只能实现点对多的通信, 即只能有一个主设备,其余为从设备。 RS-485可以连接多达 32个 设备。 RS-485的共模输出电压在 -7 +12V之间,接收器最小输入阻抗为 12k。 RS-485满足所有 RS-422的规范,所以 RS-485的驱动器可 以在 RS-422网络中应用 RS-485的最大传输速率为 10Mb/s。在最大传输距离时,传输速率 为 100Kb/s。 RS-485需要两个终端电阻,接在传输总线的两端,要求电阻阻值 约等于传输电缆的特性阻抗。在短距离传输(在 300m以下)时可 不需终端电阻。 6.1.2 S3C2410A的 UART 1 UART简介 UART( Universal Asynchronous Receiver and Transmitter,通用 异步收发器)主要由数据线接口、控制逻辑、配置寄存器、波特 率发生器、发送部分和接收部分组成,采用异步串行通信方式, 采用 RS-232C 9芯接插件( DB-9)连接,是广泛使用的串行数据 传输方式, UART以字符为单位进行数据传输,每个字符的传输格式如图 6.1.4所示,包括线路空闲状态(高电平)、起始位(低电平)、 5 8位数据位、校验位(可选)和停止位(位数可以是 1、 1.5或 2位)。这种格式通过起始位和停止位来实现字符的同步。 UART 内部一般具有配置寄存器,通过该寄存器可以配置数据位数 ( 5 8位)、是否有校验位和校验的类型以及停止位的位数 ( 1位、 1.5位或 2位)等。 图 6.1.4 UART的字符传输格式 2 S3C2410A的 UART结构 S3C2410A的 UART提供 3个独立的异步串行 I/O口( SIO),它们都可以 运行于中断模式或 DMA模式。 UART可以产生中断请求或 DMA请求,以 便在 CPU和 UART之间传输数据。在使用系统时钟的情况下, UART可以 支持最高 230.4Kbps的传输速率。如果外部设备通过 UEXTCLK为 UART 提供时钟,那么 UART的传输速率可以更高。每个 UART通道包含两个 用于接收和发送数据的 16字节的 FIFO缓冲寄存器。 如图 6.1.5所示, S3C2410A的 UART由波特率发生器、发送器、接 收器以及控制单元组成。波特率发生器的时钟可以由 PCLK或 UEXTCLK提供。发送器和接收器包含 16字节的 FIFO缓冲寄存器和 数据移位器。发送时,数据被写入 FIFO,然后拷贝到发送移位器 中,接下来数据通过发送数据引脚( TxDn)被发送。接收时,接 收到的数据从接收数据引脚( RxDn)移入,然后从移位器拷贝到 FIFO中。 图 6.1.5 S3C2410A的 UART方框图(具有 FIFO) 3 S3C2410A UART的操作 S3C2410A的 UART的操作包含有数据发送、数据接收、中断产生、 波特率发生、回送模式、红外模式和自动流控制等。 ( 1)数据发送( Data Transmission) 发送的数据帧是可编程的。它包括 1个起始位、 5 8个数据位、 1 个可选的奇偶校验位和 1 2个停止位,具体设置由行控制寄存器 ( ULCONn)确定。发送器还可以产生暂停状态,在一帧发送期 间连续输出 “ 0。在当前发送的字完全发送完成之后发出暂停信 号。在暂停信号发出后,继续发送数据到 Tx FIFO(发送保持寄 存器在非 FIFO模式)。 ( 2)数据接收( Data Reception) 与数据发送类似,接收的数据帧也是可编程的。它包括 1个起始 位, 5 8个数据位、 1个可选的奇偶校验位和 1 2个停止位,具 体设置由行控制寄存器( ULCONn)确定。接收器可以检测溢出 错误和帧错误。溢出错误指新数据在旧数据还没有被读出之前就 将其覆盖了。帧错误指接收的数据没有有效的停止位。 当在 3个字时间段没有接收任何数据和在 FIFO模式 RxFIFO不空时, 产生接收暂停状态。 ( 3)自动流控制( Auro Flow Control, AFC) 如图 6.1.6所示, S3C2410A的 UART0和 UART1使用 nRTS和 nCTS信 号支持自动流控制。在这种情况下,它可以连接到外部的 UART。 如果用户希望将 UART连接到 Modem,则需要通过软件来禁止 UMCONn寄存器中的自动流控制位并控制 nRTS信号。 图 6.1.6 UART AFC接口 在 AFC状态, nRTS根据接收器的状态和 nCTS信号控制发送器的操 作。只有当 nCTS信号是有效时(在 AFC状态, nCTS表示其他 UART的 FIFO已经准备好接收数据), UART的发送器才发送在 FIFO中的数据。在 UART接收数据之前,当其接收 FIFO具有多余 2 字节的空闲空间时, nRTS有效;如果其接收 FIFO的空闲空间少于 1字节,则 nRTS无效(在 AFC状态, nRTS指示它自己的接收 FIFO 已经准备好接收数据)。 ( 4) RS-232接口( RS-232C interface) 如果用户希望将 UART连接到 Modem接口,则需要使用 nRTS、 nCTS、 nDSR、 nDTR、 DCD和 nRI信号。在这个状态,用户可以 使用通用的 I/O接口,通过软件来控制这些信号,因为 AFC不支持 RS-232C接口。 ( 5)中断 DMA请求产生( Interrupt/DMA Request Generation) S3C2410A的每个 UART有 5个状态( Tx/Rx/Error)信号:溢出错 误、帧错误、接收缓冲数据准备好、发送缓冲空和发送移位器空。 这些状态通过相关的状态寄存器( UTRSTATn/UERSTATn)指示。 溢出错误和帧错误指示接收数据时发生的错误状态。如果控制寄 存器 UCONn中的接收错误状态中断使能位置 1,那么溢出错误和 帧错误的任何一个都可以产生接收错误状态中断请求。当检测到 接收错误状态中断请求时,可以通过读 UERSTSTn的值来确定引 起请求的信号。 如果控制寄存器( UCONn)中的接收模式置为 “ 1(中断请求模 式或查询模式),那么在 FIFO模式,当接收器将接收移位器中的 数据传送到接收 FIFO寄存器中,并且接收的数据量达到 RxFIFO的 触发水平时,则产生 Rx中断。在非 FIFO模式,如果采用中断请求 和查询模式,当把接收移位器中的数据传送到接收保持寄存器中 时,将产生 Rx中断。 如果控制寄存器( UCONn)中的发送模式置为 1(中断请求模式 或查询模式),那么在 FIFO模式,当发送器将发送 FIFO寄存器中 的数据传送到发送移位器中,并且发送 FIFO中剩余的发送数据量 达到 TxFIFO的触发水平时,则产生 Tx中断。在非 FIFO模式,如果 采用中断请求和查询模式,当把发送保持寄存器中的数据传送到 发送移位器时,将产生 Tx中断。 如果在控制寄存器中的接收模式和发送模式选择了 DMAn请求模 式,那么在上面提到的情况下将产生 DMAn请求,而不是 Rx或 Tx 中断。 ( 6)波特率的产生( Baud-Rate Generation) 每个 UART的波特率发生器为发送器和接收器提供连续的时钟。波 特率发生器的时钟源可以选择使用 S3C2410A的内部系统时钟或 UEXTCLK。换句话说,通过设置 UCONn的时钟选择位可以选择不 同的分频值。波特率时钟可以通过对源时钟( PCLK或者 UEXTCLK) 16分频和对在 UART波特率系数寄存器( UBRDIVn)中的 16位分 频数设置得到。 ( 7)回送模式( Loopback Mode) S3C2410A DART提供一种测试模式,即回送模式,用于发现通信 连接中的孤立错误。这种模式在结构上使 UART的 RXD与 TXD连接。 因此,在这个模式,发送的数据通过 RXD被接收器接收。这一特 性使得处理器能够验证每个 SIO通道内部发送和接收数据的正确 性。该模式通过设置 UART控制寄存器( UCONn)的回送位来进 行选择。 ( 8)红外模式( Infra-Red ( IR) Mode) S3C2410A的 UART模块支持红外发送和接收,该模式可以通过设 置 UART行控制寄存器( ULCONn)中的红外模式位来选择。 4 S3C2410A UART专用寄存器的配置 要使用 S3C2410A的 UART进行串口通信,需要在程序中配置以下 与 UART相关的专用寄存器。 ( 1) UART行控制寄存器( ULCONn) UART行控制寄存器是 UART通道 0 UART通道 2行控制寄存器,包 含有 ULCON0、 ULCON1和 ULCON2,为可读写寄存器,地址为 0 x5000 0000、 0 x5000 4000和 0 x5000 8000,其位功能如表 6.1.2 所列,复位值为 0 x00,推荐使用值为 0 x3。 表 6.1.2 UART行控制寄存器的位功能 ULCONn的位功能 位 设置 保留 7 保留位 红外正常模式选择 6 0:正常模式; 1:红外模式 奇偶校验模式选择 5:3 0 xx:无奇偶校验; 100:奇校验 101:偶校验 110:强制奇偶校验校验 1; 111: 强制奇偶校验校验 0 停止位选择 2 0:每帧 1个停止位; 1:每帧 2个停 止位 发送或者接收字长设 置 1:0 00: 5位; 01: 6位; 10: 7位; 11: 8位 ( 2) UART控制寄存器( UCONn) UART控制寄存器( UCONn)是 UART通道 0 UART通道 2控制寄 存器,包含有 UCON0、 UCON1和 UCON2,为可读写寄存器, 地址为 0 x5000 0004、 0 x5000 4004和 0 x5000 8004,其位功能如 表 6.1.3所列,复位值为 0 x00,推荐使用值为 0 x245。 表 6.1.3 UART控制寄存器( UCONn)的位功能 UCONn的位功能 位 设置 波特率时钟选择 10 0:使用 PCLK , UBRDIVn = ( int)( PCLK / ( bps x 16) ) -1; 1:使用 UEXTCLK( GPH8), UBRDIVn=( int )( UEXTCLK/( bps 16) -1 发送中断请求类 型选择 9 0:脉冲; 1:电平 接收中断请求类 型选择 8 0:脉冲; 1:电平 Rx超时中断使能 控制 7 0:禁止; 1:使能 接收错误状态中 断使能控制 6 0:禁止; 1:使能 回送模式选择 5 0:正常模式; 1:回送模式 保留 4 保留位 发送模式选择 3:2 确定将 Tx数据写入 UART发送缓冲寄存器的模式。 00:禁止; 01:中断请求或查询模式; 10: DMA0请求(仅 UART0), DMA3请求(仅 UART2); 11: DMA1请求(仅 UART1) 接收模式选择 1:0 确定从 UART接收缓冲寄存器读数据的模式。 00:禁止; 01:中断请求或查询模式; 10: DMA0请求(仅 UART0), DMA3请求(仅 UART2); 11: DMA1请求(仅 UART1) ( 3) UART FIFO控制寄存器( UFCONn) UART FIFO控制寄存器( UFCONn)是 UART通道 0 UART通道 2 的 FIFO控制寄存器,包含有 UFCON0、 UFCON1和 UFCON2,为可 读写寄存器,地址为 0 x5000 0008、 0 x5000 4008和 0 x5000 8008,其位功能如表 6.1.4所列,复位值为 0 x0,推荐使用值为 0 x0。 表 6.1.4 UART FIFO控制寄存器( UFCONn)的位功能 UFCONn的位功 能 位 描述 发送 FIFO的触发 条件选择 7:6 00:空; 01: 4字节; 10: 8字节; 11: 12字 节 接收 FIFO的触发 条件选择 5:4 00: 4字节; 01: 8字节; 10: 12字节; 11: 16字节 保留 3 保留位 Tx FIFO复位位 2 该位在 FIFO复位后自动清除。 0:正常; 1: Tx FIFO复位 Rx FIFO复位位 1 该位在 FIFO复位后自动清除 0:正常; 1: Rx FIFO复位 FIFO使能控制 0 0:禁止; 1:使能 ( 4) UART Modem控制寄存器( UMCONn) UART Modem控制寄存器( UMCONn)是 UART通道 0和 UART通 道 1 调制解调器控制寄存器,包含有 UMCON0和 UMCON1,为可 读写寄存器,地址为 0 x5000 000C、 0 x5000 400C和 0 x5000 800C,其中 0 x5000 800C为保留寄存器,其位功能如表 6.1.5所列, 复位值为 0 x0,推荐使用值为 0 x0。 表 6.1.5 UART Modem控制寄存器( UMCONn)的位功能 UFCONn的位功 能 位 描述 发送 FIFO的触发 条件选择 7:6 00:空; 01: 4字节; 10: 8字节; 11: 12字 节 接收 FIFO的触发 条件选择 5:4 00: 4字节; 01: 8字节; 10: 12字节; 11: 16字节 保留 3 保留位 Tx FIFO复位位 2 该位在 FIFO复位后自动清除。 0:正常; 1: Tx FIFO复位 Rx FIFO复位位 1 该位在 FIFO复位后自动清除 0:正常; 1: Rx FIFO复位 FIFO使能控制 0 0:禁止; 1:使能 ( 5) UART的状态寄存器 与 UART相关的状态寄存器包含有 UART TX/RX状态寄存器 ( UTRSTATn)、 UART错误状态寄存器( UERSTATn)、 UART FIFO状态寄存器( UFSTATn)和 UART 调制解调器状态寄存器 ( UMSTATn),这些状态寄存器中各功能位反映 UART的工作状 态。详细内容见 “ S3C2410A200MHz if ( pclk= =0) pclk PCLK; rUFCON0=0 x0; /UARTO FIFO控制寄存器, FIFO禁止 rUFCON1=0 x0; /UART1 FIFO控制寄存器, FIFO禁止 rUFCON2=0 x0; /UART2 FIFO控制寄存器, FIFO禁止 rUMCON0=0 x0; /UARTO MODEM控制寄存器, AFC禁止 rUMCONI=0 x0; /UART1 MODEM控制寄存器, AFC禁止 /UART0 rULCON0 0 x3 ; /行控制寄存器:正常模式,无奇偶校验, 1位停止位, 8位数据位 rUCON0 0 x245 ; /控制寄存器 rUBRDIV0 =( int)( pclk/16 /baud+0.5) -1) ; /波特率因子寄存器 /UART1 rULCON1=0 x3; rUCON1=0 x245; rUBRDIV1=( int)( pclk/16 /baud) -1) ; /UART2 rULCON2=0 x3; rUCON2 0 x245; rUBRDIV2=( int)( pclk/16 /baud) -1) ; for( i 0; i include INCconfig h void Main( void) char data; Target_Init(); while( 1) data=Uart GetKey(); /接收字符 if( data! 0 x0) Uart_Select( 0); /从 UART0发送出去 Uart_Printf( ” key cn, data); Uart_elect ( 1); /从 UART1发送出去 Uart_Printf( ” key c n, data); Uart_Select( 0); 6.2 I2C接口 6.2.1 I2C接口基本原理与结构 I2C BUS( Inter Integrated Circuit BUS,内部集成电路总线)是 由 Philips公司推出的二线制串行扩展总线,用于连接微控制器及 其外围设备。 I2C总线是具备总线仲裁和高低速设备同步等功能的 高性能多主机总线,直接用导线连接设备,通信时无需片选信号。 如图 6.2.1所示,在 I2C总线上,只需要两条线 串行数据 SDA线和 串行时钟 SCL线,它们用于总线上器件之间的信息传递。 SDA和 SCL都是双向的。每个器件都有一个唯一的地址以供识别,而且 各器件都可以作为一个发送器或接收器(由器件的功能决定)。 I2C总线有如下操作模式:主发送模式、主接收模式、从发送模式、 从接收模式。下面介绍其通用传输过程、信号及数据格式。 ( 1) I2C总线的启动和停止信号 当 I2C接口处于从模式时,要想数据传输,必须检测 SDA线上的启 动信号,启动信号由主器件产生。如图 6.2.2所示,在 SCL信号为 高时, SDA产生一个由高变低的电平变化,即产生一个启动信号。 当 I2C总线上产生了启动信号后,那么这条总线就被发出启动信号 的主器件占用了,变成 “ 忙 ” 状态;如图 6.2.2所示,在 SCL信号 为高时, SDA产生一个由低变高的电平变化,产生停止信号。停 止信号也由主器件产生,作用是停止与某个从器件之间的数据传 输。当 I2C总线上产生了一个停止信号后,那么在几个时钟周期之 后总线就被释放,变成 “ 闲 ” 状态。 图 6.2.1 I2C总线接口电路结构 图 6.2.2 I2C总线启动和停止信号的定义 主器件产生一个启动信号后,它还会立即送出一个从地址,用来 通知将与它进行数据通信的从器件。 1个字节的地址包括 7位的地 址信息和 1位的传输方向指示位,如果第 7位为 “ 0,表示马上要 进行一个写操作;如果为 “ 1,表示马上要进行一个读操作。 ( 2)数据传输格式 SDA线上传输的每个字节长度都是 8位,每次传输中字节的数量是 没有限制的。在起始条件后面的第一个字节是地址域,之后每个 传输的字节后面都有一个应答( ACK)位。传输中串行数据的 MSB(字节的高位)首先发送。 ( 3)应答信号 为了完成 1个字节的传输操作,接收器应该在接收完 1个字节之后 发送 ACK位到发送器,告诉发送器,已经收到了这个字节。 ACK 脉冲信号在 SCL线上第 9个时钟处发出(前面 8个时钟完成 1个字节 的数据传输, SCL上的时钟都是由主器件产生的)。当发送器要 接收 ACK脉冲时,应该释放 SDA信号线,即将 SDA置高。接收器在 接收完前面 8位数据后,将 SDA拉低。发送器探测到 SDA为低,就 认为接收器成功接收了前面的 8位数据。 ( 4)总线竞争的仲裁 I2C总线上可以挂接有多个器件,有时会发生两个或多个主器件同时 想占用总线的情况。 I2C总线具有多主控能力,可对发生在 SDA线上 的总线竞争进行仲裁,其仲裁原则是:当多个主器件同时想占用总线 时,如果某个主器件发送高电平,而另一个主器件发送低电平,则发 送电平与此时 SDA总线电平不符的那个器件将自动关闭其输出级。 总线竞争的仲裁是在两个层次上进行的。首先是地址位的比较,如果 主器件寻址同一个从器件,则进入数据位的比较,从而确保了竞争仲 裁的可靠性。由于是利用 I2C总线上的信息进行仲裁,所以不会造成 信息的丢失。 ( 5) I2C总线的数据传输过程 开始:主设备产生启动信号,表明数据传输开始。 地址:主设备发送地址信息,包含 7位的从设备地址和 1位的数据 方向指示位(读或写位,表示数据流的方向)。 数据:根据指示位,数据在主设备和从设备之间进行传输。数据一 般以 8位传输,最重要的位放在前面;具体能传输多少量的数据并没 有限制。接收器产生 1位的 ACK(应答信号)表明收到了每个字节。 传输过程可以被中止和重新开始。 停止:主设备产生停止信号,结束数据传输。 6.2.2 S3C2410A的 I2C接口 S3C2410A提供一个 I2C总线接口,其模块框图如图 6.2.3所示,具 有一个专门的串行数据线和串行时钟线。它有主设备发送模式、 主设备接收模式、从设备发送模式和从设备接收模式 4种操作模 式。 控制 S3C2410AI2C总线操作,需要写数据到 IICCON( I2C总线控制 寄存器)、 IICSTAT( I2C总线控制 /状态寄存器)、 IICDS( I2C总 线 Tx/Rx数据寄存器)和 IICADD( I2C总线地址寄存器)。 图 6.2.3 S3C2410A处理器 I2C串行总线框图 ( 1) IICCON IICCON( I2C总线控制寄存器)为可读写寄存器,地址为 0 x54000000,复位值为 0000 xxxx,其位定义如表 6.2.1所列。 表 6.2.1 IICCON( I2C总线控制寄存器)的位定义 功能 位 描述 初始状 态 ACK使能 7 0:禁止产生 ACK信号; 1:允许产生ACK信号 0 Tx时钟源选择 6 0: IICCLK fPCLK 16; 1: IICCLK f PCLK 512 0 Tx/Rx中断使能 5 0:禁止 Tx/Rx中断; 1:使能 Tx/Rx中断 0 中断标记清除 / 置位 4 写 0:清除中断标志并重新启动写操作; 读 1:中断标志置位 0 确定发送时钟 频率 3: 0 设置 I2C总线发送时钟前置分频器, Tx 时 钟 = IICCLK/( IICCON3:0+1) 未定义 ( 2) IICSTAT( I2C总线控制 /状态寄存器) IICSTAT( I2C总线控制 /状态寄存器)为可读写寄存器,地址 为 0 x54000004,复位值为 00000000,其位定义如表 6.2.2所 列。 表 6.2.2 IICSTAT( I2C总线控制 /状态寄存器)的位定义 功能 位 描述 初始状 态 模式选择 7: 6 IIC总线主从 Tx/Rx模式选择位 00:从接收模式; 01:主接收模式; 10:从发送模式; 11:主发送模式 0 功能 位 描述 初始状 态 忙信号状态 启动 /停止条件 5 读 0: I2C总线不忙;写 0:产生 I2C总线停 止信号 读 1: I2C总线忙;写 1:产生 I2C总线启动 信号 0 串行输出使能 4 0:禁止 Tx/Rx信号传输; 1:使能 Tx/Rx信号传输 0 仲裁状态标志 3 0:总线仲裁成功; 1:总线仲裁不成功 0 从设备状态标 志与地址 2 作为从设备时, 0:当检测到启动或停止信号时清零; 1: 接收到的从地址与在 IICADD中的匹配 0 零地址状态标 志 1 作为从设备时, 0:当检测到启动或停止信号时清零; 1: 接收到从地址为 00000000b 0 接收到的最后 数据位状态标 志 0 0:接收到最后数据位后,接收到 ACK应 答信号; 1:接收到最后数据位后,没有接收到 ACK应答信号 0 ( 3) IICADD( I2C总线地址寄存器) IICADD( I2C总线地址寄存器)为可读写寄存器,地址为 0 x54000008,复位值为 xxxxxxxx,其位定义如表 6.2.3所列。 表 6.2.3 IICADD( I2C总线地址寄存器)的位定义 功能 位 描述 初始状 态 从地址 7: 0 7位从设备的地址,从地址 = 7:1。当在 IICSTAT 中的串行输出使能 0时, IICADD写使能。在 任何时候都可以对 IICADD的值进行读操作 xxxxxxx x 功能 位 描述 初始状态 数 据 移 位 7: 0 I2 C总线发送接收操作的 8bit数据移位寄存器。当 在 IICSTAT中的串行输出使能( = 1)时, IICDS 写使能。任何时候都可以对 IICDS的值进行读操 作 xxxxxxxx 表 5-38 IICDS(移位数据寄存器)的位定义 ( 4) IICDS(移位数据寄存器) IICDS(移位数据寄存器)为可读写寄存器,地址为 0 x5400000C,复位值为 xxxxxxxx,其位定义如表 5-38所列。 6.2.3 S3C2410A的 I2C接口应用实例 S3C2410A I2C总线与使用 I2C总线的 EEPROM芯片 KS24C080C连接 电路( JXARM9-2410教学实验系统)如图 6.2.4所示。 图 6.2.4 S3C2410A I2C总线与 KS24C080C连接电路 KS24C080C作为 I2C从设备,其地址为 0 xA0, S3C2410A通过 I2C总 线对该芯片进行读写操作,程序如下: ( 1) I2C接口初始化 首先必须进行 I2C端口初始化,然后配置 I2C控制寄存器。 I2C接口 初始化操作通过函数 void iic_init()完成。 ( 2) I2C写操作 I2C写操作通过函数 void iic_write_24C08( LJ32 slvAddr, U32 addr, U8 data)完成,其中, slvAddr为从设备地址,在本系统 中为 0 xA0, addr为待写入数据到芯片的地址; data为待写入的数 据。 I2C写操作代码如下所示。 填写 I2C命令 I2C缓冲区数据及大小。 设置从设备地址并启动 I2C操作。在 I2C轮询函数中进行读写 操作,操作完毕, iicdata tx size将被置为 1。 等待写操作完成。 等待从设备应答 。 ( 3) I2C读操作 I2C读操作通过函数 void iic_read_24C08( U32.s1vAddr、 U32 addr、 U8关 data)完成,其中 slvAddr为从设备地址,在本系统中为 0 xA0; addr为待读人数据的地址; data为待读人数据的缓冲区指针。 I2C读 操作代码如下所示。 填写 I2C命令。 等待写操作完成。 启动 I2C操作。在 I2C轮询函数中进行读写操作,操作完毕读 取的数据被送入 iic_buffer中。 ( 4) I2C轮询函数 本实验采用轮询方式进行 I2C发送和接收处理,包括对 POLLACK、 RDDATA、 WRDATA命令的处理。 I2C轮询函数的代码如下: 6.3 USB接口 6.3.1 USB接口基本原理与结构 USB( Universal Serial Bus,通用串行总线)是由 Compaq、 HP、 Intel、 Lucent、 Microsoft、 NEC和 Philips等公司制定的连接计算 机与外围设备的机外总线。 1 USB总线的主要性能特点 ( 1)热即插即用 USB提供机箱外的热即插即用功能,连接外设不必再打开机箱, 也不必关闭主机电源, USB可智能地识别 USB链上外围设备的动 态插入或拆除,具有自动配置和重新配置外设的能力,连接设备 方便,使用简单。 ( 2)可连接多个外部设备 每个 USB系统中有个主机, USB总线采用 “ 级联 ” 方式可连接多 个外部设备。每个 USB设备用一个 USB插头连接到上一个 USB设备 的 USB插座上,而其本身又提供一或多个 USB插座供下一个或多 个 USB设备连接使用。这种多重连接是通过集线器( Hub)来实 现的,整个 USB网络中最多可连接 127个设备,支持多个设备同时 操作。 ( 3)可同时支持不同同步和速率的设备 USB可同时支持同步传输和异步传输两种传输方式,可同时支持 不同速率的设备,速率最高可达几百 Mb/s。支持主机与设备之间 的多数据流和多消息流传输,且支持同步和异步传输类型。 ( 4)较强的纠错能力 USB系统可实时地管理设备插拔。在 USB协议中包含了传输错误 管理、错误恢复等功能,同时根据不同的传输类型来处理传输错 误。 ( 5)低成本的电缆和连接器 USB采用统一的 4引脚插头和一根四芯的电缆传送信号和电源,电 缆长度可长达 5m。 ( 6)总线供电 USB总线可为连接在其上的设备提供 5V电压 /100mA电流的供电, 最大可提供 500mA的电流。 USB设备也可采用自供电方式。 2 USB系统结构 一个 USB系统可以由 USB主机、 USB设备和 USB互连 3部分来描述。 ( 1) USB设备 USB设备分为 Hub(集线器)和 Function(功能)两大类。 Hub提 供到 USB的附加连接点, Function为主机系统提供附加的性能。 实际上, Function就是可发送和接收 USB数据的、可实现某种功 能的 USB设备。 USB设备应具有标准的 USB接口。 ( 2) USB主机 在任何一个 USB系统中只有一个主机,到主计算机系统的 USB接 口被称作主控制器。主控制器可采用硬件、固件或软件相结合的 方式来实现,与 Hub集成在主机系统内,向上与主总线(如 PCI总 线)相连,向下可提供一或多个连接点。 ( 3) USB互连 USB互连指的是 USB设备与主机的连接和通信方式,它包括总线 拓扑结构、内层关系、数据流模型和 USB调度表。 USB总线用来连接各 USB设备和 USB主机。 USB在物理上连接成一 个层叠的星形拓扑结构, Hub是每个星的中心,每根线段表示一 个点到点( Point-to-Point)的连接,可以是主机与一个 Hub或功 能之间的连接,也可以是一个 Hub与另一个 Hub或功能之间的连 接。 USB的拓扑结构最多只能有 7层(包括根层)。在主机和任一设备 之间的通信路径中最多支持 5个非根 Hub复合设备( Compound Device)要占据两层,不能把它连到第 7层,第 7层只能连接 Function设备。 3物理接口 USB总线的电缆有一对标准尺寸的双绞信号线和一对标准尺寸的 电源线,共 4根导线。 USB总线支持 480Mb/s(高速)、 12Mb/s(全速)、 1.5Mb/s(低 速) 3种的数据传输速率。 USB2.0支持在主控制器与 Hub之间用高速、全速和低速数据传输, Hub与设备之间以全速或低速传输数据。 4电源 USB的电源规范包括电源分配和电源管理两个方面。 ( 1)电源分配 电源分配用来处理 USB设备如何使用主机通过 USB总线提供的电 源。主机可以为直接连接到它的 USB设备提供电源, Hub也对它 所连接的 USB设备提供电源。每根 USB电缆提供的电源功率是有 限的。完全依赖电缆供电的 USB设备称作总线供电设备( Bus- Powered Device)。 USB设备也可自带电源。有后备( Alternate) 电源的设备称作自我供电设备( Self-Powered Device)。 ( 2)电源管理 USB主机有一个独立于 USB的电源管理系统。 USB系统软件与主机 电源管理系统之间交互作用,共同处理诸如挂起或恢复等系统电 源事件。 5总线协议 USB是一种查询( Polling)总线,由主控制器启动所有的数据传 输。 USB上所挂连的外设通过由主机调度的( Host-Scheduled)、 基于令牌的( Token-Based)协议来共享 USB带宽。 大部分总线事务涉及 3个包的传输。当主控制器按计划地发出一 个描述事务类型和方向、 USB设备地址和端点号的 USB包时,就 开始发起一个事务,这个包称作 “ 令牌包 ” ( Token Packet), 它指示总线上要执行什么事务,欲寻址的 USB设备及数据传送方 向。然后,事务源发送一个数据包( Data Packet ),或者指示 它没有数据要传输。最后,目标一般还要用一个指示传输是否有 成功的握手包( Handshake Packet)来响应。 主机与设备端点之间的 USB数据传输模型被称作管道。管道有流 和消息两种类型。消息数据具有 USB定义的结构,而流数据没有。 管道与数据带宽、传输服务类型、端点特性(如方向性和缓冲区 大小)有关。当 USB设备被配置时,大多数管道就形成了。一旦 设备加电,总是形成一个被称作默认控制管道的消息管道,以便 提供对设备配置、状态和控制信息的访问。 事务调度表( Transaction Schedule)允许对某些流管道进行流量 控制,在硬件级,通过使用 NAK(否认)握手信号来调节数据传 输率,以防止缓冲区上溢或下溢产生。当被否认时,一旦总线时 间可用会重试该总线事务。流量控制机制允许灵活地进行调度, 以适应异类混合流管道的同时服务,因此,可以在不同的时间间 隔,用不同规模的包为多个流管道服务。 6健壮性( Robustness) USB采取以下措施提高它的健壮性: 使用差分驱动器和接收器以及屏蔽保护,以保证信号的完整 性; 控制域和数据域的 CRC保护校验; 连接和断开检测及系统级资源配置; 协议的自我修复,对丢失包或毁坏包执行超时( Timeouts) 处理; 对流数据进行流量控制,以保证对等步和硬件缓冲器维持正 常的管理; 采用数据管道和控制管道结构,以保证功能之间的独立性; 协议允许用硬件或软件的方法对错误进行处理,硬件错误处 理包括对传输错误的报告和重发。 6.3.2 S3C2410A的 USB控制器 S3C2410A的芯片内部包含有 USB主机控制器和 USB设备控制器。 S3C2410A的 USB主机控制器内部结构如图 6.3.1所示, S3C2410A 的 USB主机控制器支持两通道 USB主机接口,兼容 OHCI 1.0规 范, 兼容 USB1.1规范,具有两个向下数据流通道,支持低速和 高速 USB设备。 USB主机控制器的 OHCI寄存器如表 6.3.1所示。 S3C2410A的 USB设备控制器内部结构方框图如图 6.3.2所示。 S3C2410A的 USB设备控制器具有集成的 USB收发器( 12Mbps), 批量传输的 DMA接口, 5个带 FIFO的端口,其中: EP0为 16字节 (寄存器), EP1 EP4为 64字节 IN/OUT FIFO (双通道异步 RAM),可采用中断或者 DMA方式。支持 DMA接口在大端口上的 接收和发送( EP1、 EP2、 EP3和 EP4)。支持挂起和远程唤醒功 能。 S3C2410A的 USB设备控制器的寄存器如表 6.3.2所示。所有的寄存 器都是通过字节或字方式进行访问,在小端和大端方式下,访问 的偏移地址会有不同。(更多的内容请参考详细的介绍请参考 USERS MANUAL S3C2410A-200MHz 刚接收到字符的 MSB;前一个发送字符的 LSB 图 6.4.4 SPI接口通信波形图 位 功能描述 SPSTAn7:3 保留位 SPSTAn2 数据冲突错误标志位。 0:未检测到冲突; 1:检测到冲突错误。 SPSTAn1 多主设备错误标志位。 0:未检测到该错误; 1:发现多主设备错误 SPSTAn0 数据传输完成标志位。 0:未完成; 1:完成数据传输 表 6.4.2 SPSTAn的位功能 ( 2) SPSTAn SPSTAn( SPI状态寄存器)为可读写寄存器,地址为 0 x59000004/0 x59000024,复位值为 0 x01。 SPSTAn的位功能如表 6.4.2所示。 位 功能描述 SPPINn7:3 保留位 SPPINn2 多主设备错误检测使能 。 0:禁止该功能; 1:允许该功能 SPPIN1 保留位,总为 1 SPPIN0 主设备发送完一个字节后继续驱动还是释放。 0:释放; 1:继续驱动。 表 6.4.3 SPPINn的位功能 ( 3) SPPINn SPPINn( SPI引脚控制寄存器)为可读写寄存器,地址为 0 x59000008/0 x59000028,复位值为 0 x02。 SPPINn的位功能如表 6.4.3 所示。 当一个 SPI系统被允许时, nSS之外的引脚的数据传输方向都由 SPCONn的 MSTR位控制, nSS引脚总是输人。 当 SPI是一个主设备时, nSS引脚用于检测多主设备错误(如果 SPPIN的 ENMUL位被使能),另外还需要一个 GPIO来选择从设备。 如果 SPI被配置为从设备, nSS引脚用来被选择为从设备。 SPIMIS0和 SPIMOS1数据引脚用于发送或者接收串行数据。如果 SPI口被配置为主设备 SPIMIS0就是主设备的数据输入线, SPIMOS1就是主设备的数据输出线, SPICLK是时钟输出线;如果 SPI口被配置为从设备,这些引脚的功能就正好相反。在一个多主 设备的系统中, SPICLK、 SPIMOS1、 SPIMIS0都是一组一组单独 配置的。 ( 4) SPIPREn( SPI波特率预分频寄存器) SPIPREn( SPI波特率预分频寄存器)为可读写寄存器,地址为 0 x5900000C /0 x5900002C,复位值为 0 x00。 SPPREn7:0设置预分频值。可以通过预分频值计算波特率,公 式如下: 波特率 fPCLK/2(预分频值 1) ( 5) SPTDATn SPTDATn( SPI发送数据寄存器)为可读写寄存器,地址为 0 x59000010/0 x59000030,复位值为 0 x00,存放待 SPI口发送的 数据。 ( 6) SPRDATn SPRDATn( SPI接收数据寄存器)为只读寄存器,地址为 0 x59000014/0 x59000034,复位值为 0 x00,存放 SPI口接收到的 数据。 6 SPI接口电路 在 ARM开发板上可以采用独立的 SPI接口( J602),其电路如图 6.4.5所示。也可以通过 PCI插槽引出相应引脚,如通过 PCI接口引 出,见 6.5节 PCI接口部分。 图 6.4.5 SPI接口电路 6.4.3 S3C2410A的 SPI接口编程实例 程序例通过 S3C2410A处理器的 SPI0口发送数据, SPI1口接收数据, 实验时需要把相应信号接到一起: 参考程序如下: 6.5 PCI接口 6.5.1 PCI接口基本结构 PCI( Peripheral Component Interconnect,外围设备互连)总线 是由 Intel公司推出的一种局部总线,是当前用于系统扩展最流行 的总线之一。由 Intel公司联合世界上多家公司成立的 PCISIG ( Peripheral Component Interconnect Special Interest Group) 协会致力于促进 PCI总线工业标准的发展。 PCI总线规范先后经历 了 1.0版、 2.0版和 2.1版。 PCI总线是地址、数据多路复用的高性 能 32位和 64位总线,是微处理器与外围控制部件、外围附加板之 间的互连机构。它制定了互连的协议、电气、机械及配置空间规 范,以保证全系统的自动配置;在电气方面还专门定义了 5V和 3.3V信号与环境,特别是 2.1版本定义了 64位总线扩展以及 66MHz 总线时钟的技术规范。 PCI定义了 32位数据总线,并且可扩展为 64位。总线速度有 33MHz和 66MHz两种。改良的 PCI系统 PCI-X,数据传输速度最高 可以达到 64位 133 MHz。 PCI总线主板插槽的体积比 ISA总线插 槽小,支持突发读写操作(突发数
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!