1、CHAPTER 7嵌入式系统总线接口嵌入式系统总线接口2022-1-192内容提要内容提要串行接口串行接口I2C接口接口USB接口接口SPI接口接口PCI接口接口I2S总线接口总线接口2022-1-193内容提要内容提要串行接口串行接口I2C接口接口USB接口接口SPI接口接口PCI接口接口I2S总线接口总线接口2022-1-194串行接口基本原理与结构串行接口基本原理与结构o 概述概述n常用的数据通信方式有并行通信和串行通信两种。当两台数常用的数据通信方式有并行通信和串行通信两种。当两台数字设备之间传输距离较远时,数据往往以串行方式传输。串字设备之间传输距离较远时,数据往往以串行方式传输。串
2、行通信的数据是一位一位地进行传输的,在传输中每一位数行通信的数据是一位一位地进行传输的,在传输中每一位数据都占据一个固定的时间长度。与并行通信相比,如果据都占据一个固定的时间长度。与并行通信相比,如果n位位并行接口传送并行接口传送n位数据需时间位数据需时间T,则串行传送的时间最少为,则串行传送的时间最少为nT。串行通信具有传输线少、成本低等优点,特别适合远距。串行通信具有传输线少、成本低等优点,特别适合远距离传送。离传送。n串行数据通信模式串行数据通信模式o 单工通信:数据仅能从设备单工通信:数据仅能从设备A到设备到设备B进行单一方向的传输。进行单一方向的传输。o 半双工通信:数据可以从设备半
3、双工通信:数据可以从设备A到设备到设备B进行传输,也可以从设进行传输,也可以从设备备B到设备到设备A进行传输,但不能在同一时刻进行双向传输。进行传输,但不能在同一时刻进行双向传输。o 全双工通信:数据可以在同一时刻从设备全双工通信:数据可以在同一时刻从设备A传输到设备传输到设备B,或从,或从设备设备B传输到设备传输到设备A,即可以同时双向传输。,即可以同时双向传输。2022-1-195串行接口基本原理与结构串行接口基本原理与结构o 串行通信方式串行通信方式n串行通信在信息格式的约定上可以分为同步通信和异步通信串行通信在信息格式的约定上可以分为同步通信和异步通信两种方式。两种方式。n异步通信方式
4、异步通信方式o 数据是一帧一帧传送的,每帧数据包含有起始位(数据是一帧一帧传送的,每帧数据包含有起始位(”0”)、数)、数据位、奇偶校验位和停止位(据位、奇偶校验位和停止位(”1”) ,每帧数据的传送靠起始,每帧数据的传送靠起始位来同步。一帧数据的各位代码间的时间间隔是固定的,而相位来同步。一帧数据的各位代码间的时间间隔是固定的,而相邻两帧的数据其时间间隔是不固定的。在异步通信的数据传送邻两帧的数据其时间间隔是不固定的。在异步通信的数据传送中,传输线上允许空字符。异步通信对中,传输线上允许空字符。异步通信对字符的格式字符的格式、波特率波特率、校验位校验位有确定的要求。有确定的要求。o 字符的格
5、式字符的格式n每个字符传送时,必须前面加一起始位,后面加上每个字符传送时,必须前面加一起始位,后面加上1、1.5或或2位位停止位。例如停止位。例如ASCII码传送时,一帧数据的组成是:前面码传送时,一帧数据的组成是:前面1个起始个起始位,接着位,接着7位位ASCII编码,再接着一位奇偶校验位,最后一位停止编码,再接着一位奇偶校验位,最后一位停止位,共位,共10位。位。2022-1-196异步通信方式异步通信方式o 波特率波特率n传送数据位的速率称为波特率,用位秒(传送数据位的速率称为波特率,用位秒(bit/s)来表示,)来表示,称之为波特。例如,数据传送的速率为称之为波特。例如,数据传送的速率
6、为120字符秒,每帧字符秒,每帧包括包括10个数据位,则传送波特率为:个数据位,则传送波特率为:10120=1200b/s=1200波特波特n异步通信的波特率的数值通常为:异步通信的波特率的数值通常为:150、300、600、1200、2400、4800、9600、14400、28800等。等。o 校验位校验位n在一个有在一个有8位的字节(位的字节(byte)中,其中必有奇数个或偶数个)中,其中必有奇数个或偶数个的的“1”状态位。对于偶校验就是要使字符加上校验位有偶数状态位。对于偶校验就是要使字符加上校验位有偶数个个“1”;奇校验就是要使字符加上校验位有奇数个;奇校验就是要使字符加上校验位有奇
7、数个“1”。例。例如数据如数据“00010011”,共有奇数个,共有奇数个“1”,所以当接收器要接,所以当接收器要接收偶数个收偶数个“1”时(即偶校验时),则校验位就置为时(即偶校验时),则校验位就置为“1”,反,反之,接收器要接收奇数个之,接收器要接收奇数个“1”时(即奇校验时),则校验位时(即奇校验时),则校验位就置为就置为“0”。2022-1-197异步通信方式异步通信方式n一般校验位的产生和检查是由串行通信控制器内部自动产生,一般校验位的产生和检查是由串行通信控制器内部自动产生,除了加上校验位以外,通信控制器还自动加上停止位,用来除了加上校验位以外,通信控制器还自动加上停止位,用来指明
8、欲传送字符的结束。停止位通常取指明欲传送字符的结束。停止位通常取1、1.5或或2个位。对个位。对接收器而言,若未能检测到停止位则意味着传送过程发生了接收器而言,若未能检测到停止位则意味着传送过程发生了错误。错误。n在异步通信方式中,在发送的数据中含有起始位和停止位这在异步通信方式中,在发送的数据中含有起始位和停止位这两个与实际需要传送的数据毫无相关的位。如果在传送两个与实际需要传送的数据毫无相关的位。如果在传送1个个8位的字符时,其校验位、起始位和停止位都为位的字符时,其校验位、起始位和停止位都为1个位,则个位,则相当于要传送相当于要传送11个位信号,传送效率只有约个位信号,传送效率只有约80
9、%。2022-1-198同步通信方式同步通信方式o为了提高通信效率可以采用同步通信方式。同步传输采用字符块的方式,为了提高通信效率可以采用同步通信方式。同步传输采用字符块的方式,减少每一个字符的控制和错误检测数据位,因而可以具有较高的传输速减少每一个字符的控制和错误检测数据位,因而可以具有较高的传输速率。率。o与异步方式不同的是,同步通信方式不仅在字符的本身之间是同步的,与异步方式不同的是,同步通信方式不仅在字符的本身之间是同步的,而且在字符与字符之间的时序仍然是同步的,即同步方式是将许多的字而且在字符与字符之间的时序仍然是同步的,即同步方式是将许多的字符聚集成一字符块后,在每块信息(常常称之
10、为信息帧)之前要加上符聚集成一字符块后,在每块信息(常常称之为信息帧)之前要加上12个同步字符,字符块之后再加入适当的错误检测数据才传送出去。个同步字符,字符块之后再加入适当的错误检测数据才传送出去。在同步通信时必须连续传输,不允许有间隙,在传输线上没有字符传输在同步通信时必须连续传输,不允许有间隙,在传输线上没有字符传输时,要发送专用的时,要发送专用的”空闲空闲”字符或同步字符。字符或同步字符。o在同步方式中产生一种所谓在同步方式中产生一种所谓“冗余冗余”字符,防止错误传送。假设欲传送字符,防止错误传送。假设欲传送的数据位当作一被除数,而发送器本身产生一固定的除数,将前者除以的数据位当作一被
11、除数,而发送器本身产生一固定的除数,将前者除以后者所得的余数即为该后者所得的余数即为该“冗余冗余”字符。当数据位和字符。当数据位和“冗余冗余”字符位一起字符位一起被传送到接收器时,接收器产生和发送器相同的除数,如此即可检查出被传送到接收器时,接收器产生和发送器相同的除数,如此即可检查出数据在传送过程中是否发生了错误。统计数据表明采用数据在传送过程中是否发生了错误。统计数据表明采用”冗余冗余”字符方字符方法错误防止率可达法错误防止率可达99%以上。以上。2022-1-199RS-232C串行接口串行接口oRS-232C是美国电子工业协会是美国电子工业协会EIA制定的一种串行通信接口标准。制定的一
12、种串行通信接口标准。o(1)RS-232C接口规格接口规格:nRS-232C通常以通常以12V的电压来驱动信号线,的电压来驱动信号线,TTL标准与标准与RS-232C标准之间的电平转换电路通常采用集成电路芯片实标准之间的电平转换电路通常采用集成电路芯片实现,如现,如MAX232等。等。状态状态 L(低电平)(低电平) H(高电平)(高电平) 电压范围电压范围 -15V-3V +3 V+15V 逻辑逻辑 1 0 名称名称 SPACE MARK 2022-1-1910RS-232C串行接口串行接口o(2)RS-232C接口信号接口信号nEIA制定的制定的RS-232C接口与外界的相连采用接口与外界
13、的相连采用25芯(芯(DB-25)和和9芯(芯(DB-9)D型插接件,实际应用中,并不是每只引脚信型插接件,实际应用中,并不是每只引脚信号都必须用到,号都必须用到,25芯和芯和9芯芯D型插接件引脚的定义,与信号之型插接件引脚的定义,与信号之间的对应关系图所示。间的对应关系图所示。2022-1-1911RS-232C串行接口串行接口o(3)RS-232C的基本连接方式的基本连接方式n计算机利用计算机利用RS-232C接口进行串口通信,有简单连接和完全接口进行串口通信,有简单连接和完全连接两种连接方式。连接两种连接方式。n简单连接又称三线连接,即只连接发送数据线、接收数据线和简单连接又称三线连接,
14、即只连接发送数据线、接收数据线和信号地。信号地。n如果应用中还需要使用如果应用中还需要使用RS-232C的控制信号,则采用完全连的控制信号,则采用完全连接方式。在波特率不高于接方式。在波特率不高于9600 bps的情况下进行串口通信时,的情况下进行串口通信时,通信线路的长度通常要求小于通信线路的长度通常要求小于15米,否则可能出现数据丢失现米,否则可能出现数据丢失现象。象。简单连接形式 完全连接形式 2022-1-1912RS-422串行通信接口串行通信接口oRS-422标准是标准是RS-232的改进型,的改进型,RS-422标准全称是标准全称是“平衡电平衡电压数字接口电路的电气特性压数字接口
15、电路的电气特性”。允许在相同传输线上连接多个接收。允许在相同传输线上连接多个接收节点,最多可接节点,最多可接10个节点,即一个主设备(个节点,即一个主设备(Master),其余),其余10个个为从设备(为从设备(Salve),从设备之间不能通信。),从设备之间不能通信。RS-422支持一点对支持一点对多点的双向通信。多点的双向通信。oRS-422的最大传输距离为的最大传输距离为4000英尺(约英尺(约1219m),最大传输速),最大传输速率为率为10Mb/s。传输速率与平衡双绞线的长度有关,只有在很短的。传输速率与平衡双绞线的长度有关,只有在很短的距离下才能获得最高传输速率。在最大传输距离时,
16、传输速率为距离下才能获得最高传输速率。在最大传输距离时,传输速率为100Kb/s。一般。一般100m长的双绞线上所能获得的最大传输速率仅长的双绞线上所能获得的最大传输速率仅为为1 Mb/s。oRS-422需要在传输电缆的最远端连接一个电阻,要求电阻阻值约需要在传输电缆的最远端连接一个电阻,要求电阻阻值约等于传输电缆的特性阻抗。在短距离(等于传输电缆的特性阻抗。在短距离(300m以下)传输时可以不以下)传输时可以不连接电阻。连接电阻。2022-1-1913RS-485串行总线接口串行总线接口o在在RS-422基础上,基础上,EIA制定了制定了RS-485标准,增加了多点双向通信标准,增加了多点双
17、向通信能力。在通信距离几十米至上千米时,通常采用能力。在通信距离几十米至上千米时,通常采用RS-485收发器。收发器。oRS-485收发器采用平衡发送和差分接收,即在发送端,驱动器将收发器采用平衡发送和差分接收,即在发送端,驱动器将TTL电平信号转换成差分信号输出;在接收端,接收器将差分信号电平信号转换成差分信号输出;在接收端,接收器将差分信号变成变成TTL电平,因此具有抑制共模干扰能力。接收器能够检测低达电平,因此具有抑制共模干扰能力。接收器能够检测低达200mV的电压,具有高灵敏度,故数据传输距离可达千米以上。的电压,具有高灵敏度,故数据传输距离可达千米以上。oRS-485可以采用二线与四
18、线方式,二线制可实现真正的多点双向可以采用二线与四线方式,二线制可实现真正的多点双向通信。而采用四线连接时,与通信。而采用四线连接时,与RS-422一样只能实现点对多的通信,一样只能实现点对多的通信,即只能有一个主设备,其余为从设备。即只能有一个主设备,其余为从设备。RS-485可以连接多达可以连接多达32个个设备。设备。oRS-485的共模输出电压在的共模输出电压在-7+12V之间,接收器最小输入阻抗为之间,接收器最小输入阻抗为12k。RS-485满足所有满足所有RS-422的规范,所以的规范,所以RS-485的驱动器的驱动器可以在可以在RS-422网络中应用。网络中应用。RS-485的最大
19、传输速率为的最大传输速率为10Mb/s。在最大传输距离时,传输速率为在最大传输距离时,传输速率为100Kb/s。oRS-485需要两个终端电阻,接在传输总线的两端,电阻阻值约等需要两个终端电阻,接在传输总线的两端,电阻阻值约等于传输电缆的特性阻抗。在短距离传输(于传输电缆的特性阻抗。在短距离传输(300m以下)时可不需终以下)时可不需终端电阻。端电阻。oUART简介简介nUART(Universal Asynchronous Receiver and Transmitter,通用异步收发器)主要由数据线接口、控制逻辑、配置寄存器、波特通用异步收发器)主要由数据线接口、控制逻辑、配置寄存器、波特
20、率发生器、发送部分和接收部分组成,采用异步串行通信方式,采用率发生器、发送部分和接收部分组成,采用异步串行通信方式,采用RS-232C 9芯接插件芯接插件(DB-9)连接,是广泛使用的串行数据传输方连接,是广泛使用的串行数据传输方式式. nUART以字符为单位进行数据传输,每个字符的传输格式如图所示,包以字符为单位进行数据传输,每个字符的传输格式如图所示,包括线路空闲状态(高电平)、起始位(低电平)、括线路空闲状态(高电平)、起始位(低电平)、58位数据位、校位数据位、校验位(可选)和停止位(位数可以是验位(可选)和停止位(位数可以是1、1.5或2位)。这种格式通过)。这种格式通过起始位和停止
21、位来实现字符的同步。起始位和停止位来实现字符的同步。UART内部一般具有配置寄存器,内部一般具有配置寄存器,通过该寄存器可以配置数据位数(通过该寄存器可以配置数据位数(58位)、是否有校验位和校验的位)、是否有校验位和校验的类型以及停止位的位数类型以及停止位的位数2022-1-1914S3C2410A 的的UART2022-1-1915S3C2410A 的的UARTo UART结构结构nS3C2410A的的UART提供提供3个独立的异步串行个独立的异步串行I/O口(口(SIO),它们都),它们都可以运行于中断模式或可以运行于中断模式或DMA模式。在使用系统时钟的情况下,模式。在使用系统时钟的情
22、况下,UART可以支持最高可以支持最高230.4Kbps的传输速率。如果外部设备通过的传输速率。如果外部设备通过UEXTCLK为为UART提供时钟,那么提供时钟,那么UART的传输速率可以更高。每个的传输速率可以更高。每个UART通道通道包含两个用于接收和发送数据的包含两个用于接收和发送数据的16字节的字节的FIFO缓冲寄存器。缓冲寄存器。n如图所示,如图所示,S3C2410A的的UART由波特率发生器、发送器、接收器以由波特率发生器、发送器、接收器以及控制单元组成。波特率发生器的时钟可以由及控制单元组成。波特率发生器的时钟可以由PCLK或或UEXTCLK提供。提供。发送器和接收器包含发送器和
23、接收器包含16字节的字节的FIFO缓冲寄存器和数据移位器。发送时,缓冲寄存器和数据移位器。发送时,数据被写入数据被写入FIFO,然后拷贝到发送移位器中,接下来数据通过发送数,然后拷贝到发送移位器中,接下来数据通过发送数据引脚(据引脚(TxDn)被发送。接收时,接收到的数据从接收数据引脚)被发送。接收时,接收到的数据从接收数据引脚(RxDn)移入,然后从移位器拷贝到)移入,然后从移位器拷贝到FIFO中。中。 2022-1-1916S3C2410A 的的UARTo UART结构结构S3C2410A的UART方框图2022-1-1917S3C2410A UART的操作的操作o S3C2410A的的U
24、ART的操作包含有数据发送、数据接收、中断的操作包含有数据发送、数据接收、中断产生、波特率发生、回送模式、红外模式和自动流控制等。产生、波特率发生、回送模式、红外模式和自动流控制等。o (1)数据发送()数据发送(Data Transmission)n发送的数据帧是可编程的。它包括发送的数据帧是可编程的。它包括1个起始位、个起始位、58个数据个数据位、位、1个可选的奇偶校验位和个可选的奇偶校验位和12个停止位,具体设置由行个停止位,具体设置由行控制寄存器(控制寄存器(ULCONn)确定。)确定。o (2)数据接收()数据接收(Data Reception)n与数据发送类似,接收的数据帧也是可编
25、程的。它包括与数据发送类似,接收的数据帧也是可编程的。它包括1个起个起始位,始位,58个数据位、个数据位、1个可选的奇偶校验位和个可选的奇偶校验位和12个停止个停止位,具体设置由行控制寄存器(位,具体设置由行控制寄存器(ULCONn)确定。接收器可)确定。接收器可以检测溢出错误和帧错误。溢出错误指新数据在旧数据还没以检测溢出错误和帧错误。溢出错误指新数据在旧数据还没有被读出之前就将其覆盖了。帧错误指接收的数据没有有效有被读出之前就将其覆盖了。帧错误指接收的数据没有有效的停止位。的停止位。2022-1-1918S3C2410A UART的操作的操作o(3)自动流控制()自动流控制(Auto Fl
26、ow Control,AFC)nS3C2410A的的UART0和和UART1使用使用nRTS和和nCTS信号支持自动流信号支持自动流控制。在这种情况下,它可以连接到外部的控制。在这种情况下,它可以连接到外部的UART。如果用户希望。如果用户希望将将UART连接到连接到Modem,则需要通过软件来禁止则需要通过软件来禁止UMCONn寄存器中寄存器中的自动流控制位并控制的自动流控制位并控制nRTS信号。信号。2022-1-1919S3C2410A UART的操作的操作o (4) RS-232接口n如果用户希望将如果用户希望将UART连接到连接到Modem接口,则需要使用接口,则需要使用nRTS、n
27、CTS、nDSR、nDTR、DCD和和nRI信号。在这个状态,用户可以信号。在这个状态,用户可以使用通用的使用通用的I/O接口,通过软件来控制这些信号,因为接口,通过软件来控制这些信号,因为AFC不支持不支持RS-232C接口。接口。o (5)中断DMA请求产生(Interrupt/DMA Request Generation)nS3C2410A的每个的每个UART有有5个状态(个状态(Tx/Rx/Error)信号:溢出)信号:溢出错误、帧错误、接收缓冲数据准备好、发送缓冲空和发送移位器空。错误、帧错误、接收缓冲数据准备好、发送缓冲空和发送移位器空。这些状态通过相关的状态寄存器(这些状态通过相
28、关的状态寄存器(UTRSTATn/UERSTATn)指示。)指示。n溢出错误和帧错误指示接收数据时发生的错误状态。如果控制寄存溢出错误和帧错误指示接收数据时发生的错误状态。如果控制寄存器器UCONn中的接收错误状态中断使能位置中的接收错误状态中断使能位置1,那么溢出错误和帧错,那么溢出错误和帧错误的任何一个都可以产生接收错误状态中断请求。当检测到接收错误的任何一个都可以产生接收错误状态中断请求。当检测到接收错误状态中断请求时,可以通过读误状态中断请求时,可以通过读UERSTSTn的值来确定引起请求的的值来确定引起请求的信号。信号。2022-1-1920S3C2410A UART的操作的操作o(
29、6)波特率的产生(Baud-Rate Generation)n每个每个UART的波特率发生器为发送器和接收器提供连续的时钟。波的波特率发生器为发送器和接收器提供连续的时钟。波特率发生器的时钟源可以选择使用特率发生器的时钟源可以选择使用S3C2410A的内部系统时钟或的内部系统时钟或UEXTCLK。换句话说,通过设置。换句话说,通过设置UCONn的时钟选择位可以选择不的时钟选择位可以选择不同的分频值。波特率时钟可以通过对源时钟(同的分频值。波特率时钟可以通过对源时钟(PCLK或者或者UEXTCLK)16分频和对在分频和对在UART波特率系数寄存器(波特率系数寄存器(UBRDIVn)中的)中的16
30、位分位分频数设置得到。频数设置得到。o(7)回送模式(Loopback Mode) nS3C2410A DART提供一种测试模式,即回送模式,用于发现通提供一种测试模式,即回送模式,用于发现通信连接中的孤立错误。这种模式在结构上使信连接中的孤立错误。这种模式在结构上使UART的的RXD与与TXD连连接。因此,在这个模式,发送的数据通过接。因此,在这个模式,发送的数据通过RXD被接收器接收。这一被接收器接收。这一特性使得处理器能够验证每个特性使得处理器能够验证每个SIO通道内部发送和接收数据的正确通道内部发送和接收数据的正确性。该模式通过设置性。该模式通过设置UART控制寄存器(控制寄存器(UC
31、ONn)的回送位来进行)的回送位来进行选择。选择。 o8)红外模式(Infra-Red (IR) Mode)nS3C2410A的的UART模块支持红外发送和接收,该模式可以通过设模块支持红外发送和接收,该模式可以通过设置置UART行控制寄存器(行控制寄存器(ULCONn)中的红外模式位来选择。)中的红外模式位来选择。2022-1-1921UART 特殊寄存器o (1) UART 行控制寄存器(ULCONn)o (2) UART 控制寄存器(UCONn)o (3) UART FIFO 控制寄存器(UFCONn)o (4) UART MODEM 控制寄存器(UMCONn)o (5) UART 接收
32、发送状态寄存器(UTRSTATn)o (6) UART 错误状态寄存器(UERSTATn)o (7) UART FIFO 状态寄存器(UFSTATn)o (8) UART MODEM 状态寄存器(UMSTATn)o (9) UART 发送缓存寄存器(UTXHn)o (10) UART 接收缓存寄存器(URXHn)o (11) UART 波特率除数寄存器(UBRDIVn) 见课本P166-167页2022-1-1922S3C2410A UART串行接口电路串行接口电路o 要完成最基本的串行通信功能,实际上只需要要完成最基本的串行通信功能,实际上只需要RXD、TXD和和GND即可。由于即可。由于R
33、S-232C标准所定义的高、低电平信号标准所定义的高、低电平信号与与S3C2410A系统的系统的LVTTL电路所定义的高、低电平信号电路所定义的高、低电平信号不同,不同,RS-232C标准采用负逻辑方式,标准逻辑标准采用负逻辑方式,标准逻辑“1”对应对应-3V-15V电平,标准逻辑电平,标准逻辑“0”对应对应+3V+15V电平。电平。而而LVTTL的标准逻辑的标准逻辑“1”对应对应23.3V电平,标准逻辑电平,标准逻辑“0”对应对应00.4V电平。显然,两者间要进行通信必须经过信电平。显然,两者间要进行通信必须经过信号电平的转换。目前常使用的电平转换电路有号电平的转换。目前常使用的电平转换电路
34、有MAX232等。等。2022-1-1923S3C2410A UART与与RS-422和和RS-485接口电路接口电路o 一个采用一个采用MAX487与与S3C2410A的的UART1连接,构成支持连接,构成支持RS422和和RS485接口电路如图所示。接口电路如图所示。RS422至少分别有一至少分别有一个差分发送口和差分接收口。两节点通信时,一方的发送个差分发送口和差分接收口。两节点通信时,一方的发送口与另一方的接收口相连,需两根线。口与另一方的接收口相连,需两根线。RS422不能直接用不能直接用于三点以上的直接互连,也不能直接用总线连接。电路中于三点以上的直接互连,也不能直接用总线连接。电
35、路中采用两片采用两片MAX487E,分别构成,分别构成RS422发送和接收通道。发送和接收通道。o RS485的差分发送口与自身的差分接收口同相并连,多点的差分发送口与自身的差分接收口同相并连,多点间连接通过间连接通过RS485总线只需一对线。电路中采用一片总线只需一对线。电路中采用一片MAX487E构成构成RS485的发送和接收通道。的发送和接收通道。2022-1-1924S3C2410A UART编程实例编程实例o 本程序实例实现从本程序实例实现从UART0接收数据,然后分别从接收数据,然后分别从UART0和和UART1发送出去。其功能可以把键盘敲击的字符通过发送出去。其功能可以把键盘敲击
36、的字符通过PC机机的串口发送给的串口发送给ARM系统上的系统上的UART0,ARM系统上的系统上的UART0接收到字符后,再通过接收到字符后,再通过UART0和和UART1送给送给PC机,机,这样就完成了串口间的收发数据。这样就完成了串口间的收发数据。o 1定义与UART相关的寄存器#define rULCON0(*(volatile unsigned*)0 x50000000) /UART0行控制寄存器#define rUCON0(*(volatile unsigned*)0 x50000004) /UART0控制寄存器#define rUFCON0(*(volatile unsigned*
37、)0 x50000008) /UART0 FIFO控制寄器#define rUMCON0(*(volatile unsigned*)0 x5000000c) /UART0 Modem控制寄存器2022-1-1925S3C2410A UART编程实例编程实例o 2初始化操作n参数参数pclk为时钟源的时钟频率,为时钟源的时钟频率,band为数据传输的波特率,初始化函数为数据传输的波特率,初始化函数Uart_Init 的实现如下:的实现如下:void Uart_Init(int pclk,int baud) int I; if (pclk= =0) pclkPCLK; rUFCON0=0 x0;
38、/UART0 FIFO控制寄存器,FIFO禁止 rUFCON1=0 x0; /UART1 FIFO控制寄存器,FIFO禁止 rUFCON2=0 x0; /UART2 FIFO控制寄存器,FIFO禁止 rUMCON0=0 x0; /UARTO MODEM控制寄存器,AFC禁止 rUMCON1=0 x0; /UART1 MODEM控制寄存器,AFC禁止 /UART0 rULCON00 x3 ; /行控制寄存器:正常模式,无奇偶校验,1位停止位,8位数据位 rUCON00 x245 ; /控制寄存器 rUBRDIV0 =(int)(pclk/16/baud)-1) ; /波特率因子寄存器 /UART
39、1 rULCON1=0 x3; rUCON1=0 x245; rUBRDIV1=(int)(pclk/16/baud)-1); /UART2 rULCON2=0 x3; rUCON20 x245; rUBRDIV2=(int)(pclk/16/baud)-1);2022-1-1926S3C2410A UART编程实例编程实例o3发送数据n其中其中whichUart为全局变量,指示当前选择的为全局变量,指示当前选择的UART通道,使用串口发送一个字节通道,使用串口发送一个字节的代码如下:的代码如下:void Uart_SendByte(int data) if(whichUart= =0) if
40、(data= =n) while(!(rUTRSTAT00 x2); Delay(10); /延时,与终端速度有关 rUTXH0=(r); while(!(rUTRSTAT00 x2); /等待,直到发送状态就绪 Delay(10); WrUTXH0(data); else if(whichUart= =1) if(data=n) while(!(rUTRSTAT10 x2); Delay(10); /延时,与终端速度有关 rUTXH1=r; while(!(rUTRSTAT10 x2); /等待,直到发送状态就绪 Delay(10); rUTXH1data; 2022-1-1927S3C24
41、10A UART编程实例编程实例o 4接收数据n如果没有接收到字符则返回0。使用串口接收一个字符的代码如下: char Uart_GetKey(void) if(whichUart0) if(rUTRSTAT00 x1) /UARTO接收到数据 return RdURXH0(); else return 0; else if(whichUart= =1) if(rUTRSTAT10 x1) /UART1接收到数据 return RdURXH1(); else return 0; else if(whichUart= =2) if(rUTRSTAT20 x1) /UART2接收到数据 retur
42、n RdURXH2(); else return 0; else return 0; 2022-1-1928S3C2410A UART编程实例编程实例o 5主函数n实现的功能为从UART0接收字符,然后将接收到的字符再分别从UART0和UART1送出去,其中Uart_Select(n)用于选择使用的传输通道为UARTn。代码如下:includestringhinclude”INCconfigh”void Main(void)char data;Target_Init();while(1)data=Uart GetKey(); /接收字符if(data!0 x0)Uart_Select(0);
43、/从UART0发送出去Uart_Printf(”keycn”,data);Uart_Select (1); /从UART1发送出去Uart_Printf(”keyc n”,data);Uart_Select(0); 2022-1-1929内容提要内容提要串行接口串行接口I2C接口接口USB接口接口SPI接口接口PCI接口接口I2S总线接口总线接口2022-1-1930I2C接口基本原理与结构接口基本原理与结构o I2C BUS(Inter Integrated Circuit BUS,内部集成电路总,内部集成电路总线)是由线)是由Philips公司推出的二线制串行扩展总线,用于连接微控公司推出
44、的二线制串行扩展总线,用于连接微控制器及其外围设备。制器及其外围设备。I2C总线是具备总线仲裁和高低速设备同步总线是具备总线仲裁和高低速设备同步等功能的高性能多主机总线,直接用导线连接设备,通信时无需等功能的高性能多主机总线,直接用导线连接设备,通信时无需片选信号。片选信号。o 在在I2C总线上,只需要两条线总线上,只需要两条线串行数据串行数据SDA线和串行时钟线和串行时钟SCL线,它们用于总线上器件之间的信息传递。线,它们用于总线上器件之间的信息传递。SDA和和SCL都是都是双向的。每个器件都有一个唯一的地址以供识别,而且各器件都双向的。每个器件都有一个唯一的地址以供识别,而且各器件都可以作
45、为一个发送器或接收器(由器件的功能决定)。可以作为一个发送器或接收器(由器件的功能决定)。2022-1-1931I2C接口基本原理与结构接口基本原理与结构o I2C总线有如下操作模式:主发送模式、主接收模式、从发送模总线有如下操作模式:主发送模式、主接收模式、从发送模式、从接收模式。下面介绍其通用传输过程、信号及数据格式。式、从接收模式。下面介绍其通用传输过程、信号及数据格式。o I2C总线的启动和停止信号总线的启动和停止信号n当当I2C接口处于从模式时,要想数据传输,必须检测接口处于从模式时,要想数据传输,必须检测SDA线上的启线上的启动信号,启动信号由主器件产生。在动信号,启动信号由主器件
46、产生。在SCL信号为高时,信号为高时,SDA产生产生一个由高变低的电平变化,即产生一个启动信号。当一个由高变低的电平变化,即产生一个启动信号。当I2C总线上产总线上产生了启动信号后,那么这条总线就被发出启动信号的主器件占用了,生了启动信号后,那么这条总线就被发出启动信号的主器件占用了,变成变成“忙忙”状态;在状态;在SCL信号为高时,信号为高时,SDA产生一个由低变高的产生一个由低变高的电平变化,产生停止信号。停止信号也由主器件产生,作用是停止电平变化,产生停止信号。停止信号也由主器件产生,作用是停止与某个从器件之间的数据传输。当与某个从器件之间的数据传输。当I2C总线上产生了一个停止信号总线
47、上产生了一个停止信号后,那么在几个时钟周期之后总线就被释放,变成后,那么在几个时钟周期之后总线就被释放,变成“闲闲”状态。状态。2022-1-1932I2C接口基本原理与结构接口基本原理与结构o主器件产生一个启动信号后,它还会立即送出一个从地址,用来通知将主器件产生一个启动信号后,它还会立即送出一个从地址,用来通知将与它进行数据通信的从器件。与它进行数据通信的从器件。1个字节的地址包括个字节的地址包括7位的地址信息和位的地址信息和1位位的传输方向指示位,如果第的传输方向指示位,如果第7位为位为“0”,表示马上要进行一个写操作;,表示马上要进行一个写操作;如果为如果为“1”,表示马上要进行一个读
48、操作。,表示马上要进行一个读操作。o(2)数据传输格式)数据传输格式nSDA线上传输的每个字节长度都是线上传输的每个字节长度都是8位,每次传输中字节的数量是没有限位,每次传输中字节的数量是没有限制的。在起始条件后面的第一个字节是地址域,之后每个传输的字节后面制的。在起始条件后面的第一个字节是地址域,之后每个传输的字节后面都有一个应答(都有一个应答(ACK)位。传输中串行数据的)位。传输中串行数据的MSB(字节的高位)首先(字节的高位)首先发送。发送。o(3)应答信号)应答信号n为了完成为了完成1个字节的传输操作,接收器应该在接收完个字节的传输操作,接收器应该在接收完1个字节之后个字节之后发送发
49、送ACK位到发送器,告诉发送器,已经收到了这个字节。位到发送器,告诉发送器,已经收到了这个字节。ACK脉冲信号在脉冲信号在SCL线上第线上第9个时钟处发出(前面个时钟处发出(前面8个时钟完成个时钟完成1个字节个字节的数据传输,的数据传输,SCL上的时钟都是由主器件产生的)。当发送器要接上的时钟都是由主器件产生的)。当发送器要接收收ACK脉冲时,应该释放脉冲时,应该释放SDA信号线,即将信号线,即将SDA置高。接收器在置高。接收器在接收完前面接收完前面8位数据后,将位数据后,将SDA拉低。发送器探测到拉低。发送器探测到SDA为低,为低,就认为接收器成功接收了前面的就认为接收器成功接收了前面的8位
50、数据。位数据。2022-1-1933I2C接口基本原理与结构接口基本原理与结构o(4)总线竞争的仲裁)总线竞争的仲裁nI2C总线上可以挂接有多个器件,有时会发生两个或多个主器件同总线上可以挂接有多个器件,有时会发生两个或多个主器件同时想占用总线的情况。时想占用总线的情况。I2C总线具有多主控能力,可对发生在总线具有多主控能力,可对发生在SDA线上的总线竞争进行仲裁,其仲裁原则是:当多个主器件同时想占线上的总线竞争进行仲裁,其仲裁原则是:当多个主器件同时想占用总线时,如果某个主器件发送高电平,而另一个主器件发送低电用总线时,如果某个主器件发送高电平,而另一个主器件发送低电平,则发送电平与此时平,