版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 嵌入式系统设计嵌入式系统设计 基于基于ARM9ARM9微处理器微处理器S3C2410AS3C2410A第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 6.1 6.1 串行串行(Uart)(Uart)接口接口 掌握ARM的Uart工作原理掌握Uart寄存器配置方法学习编程实现ARM的UART通讯第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 6.1.1 串行接口基本原理与结构1 1串行通信概
2、述串行通信概述 常用的数据通信方式有并行通信和串行通信两种。当两台数字设备之间传输距离较远时,数据往往以串行方式传输。串行通信具有传输线少、成本低等优点,特别适合远距离传送。 串行数据通信模式 串行数据通信模式有单工通信、半双工通信和全双工通信3种基本的通信模式。第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 异步串行通信方式 字符的格式 每个字符传送时,必须前面加一个起始位,后面加上1、1.5或2位停止位。例如ASCII码传送时,一帧数据的组成是:前面1个起始位,接着7位ASCII编码,再接着一位奇偶校验位,最后一位停止位,共10位。 波特率 传送数据位的
3、速率称为波特率,用位秒(bit/s)来表示,称之为波特。异步通信的波特率的数值通常为:150、300、600、1200、2400、4800、9600、115200、14400、28800等,数值成倍数变化。 校验位 在一个有8位的字节(byte)中,其中必有奇数个或偶数个的“1”状态位。第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 异步串行通信中的字符传送格式u开始前,线路处于空闲状态,连续多个“1”;u开始时,先发一个“0”作为起始位;u然后是二进制数据和奇偶校验位(可选);u最后是一个及一个以上的“1”作为停止位;第第6 6章章 嵌入式系统总线接口嵌入
4、式系统总线接口 嵌入式系统设计嵌入式系统设计 uRS232-C是美国电子工业协会(EIA)制定的串行通讯标准;uRS232是一个全双工的通讯标准,它可以同时进行数据接收和发送的工作;uRS232标准包括一个主通道和一个辅助通道,在多数情况下主要使用主通道,即RXD、TXD、GND信号;2 2RS232RS232概述概述第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 DB-25/DB-9引脚定义第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 RS-232C接口通信的两种基本连接方式第第6 6章章 嵌入式系统总线接口嵌入式系统
5、总线接口 嵌入式系统设计嵌入式系统设计 uTTL电平:S3C2410A使用TTL电平uRS232电平:双极性信号逻辑电平, 它是一套负逻辑定义-3V到-25V之间的电平表示逻辑“1”+3V到+25V之间的电平表示逻辑“0” 电平转换电路:常用专门的RS-232接口芯片,如SP3232、SP3220等,在TTL电平和RS-232电平之间实现相互转换。3 3电平转换电平转换第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 1 1S3C2410AS3C2410A的的UARTUART结
6、构结构 S3C2410 的UART(通用异步串行口)有三个独立的异步串行I/O 端口:UART0、UART1、UART2 UART支持的最高波特率达230.4kbps6.1.2 S3C2410A的UART第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 每个UART包含:u波特率发生器、接收器、发送器和控制单元u波特率发生器以PCLK或UCLK为时钟源u发送器和接收器各包含1个16 字节的FIFO和移位寄存器u当发送数据的时候,数据可以先写到FIFO然后拷贝到发送移位寄存器,然后从数据输出端口(TxDn)依次被移位输出u被接收的数据也同样可以从接收端口(RxD
7、n)移位输入到移位寄存器,然后拷贝到FIFO中第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 1.在使用UART之前需要设置的寄存器UART内部结构示意图-以Uart0为例FIFO控制中断使能及模式选择UART格式设置波特率设置UTXHnShifterTxD0URXHnShifterRxD0ULCONnUTRSTATnUCONnAPB接口UFCNn与CPU内核相连ULCONnUFCONnUBRDIVnUCONn第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 2.发送数据的通道UART内部结构示意图CPU内核通过APB接口对
8、UART的寄存器进行读写访问发送缓存发送移位寄存器UTXHnShifterTxD0URXHnShifterRxD0ULCONnUTRSTATnUCONnAPB接口UFCONn与CPU内核相连UTXHnUBRDIVn第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 3.接收数据的通道UART内部结构示意图接收缓存接收移位寄存器U0RBRU0RSRAPB接口UTXHnShifterTxD0URXHnShifterRxD0ULCONnUTRSTATnUCONnUFCONn与CPU内核相连URXHnUBRDIVn第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌
9、入式系统设计嵌入式系统设计 4.通信过程中可能影响的标志位UART内部结构示意图中断标志UART0当前状态U0RBRU0RSRAPB接口UTXHnShifterTxD0URXHnShifterRxD0ULCONnUTRSTATnUCONnUFCONn与CPU内核相连UCONnUTRSTATnUBRDIVn第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 UART相关寄存器描述Uart行控制寄存器UTXHnShifterTxD0URXHnShifterRxD0ULCONnUTRSTATnUCONnAPB接口UFCNn与CPU内核相连ULCONnUBRDIVnP1
10、1D0D1D2D3D4D5D6D70位765 : 321 :0功能保留红外/正常模式选择奇偶校验模式选择停止位字长ULCON寄存器:停止位(12位)数据(58位)奇偶校验位起始位第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 UART0相关寄存器描述字长:这些位控制数据长度。00:5位字符长度;01:6位字符长度;10:7位字符长度;11:8位字符长度;UTXHnShifterTxD0URXHnShifterRxD0ULCONnUTRSTATnUCONnAPB接口UFCNn与CPU内核相连ULCONnUBRDIVn位765 : 321 :0功能保留红外/正常
11、模式选择奇偶校验模式选择停止位字长Uart行控制寄存器第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 UART0相关寄存器描述停止位:控制每帧数据包含的停止位个数。0:1个停止位;1:2个停止位;UTXHnShifterTxD0URXHnShifterRxD0ULCONnUTRSTATnUCONnAPB接口UFCNn与CPU内核相连ULCONnUBRDIVn位765 : 321 :0功能保留红外/正常模式选择奇偶校验模式选择停止位字长Uart行控制寄存器第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 UART相关寄存器描述
12、奇偶选择:设置奇偶校验类型。0XX:无奇偶校验; 100:奇校验; 101:偶校验;110:强制奇偶校验/校验1;111:强制奇偶校验/校验0;UTXHnShifterTxD0URXHnShifterRxD0ULCONnUTRSTATnUCONnAPB接口UFCNn与CPU内核相连ULCONnUBRDIVn位765 : 321 :0功能保留红外/正常模式选择奇偶校验模式选择停止位字长Uart行控制寄存器第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 UART线控寄存器(ULCONn)的位功能 第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设
13、计嵌入式系统设计 UART相关寄存器描述Uart控制寄存器位109876543:21 :0功能波特率时钟选择发送中断请求类型选择接收中断请求类型选择Rx超时中断使能控制接收错误状态中断使能控制回送模式选择保留发送模式选择接收模式选择波特率时钟选择:0:使用PCLK 1:使用UclkUTXHnShifterTxD0URXHnShifterRxD0ULCONnUTRSTATnUCONnAPB接口UFCNn与CPU内核相连UCONnUBRDIVn第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 UART相关寄存器描述位210功能发送器空状态位发送缓冲器空状态位接收缓
14、冲器状态位Uart状态寄存器发送器空状态位: 0:发送器未空 1:发送器、发送缓冲器均空。U0RBRU0RSRUTXHnShifterTxD0URXHnShifterRxD0ULCONnUTRSTATnUCONnUFCONn与CPU内核相连UTRSTATnUBRDIVnAPB接口第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 UART相关寄存器描述位210功能发送器空状态位发送缓冲器空状态位接收缓冲器状态位Uart状态寄存器发送缓冲器空状态位: 0:未空; 1:空U0RBRU0RSRUTXHnShifterTxD0URXHnShifterRxD0ULCONn
15、UTRSTATnUCONnUFCONn与CPU内核相连UTRSTATnUBRDIVnAPB接口第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 UART相关寄存器描述位210功能发送器空状态位发送缓冲器空状态位接收缓冲器状态位Uart状态寄存器接收缓冲器空状态位: 0:空; 1:有数据U0RBRU0RSRUTXHnShifterTxD0URXHnShifterRxD0ULCONnUTRSTATnUCONnUFCONn与CPU内核相连UTRSTATnUBRDIVnAPB接口第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 第第6
16、 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 UART相关寄存器描述UTXHn描述复位值7 : 0发送数据缓冲寄存器,保存发送数据未定义发送/接收数据缓冲寄存器UTXHnShifterTxD0URXHnShifterRxD0ULCONnUTRSTATnUCONnUFCONn与CPU内核相连UTXHnUBRDIVnAPB接口URXHnURXHn描述复位值7 : 0接收数据缓冲寄存器,保存接收数据未定义第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 UART相关寄存器描述名称描述复位值UBRDIV15:0波特率系数寄存寄存器:决定
17、串行发送接收时钟率未定义Uart波特率系数寄存器UTXHnShifterTxD0URXHnShifterRxD0ULCONnUTRSTATnUCONnAPB接口UFCNn与CPU内核相连UBRDIVn第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 通过设置UCONn寄存器选择UART时钟是由S3C2410A的系统时钟(PCLK)产生还是由外部UART设备的时钟(UCLK)产生。 波特率的大小可以通过设置波特率寄存器(UBRDIVn)控制,使用PCLK时的计算公式如下: UBRDIVn = (int)(PCLK/(bps x 16) ) -1 使用UCLK时的
18、计算公式如下: UBRDIVn = (int)(UCLK/(bps x 16) ) -1 其中PCLK 是系统时钟频率,UCLK是UART设备时钟。 使用PCLK,在40MHz的情况下,当波特率取115200时 UBRDIVn = (int)(40000000/ (115200 x 16)1= 20波特率计算第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 2.UART2.UART工作过程(以工作过程(以UART0UART0为例)为例) 串口初始化u首先要设置相应I/O为TXD0、RXD0功能引脚;u然后通过ULCON0寄存器来设置串口数据格式;u然后通过UC
19、ON0寄存器来设置串口工作模式;u最后通过UBRDIV0来设置通讯波特率;第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 串口收发数据u发送:将待发送数据写入UTXH0寄存器,然后通过读取UTRSTAT0寄存器的值判断数据是否发送完成;u接收:通过读取UTRSTAT0寄存器的值判断是否接收到数据,如果接收到数据,则可以从URXH0寄存器中读出数据。第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 6.1.3 与S3C2410A UART连接的串行接口电路1 1S3C2410A UARTS3C2410A UART与与RS-23
20、2CRS-232C的接口电路的接口电路 在图6.1.7中,包含有UART0和UART1与RS-232C的接口电路,通过9芯的D型插头与外设连接。也可设计数据发送与接收的状态指示LED,当有数据通过串行口传输时,LED闪烁,便于用户掌握其工作状态,以及进行软、硬件的调试。 第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 图6.1.7 S3C2410A的RS-232C接口电路 RS232电平TTL电平第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 6.1.4 S3C2410A UART编程实例 本程序实例实现从UART0接收数
21、据,然后分别从UART0和UART1发送出去。 其功能可以把键盘敲击的字符通过PC机的串口发送给ARM系统上的UART0,ARM系统上的UART0接收到字符后,再通过UART0和UART1送给PC机,这样就完成了串口间的收发数据。要实现以上数据的收发功能,需要编写的主要代码如下。第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 2 2主函数主函数 实现的功能为从UART0接收字符,然后将接收到的字符再分别从UART0和UART1送出去,其中Uart_Select(n)用于选择使
22、用的传输通道为UARTn。代码如下:第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 4 4发送数据发送数据 其中whichUart为全局变量,指示当前选择的UART通道,使用串口发送一个字节的代码如下:第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 5 5接收数据接收数据 如果没有接收到字符则返回0。使用串口接收一个字符的代码如下: 第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 对串口进行初始化时,首先
23、要设置相应I/O 为TXD0、RXD0 功能引脚,然后通过ULCON0 寄存器来设置串口数据格式,通过UCON0 寄存器来设置串口工作模式,最后通过UBRDIV0 来设置通讯波特率。 使用串口发送数据时,将待发送数据写入UTXH0 寄存器,然后通过读取UTRSTAT0寄存器的值判断数据是否发送完成。当然,实际代码也可以先等待UTXH0 寄存器为空(通过读取UTRSTAT0 寄存器的值判断),再将数据写入UTXH0 寄存器。 进行串口数据接收时,通过读取UTRSTAT0 寄存器的值判断是否接收到数据,如果接收到数据,则可以从URXH0 寄存器中读出数据。 总结总结第第6 6章章 嵌入式系统总线接
24、口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 6.2 I6.2 I2C C接口接口 6.2.1 I2C 接口基本原理与结构 I2C BUS(Inter Integrated Circuit BUS,内部集成电路总线)是由Philips公司推出的二线制串行扩展总线,用于连接微控制器及其外围设备。 如下图所示,在I2C总线上,只需要两条线串行数据SDA线和串行时钟SCL线,它们用于总线上器件之间的信息传递。SDA和SCL都是双向的。每个器件都有一个唯一的地址(读写不一样)以供识别,而且各器件都可以作为一个发送器或接收器(由器件的功能决定)。 在标准模式下,总线数据传输的速度为100kbit/
25、s,在高速模式下,可达400kbit/s; I2C总线有如下操作模式:主发送模式、主接收模式、从发送模式、从接收模式。下面介绍其通用传输过程、信号及数据格式。第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 I2C简介电气连接 I2C总线接口均为开漏或开集电极输出,因此需要为总线增加上拉电阻Rp。RpRpVDDSCLSDASDA出SDA入SCL入SCL出SCLSDA器件1器件2I2C BUS总线速率越高,总线上拉电阻就越小,100Kbit/s总线速率,通常使用5.1K欧姆的上拉电阻第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设
26、计 (1)I2C总线的启动和停止信号 当I2C接口处于从模式时,要想数据传输,必须检测SDA线上的启动信号,启动信号由主器件产生。 如下图所示,在SCL信号为高时,SDA产生一个由高变低的电平变化,即产生一个启动信号。当I2C总线上产生了启动信号后,那么这条总线就被发出启动信号的主器件占用了,变成“忙”状态; 如下图所示,在SCL信号为高时,SDA产生一个由低变高的电平变化,产生停止信号。停止信号也由主器件产生,作用是停止与某个从器件之间的数据传输。当I2C总线上产生了一个停止信号后,那么在几个时钟周期之后总线就被释放,变成“闲”状态。 第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌
27、入式系统设计嵌入式系统设计 主器件产生一个启动信号后,它还会立即送出一个从地址,用来通知将与它进行数据通信的从器件。 1个字节的地址包括7位的地址信息和1位的传输方向指示位,如果第7位为“0”,表示马上要进行一个写操作;如果为“1”,表示马上要进行一个读操作。第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 (2)数据传输格式 SDA线上传输的每个字节长度都是8位,每次传输中字节的数量是没有限制的。在起始条件后面的第一个字节是地址域,之后每个传输的字节后面都有一个应答(ACK)位。(3)应答信号 I2C总线数据传送时,每传送一个字节数据后都必须有应答信号。主控
28、器接收数据时,如果要结束通信时,将在停止位之前发送非应答信号。第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 S3C2410A在I2C通信中可以配置为主控器,也可以作为被控器,那么它就具有4种操作模式:主发送模式、主接收模式、从发送模式和从接收模式。S从器件地址WA数据A数据A/ AP主发送模式:S从器件地址RA数据A数据AP主接收模式:S从器件地址WA数据A数据A/ AP/RS从发送模式:S从器件地址RA数据A数据AP从接收模式:主机到从机主机到从机A = 应答(SDA为低)A = 非应答(SDA为高)S = 起始信号P = 停止信号RS = 重复起始信号
29、第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 (4)I2C总线的数据传输过程 开始:主设备产生启动信号,表明数据传输开始。 地址:主设备发送地址信息,包含7位的从设备地址和1位的数据方向指示位(读或写位,表示数据流的方向)。 数据:根据指示位,数据在主设备和从设备之间进行传输。数据一般以8位传输,最重要的位放在前面;具体能传输多少量的数据并没有限制。接收器产生1位的ACK(应答信号)表明收到了每个字节。传输过程可以被中止和重新开始。 停止:主设备产生停止信号,结束数据传输。
30、第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 6.2.2 S3C2410A的I2C接口 S3C2410A提供一个I2C总线接口,其模块框图如图6.2.3所示,具有一个专门的串行数据线和串行时钟线。它有主设备发送模式、主设备接收模式、从设备发送模式和从设备接收模式4种操作模式。 控制S3C2410AI2C总线操作,需要写数据到IICCON(I2C总线控制寄存器)、IICSTAT(I2C总线控制/状态寄存器)、IICDS(I2C总线Tx/Rx数据寄存器)和IICADD(I2C总线地址寄存器)。第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计
31、嵌入式系统设计 图6.2.3 S3C2410A处理器I2C串行总线框图第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 IIC相关寄存器u控制寄存器IICCON用于设置 IIC 总线时钟和中断(标志)使能,还有 1 位中断标志位u状态寄存器IICSTAT除了指示当前 IIC 总线状态外,还有 2 位 IIC 操作模式控制位和总线启动/结束控制位u地址寄存器IICADD用来保存 S3C2410A作 IIC 从机时的器件地址u移位数据寄存器IICDS -用来发送数据或接收数据第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 IIC
32、总线控制寄存器(IICCON)第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 IICIIC总线状态寄存器(总线状态寄存器(IICSTATIICSTAT)第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 IIC总线地址寄存器(IICADD)IIC发送接收移位寄存器(IICDS)第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 6.2.3 S3C2410A的I2C接口应用实例 S3C2410A I2C总线与使用I2C总线的EEPROM芯片KS24C080C连接电路如图6.2.4所示。图6.2.4
33、 S3C2410A IIC总线与KS24C080C连接电路 第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 程序设计:程序设计: 使用使用I I2 2C C接口主模式向接口主模式向CAT1025CAT1025写入写入1010字节数据,然后字节数据,然后读出校验,若校验通过则蜂鸣器响读出校验,若校验通过则蜂鸣器响1 1声,否则不断地蜂鸣声,否则不断地蜂鸣报警报警 对 I2C 接口进行初始化时,首先要设置相应 I/O为 IICSDA、IICSCL 功能引脚,然后通过 IICCON 寄存器来设置 IIC 总线时钟,并使能 IIC 中断(标志),通过 IICSTAT
34、 寄存器来设置 IIC 接口为主发送模式。 第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 RpRpVDDSCLSDASDA出SDA入SCL入SCL出SCLSDA器件1器件2I2C BUSI2C应用示例 S3C2410A在该模式下作为主控器,向从机发送数据。数据流向如下图所示:主机发送S3C2410A(主)第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 RpRpVDDSCLSDASDA出SDA入SCL入SCL出SCLSDA器件1器件2I2C
35、 BUSI2C应用示例 S3C2410A在该模式下作为主控器,接收从机发出的数据。数据流向如下图所示:主机接收S3C2410A(主)第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 主模式主模式/ /接收接收数据数据第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 初始化初始化IICIIC总线总线void InitI2C(void) / 设置管脚连接 rGPECON = (rGPECON & 0 x0FFFFFFF) | 0 xA0000000; / 设置IIC口使能,GPE14、GPE15分别为SCL和SDA rGP
36、EUP = rGPEUP | 0 xC000; / 禁止内部上拉电阻 / 设置IIC控制寄存器 (使能ACK位时才能接收从机的应答位) rIICCON = IICCON_DACK; /IICCON_DACK=(17) | (16) | (15) | (00) / 设置IIC为主机模式 rIICSTAT = (36)|(14); / 从机地址 (作主机时没有用) rIICADD = 0 x10; 第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 启动启动IIC总线,发送从器件地址
37、总线,发送从器件地址int StartI2C(uint8 sla) uint32 i;rIICDS = sla;/ 设置从机地址if(sla&0 x01) rIICSTAT = (26)|(15)|(14);/ 主接收模式,发送使能,启动总线rIICCON = IICCON_DACK;/ 若是重启总线,则需要有此操作 else rIICSTAT = (36)|(15)|(14); / 主发送模式,发送使能,启动总线 / 等待操作完成 while(rIICCON&0 x10) = 0); / 判断操作是否成功 (总线仲裁和从机应答) if(rIICSTAT&0 x09)
38、= 0) return(TRUE); else / 发送结束信号 if(sla&0 x01) rIICSTAT = (26)|(05)|(14); else rIICSTAT = (36)|(05)|(14);rIICCON = IICCON_DACK; for(i=0; i5000; i+); / 等待结束信号产生完毕 return(FALSE); / end of if(rIICSTAT&0 x09) = 0).else. 第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计
39、嵌入式系统设计 IICIIC发送发送1 1字节数据,并接收应答位字节数据,并接收应答位int I2C_SendByte(uint8 dat) uint32 i;rIICDS = dat;/ 将数据写入I2C数据寄存器rIICCON = IICCON_DACK;/ 清除中断标志,允许发送数据操作/ 等待操作完成 while(rIICCON&0 x10) = 0); / 判断操作是否成功 (总线仲裁和从机应答) if(rIICSTAT&0 x09) = 0) return(TRUE); else / 发送结束信号rIICSTAT = (36)|(05)|(14);rIICCON =
40、 IICCON_DACK;for(i=0; i5000; i+); / 等待结束信号产生完毕 return(FALSE); 第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 IICIIC接收接收1 1字节数据,并发送应答位字节数据,并发送应答位int I2C_RcvByteA(uint8 *dat) uint32 i;/ 允许接收数据rIICCON = IICCON_DACK;/ 等待接收数据操作完成 while(rIICCON&0 x10) = 0); / 判断操作是
41、否成功 (总线仲裁) if(rIICSTAT&0 x08) != 0) / 发送结束信号rIICSTAT = (26)|(05)|(14);rIICCON = IICCON_DACK;for(i=0; i5000; i+); / 等待结束信号产生完毕return(FALSE); *dat = rIICDS;/ 读取数据return(TRUE); 第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 结束结束IICIIC总线总线void StopI2C(uint8 send)
42、 uint32 i;if(send) /主发送模式时为1,否则为0 rIICSTAT = (36)|(05)|(14); / 发送结束信号else rIICSTAT = (26)|(05)|(14); / 发送结束信号 rIICCON = IICCON_DACK;for(i=0; i5000; i+);/ 等待结束信号产生完毕第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 6.4 SPI6.4 SPI接口接口 SPI(Serial Peripheral Interface)一般称为串行外设接口,是Motorola在其MC68HCxx微处理器系列中定义的一种标
43、准接口,实现了一个串行同步协议,目前在嵌入式系统中得到了广泛的应用。SPI采用同步、全双工串行传输技术,业内也称为同步串行总线接口 SPI接口可以用来连接存储器、A/D转换器、D/A转换器、实时时钟日历、LCD驱动器、传感器、音频芯片,甚至其他处理器等。6.4.1 SPI接口原理与结构1.原理第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 一个SPI总线可以连接多个主机和多个从机。在同一时刻只允许一个主机操作总线,即被主设备选中的那个从设备,能与主设备通信。其他未被选中的从设备不能与主设备通信。 串行时钟由主机产生,当主机发送一字节数据(通过MOSI)的同时
44、,从机返回一字节数据(通过MISO)。第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 使用SPI通信需要4个引脚,分别为:引脚名称类型描述SCK输入/输出串行时钟,用于同步SPI接口间数据传输的时钟信号。该时钟信号总是由主机输出。nSS输入从机选择,SPI从机选择信号是一个低有效信号,用于指示被选择参与数据传输的从机。每个从机都有各自特定的从机选择输入信号。MISO输入/输出主入从出,MISO信号是一个单向的信号,它将数据由从机传输到主机。MOSI输入/输出主出从入,MOSI信号是一个单向的信号,它将数据从主机传输到从机。2.SPI电气连接SPI主机S3C2
45、410ASPI从机1SPI从机2nSSSPI BUSnSSnSS作SPI主机时,SS要接上拉电阻第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 MOSI信号由主机产生,从机接收。在有些芯片上,MOSI只被简单的标为串行输入(SI),或者串行数据输入(SDI)。MISO信号由从机产生,不过还是在主机的控制下产生的。在一些芯片上,MISO有时被称为串行输出(SO)或串行数据输出(SDO)。外设片选信号通常只是由主机的备用I/O引脚产生的。第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 S3C2410包含有两个串行外围设备接口(
46、SPI口),每个SPI口都有两个分别用于发送和接收的8位移位寄存器,在一次SPI通信当中数据被同步发送(串行移出)和接收(串行移入)。 每个SPI通道有4个I/O引脚信号与SPI传输有关,2个SPI通道使用以下引脚信号传输:SPICLK1:0SPIMISO1:0SPIMOSI1:0nSS1:06.4.2 S3C2410A的SPI接口电路1. 内部结构第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 8位串行数据的速率由相关的控制寄存器(SPPREn)的内容决定。如果只想发送,接收到的是一些虚拟的数据。另外,如果只想接收,发送的数据也可以是一些虚拟的“1”。 当
47、器件作为主机时,使用一个IO引脚拉低相应从机的选择引脚(nSS),传输的起始由主机发送数据来启动,时钟(SCK)信号由主机产生。通过MOSI发送数据,同时通过MISO引脚接收从机发出的数据。 当器件作为从机时,传输在从机选择引脚(nSS)被主机拉低后开始,接收主机输出的时钟信号,在读取主机数据的同时通过MISO引脚输出数据。第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 时钟相位为1时钟前沿数据输出时钟后沿数据采样时钟信号极性0极性1从机选择时钟相位为0时钟前沿数据采样时钟后
48、沿数据输出2.SPI传输时序时钟前沿输出时钟后沿采样时钟前沿采样时钟后沿输出第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 名称描述访问复位值SPI0名称SPI1名称SPCONnSPI控制寄存器。该寄存器控制SPI的操作模式。读写0SPCON0SPCON1SPSTAnSPI状态寄存器。该寄存器显示SPI的状态。只读01SPSTA0SPSTA1SPPINnSPI引脚控制寄存器。读写02SPPIN0SPPIN1SPPREnSPI波特率预分频寄存器。该寄存器控制主机SCK的频率。读写0SPPRE0SPPRE1SPRDATnSPI接收数据寄存器。该寄存器存放SPI口
49、接收到的数据。读0SPRDAT0SPRDAT1SPTDATnSPI发送数据寄存器。该寄存器存放待SPI口发送的数据。读写0SPTDAT0SPTDAT16.4.3 SPI接口寄存器及操作1.寄存器第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 SPI寄存器描述SPI控制寄存器 SPCONn寄存器包含一些可编程位来控制SPI功能模块的功能,该寄存器必须在数据传输之前进行设定。第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 SPI寄存器描述SPI状态寄存器 SPSR寄存器为只读寄存器,用于监视SPI功能模块的状态,包括一般性功能和异常状况。第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口 嵌入式系统设计嵌入式系统设计 SPI寄存器描述SPI引脚寄存器当一个SPI系统被允许时,nSS之外的引脚的数据传输方向都由SPCONn的MSTR位控制,nSS引脚总是输入。当SPI是一个主设备是,nSS引脚用于检测多主设备错误(如果SPPIN的ENMUL位被使能),另外还需要一个GPIO 来选择从设备。如果SPI被配置为从设备,nSS引脚用来被选择为从设备。第第6 6章章 嵌入式系统总线接口嵌
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年合肥财经职业学院单招职业技能考试题库与答案详解
- 2026年山东城市建设职业学院单招职业适应性测试题库及答案详细解析
- 2026年湖南吉利汽车职业技术学院单招综合素质考试题库附答案详解
- 2026年四川省雅安市高职单招职业技能考试题库有答案详解
- 2026年正德职业技术学院单招职业适应性测试题库有答案详解
- 2026年河北工艺美术职业学院单招职业适应性测试题库带答案详解
- 2026年广东省阳江市高职单招职业技能考试题库带答案详解
- 2026年长垣烹饪职业技术学院单招综合素质考试题库与答案详解
- 2026年上海健康医学院单招综合素质考试题库有答案详解
- 2026年运城幼儿师范高等专科学校单招综合素质考试题库有答案详解
- 读书的力量:因声求气以读悟读-《孙权劝学》课件
- DB37 T 2320-2013 海洋大气区钢筋混凝土构筑物涂装防腐 技术规程
- 投诉管理制度及流程
- 物联网数据处理
- 绿化养护作业指导书
- 战略管理徐飞版
- GB/T 5324-2024棉与涤纶混纺本色纱线
- 四年级数学(下)全册先学后教,当堂训练教案
- 2023年北京市专升本考试生理学护理学专业测试题含解析
- 管道非开挖修复方案
- 设计转换控制程序
评论
0/150
提交评论