第6章-嵌入式系统总线接口课件

PPT
  • 阅读 96 次
  • 下载 0 次
  • 页数 93 页
  • 大小 3.896 MB
  • 2022-12-05 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
第6章-嵌入式系统总线接口课件
可在后台配置第一页与第二页中间广告代码
第6章-嵌入式系统总线接口课件
可在后台配置第二页与第三页中间广告代码
第6章-嵌入式系统总线接口课件
可在后台配置第三页与第四页中间广告代码
第6章-嵌入式系统总线接口课件
第6章-嵌入式系统总线接口课件
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 93
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
文本内容

【文档说明】第6章-嵌入式系统总线接口课件.ppt,共(93)页,3.896 MB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-92618.html

以下为本文档部分文字说明:

第6章嵌入式系统总线接口《嵌入式系统设计》嵌入式系统设计—基于ARM9微处理器S3C2410A第6章嵌入式系统总线接口第6章嵌入式系统总线接口《嵌入式系统设计》6.1串行(Uart)接口掌握ARM的Uart工作原理掌握Uart寄存器配置方法学习编程实现ARM的UART通讯第6章

嵌入式系统总线接口《嵌入式系统设计》6.1.1串行接口基本原理与结构1.串行通信概述常用的数据通信方式有并行通信和串行通信两种。当两台数字设备之间传输距离较远时,数据往往以串行方式传输。串行通信具有传输线少、成本低等优点,特别适合远距离传送。①串行数据通信模式串行数据通信模式

有单工通信、半双工通信和全双工通信3种基本的通信模式。第6章嵌入式系统总线接口《嵌入式系统设计》②异步串行通信方式●字符的格式每个字符传送时,必须前面加一个起始位,后面加上1、1.5或2位停止位。例如ASCII码传送时,一帧数据的组成是:前面

1个起始位,接着7位ASCII编码,再接着一位奇偶校验位,最后一位停止位,共10位。●波特率传送数据位的速率称为波特率,用位/秒(bit/s)来表示,称之为波特。异步通信的波特率的数值通常为:150、300、600、1200、2400、

4800、9600、115200、14400、28800等,数值成倍数变化。●校验位在一个有8位的字节(byte)中,其中必有奇数个或偶数个的“1”状态位。第6章嵌入式系统总线接口《嵌入式系统设计》异步串行通信中的字符传送格式开始前,线路处于空闲状态,连续多个“1”;开始

时,先发一个“0”作为起始位;然后是二进制数据和奇偶校验位(可选);最后是一个及一个以上的“1”作为停止位;第6章嵌入式系统总线接口《嵌入式系统设计》RS232-C是美国电子工业协会(EIA)制定的串行通讯标准;RS232是一个全双工的通讯标准,它可以同时进

行数据接收和发送的工作;RS232标准包括一个主通道和一个辅助通道,在多数情况下主要使用主通道,即RXD、TXD、GND信号;2.RS232概述第6章嵌入式系统总线接口《嵌入式系统设计》DB-25/DB-9引脚定义第6章嵌入式系统总线接口《嵌入式系统设计》RS

-232C接口通信的两种基本连接方式第6章嵌入式系统总线接口《嵌入式系统设计》TTL电平:S3C2410A使用TTL电平RS232电平:双极性信号逻辑电平,它是一套负逻辑定义-3V到-25V之间的电平表示逻辑“1”+3V到+25V之间的电平表示逻辑“0”电平转

换电路:常用专门的RS-232接口芯片,如SP3232、SP3220等,在TTL电平和RS-232电平之间实现相互转换。3.电平转换第6章嵌入式系统总线接口《嵌入式系统设计》第6章嵌入式系统总线接口《嵌入式系统设计》1.S3

C2410A的UART结构S3C2410的UART(通用异步串行口)有三个独立的异步串行I/O端口:UART0、UART1、UART2UART支持的最高波特率达230.4kbps6.1.2S3C2410A的UART第6章嵌入式系统总线接口《嵌入式系统

设计》每个UART包含:波特率发生器、接收器、发送器和控制单元波特率发生器以PCLK或UCLK为时钟源发送器和接收器各包含1个16字节的FIFO和移位寄存器当发送数据的时候,数据可以先写到FIFO然后拷贝到发送移位寄存器,然后从数据输出端口

(TxDn)依次被移位输出被接收的数据也同样可以从接收端口(RxDn)移位输入到移位寄存器,然后拷贝到FIFO中第6章嵌入式系统总线接口《嵌入式系统设计》1.在使用UART之前需要设置的寄存器UART内部结构示意图-以Uart0为例FIFO控制中断使能及模式选择UART格式设

置波特率设置UTXHnShifterTxD0URXHnShifterRxD0ULCONnUTRSTATnUCONnAPB接口UFCNn与CPU内核相连ULCONnUFCONnUBRDIVnUCONn第6章嵌入式系统总线接口《嵌入式系统设计》2.发送数据的通道UART内部结

构示意图CPU内核通过APB接口对UART的寄存器进行读写访问发送缓存发送移位寄存器UTXHnShifterTxD0URXHnShifterRxD0ULCONnUTRSTATnUCONnAPB接口UFCONn与CPU内核相连UTX

HnUBRDIVn第6章嵌入式系统总线接口《嵌入式系统设计》3.接收数据的通道UART内部结构示意图接收缓存接收移位寄存器U0RBRU0RSRAPB接口UTXHnShifterTxD0URXHnShifterRxD0ULCONnUTRSTATnUCONnUFCONn与CPU内

核相连URXHnUBRDIVn第6章嵌入式系统总线接口《嵌入式系统设计》4.通信过程中可能影响的标志位UART内部结构示意图中断标志UART0当前状态U0RBRU0RSRAPB接口UTXHnShifterT

xD0URXHnShifterRxD0ULCONnUTRSTATnUCONnUFCONn与CPU内核相连UCONnUTRSTATnUBRDIVn第6章嵌入式系统总线接口《嵌入式系统设计》UART相关寄存器

描述——Uart行控制寄存器UTXHnShifterTxD0URXHnShifterRxD0ULCONnUTRSTATnUCONnAPB接口UFCNn与CPU内核相连ULCONnUBRDIVnP11D0D1D2D3D4D5D6D70位76[

5:3]2[1:0]功能保留红外/正常模式选择奇偶校验模式选择停止位字长ULCON寄存器:停止位(1~2位)数据(5~8位)奇偶校验位起始位第6章嵌入式系统总线接口《嵌入式系统设计》UART0相关寄存器

描述字长:这些位控制数据长度。00:5位字符长度;01:6位字符长度;10:7位字符长度;11:8位字符长度;UTXHnShifterTxD0URXHnShifterRxD0ULCONnUTRSTATnUCONnAPB接口UFCNn与CPU内核相连ULCONnUBRDIVn位76[5:3]2

[1:0]功能保留红外/正常模式选择奇偶校验模式选择停止位字长——Uart行控制寄存器第6章嵌入式系统总线接口《嵌入式系统设计》UART0相关寄存器描述停止位:控制每帧数据包含的停止位个数。0:1个停止位;1:2个停止位;

UTXHnShifterTxD0URXHnShifterRxD0ULCONnUTRSTATnUCONnAPB接口UFCNn与CPU内核相连ULCONnUBRDIVn位76[5:3]2[1:0]功能保留红外/正常模式选择奇偶校验模式选择停止位字长——Uart行控制

寄存器第6章嵌入式系统总线接口《嵌入式系统设计》UART相关寄存器描述奇偶选择:设置奇偶校验类型。0XX:无奇偶校验;100:奇校验;101:偶校验;110:强制奇偶校验/校验1;111:强制奇偶校验/校验0;

UTXHnShifterTxD0URXHnShifterRxD0ULCONnUTRSTATnUCONnAPB接口UFCNn与CPU内核相连ULCONnUBRDIVn位76[5:3]2[1:0]功能保留红外/正常模式选择奇偶校验

模式选择停止位字长——Uart行控制寄存器第6章嵌入式系统总线接口《嵌入式系统设计》UART线控寄存器(ULCONn)的位功能第6章嵌入式系统总线接口《嵌入式系统设计》UART相关寄存器描述——Uart控制寄存器位10987654[3:2][1:0]功能波特率时钟选择发送中断请求

类型选择接收中断请求类型选择Rx超时中断使能控制接收错误状态中断使能控制回送模式选择保留发送模式选择接收模式选择波特率时钟选择:0:使用PCLK1:使用UclkUTXHnShifterTxD0URXHnShifterRxD0ULCONnUTRSTATnUCONnAPB接口UFCNn与CPU内核相

连UCONnUBRDIVn第6章嵌入式系统总线接口《嵌入式系统设计》UART相关寄存器描述位210功能发送器空状态位发送缓冲器空状态位接收缓冲器状态位——Uart状态寄存器发送器空状态位:0:发送器未空1:发送器、发送缓冲器均空。U0RBRU0RSRUTXHnShifterTxD0U

RXHnShifterRxD0ULCONnUTRSTATnUCONnUFCONn与CPU内核相连UTRSTATnUBRDIVnAPB接口第6章嵌入式系统总线接口《嵌入式系统设计》UART相关寄存器描述位210功能发送器

空状态位发送缓冲器空状态位接收缓冲器状态位——Uart状态寄存器发送缓冲器空状态位:0:未空;1:空U0RBRU0RSRUTXHnShifterTxD0URXHnShifterRxD0ULCONnUTRSTATnUCONnUFCONn与CPU内核相连UTRSTAT

nUBRDIVnAPB接口第6章嵌入式系统总线接口《嵌入式系统设计》UART相关寄存器描述位210功能发送器空状态位发送缓冲器空状态位接收缓冲器状态位——Uart状态寄存器接收缓冲器空状态位:0:空;1:有

数据U0RBRU0RSRUTXHnShifterTxD0URXHnShifterRxD0ULCONnUTRSTATnUCONnUFCONn与CPU内核相连UTRSTATnUBRDIVnAPB接口第6章嵌入式系统总线接口《

嵌入式系统设计》第6章嵌入式系统总线接口《嵌入式系统设计》UART相关寄存器描述UTXHn描述复位值7:0发送数据缓冲寄存器,保存发送数据未定义——发送/接收数据缓冲寄存器UTXHnShifterTxD0URXHnShifterRxD0ULCONnUTRSTATnUCONnUFCONn与

CPU内核相连UTXHnUBRDIVnAPB接口URXHnURXHn描述复位值7:0接收数据缓冲寄存器,保存接收数据未定义第6章嵌入式系统总线接口《嵌入式系统设计》UART相关寄存器描述名称描述复位值UBRDIV[15:0]波特率系数寄存寄存器:

决定串行发送接收时钟率未定义——Uart波特率系数寄存器UTXHnShifterTxD0URXHnShifterRxD0ULCONnUTRSTATnUCONnAPB接口UFCNn与CPU内核相连UBRDIVn第6章嵌入式系统总线接口《嵌入式系统设计》通过设置UCONn寄

存器选择UART时钟是由S3C2410A的系统时钟(PCLK)产生还是由外部UART设备的时钟(UCLK)产生。波特率的大小可以通过设置波特率寄存器(UBRDIVn)控制,使用PCLK时的计算公式如下:UBRDIVn=(in

t)(PCLK/(bpsx16))-1使用UCLK时的计算公式如下:UBRDIVn=(int)(UCLK/(bpsx16))-1其中PCLK是系统时钟频率,UCLK是UART设备时钟。使用PCLK,在40MHz的情况

下,当波特率取115200时UBRDIVn=(int)(40000000/(115200x16))–1=20波特率计算第6章嵌入式系统总线接口《嵌入式系统设计》2.UART工作过程(以UART0为例)串口初始化首先要设置相应I/O

为TXD0、RXD0功能引脚;然后通过ULCON0寄存器来设置串口数据格式;然后通过UCON0寄存器来设置串口工作模式;最后通过UBRDIV0来设置通讯波特率;第6章嵌入式系统总线接口《嵌入式系统设计》串口收发数

据发送:将待发送数据写入UTXH0寄存器,然后通过读取UTRSTAT0寄存器的值判断数据是否发送完成;接收:通过读取UTRSTAT0寄存器的值判断是否接收到数据,如果接收到数据,则可以从URXH0寄

存器中读出数据。第6章嵌入式系统总线接口《嵌入式系统设计》6.1.3与S3C2410AUART连接的串行接口电路1.S3C2410AUART与RS-232C的接口电路在图6.1.7中,包含有UART0和UART1与RS-232C的接口电路,通过9芯的D型插头与外

设连接。也可设计数据发送与接收的状态指示LED,当有数据通过串行口传输时,LED闪烁,便于用户掌握其工作状态,以及进行软、硬件的调试。第6章嵌入式系统总线接口《嵌入式系统设计》图6.1.7S3C2410A的RS-232C接口电路RS232电平TTL电平第6章嵌入式系统总线接口《嵌

入式系统设计》6.1.4S3C2410AUART编程实例本程序实例实现从UART0接收数据,然后分别从UART0和UART1发送出去。其功能可以把键盘敲击的字符通过PC机的串口发送给ARM系统上的UART0

,ARM系统上的UART0接收到字符后,再通过UART0和UART1送给PC机,这样就完成了串口间的收发数据。要实现以上数据的收发功能,需要编写的主要代码如下。第6章嵌入式系统总线接口《嵌入式系统设计》第6章嵌入式系统总线接口《嵌入式系统设计》2.主函数实现的

功能为从UART0接收字符,然后将接收到的字符再分别从UART0和UART1送出去,其中Uart_Select(n)用于选择使用的传输通道为UARTn。代码如下:第6章嵌入式系统总线接口《嵌入式系统设计》第6章嵌入式系统总线接口《嵌入式系统设计》4

.发送数据其中whichUart为全局变量,指示当前选择的UART通道,使用串口发送一个字节的代码如下:第6章嵌入式系统总线接口《嵌入式系统设计》5.接收数据如果没有接收到字符则返回0。使用串口接收一个字符的代码如下:第6章嵌入式系统总线接口《嵌入式系统设计》对串口进行初始化时,首

先要设置相应I/O为TXD0、RXD0功能引脚,然后通过ULCON0寄存器来设置串口数据格式,通过UCON0寄存器来设置串口工作模式,最后通过UBRDIV0来设置通讯波特率。使用串口发送数据时,将待发送数据写入UTXH0寄存器,然后通过读取UTRSTAT0寄存器的值判断数据是否发送完成。

当然,实际代码也可以先等待UTXH0寄存器为空(通过读取UTRSTAT0寄存器的值判断),再将数据写入UTXH0寄存器。进行串口数据接收时,通过读取UTRSTAT0寄存器的值判断是否接收到数据,如果接收到数据,则可以从URXH0寄存器中读出数据。

总结第6章嵌入式系统总线接口《嵌入式系统设计》6.2I2C接口6.2.1I2C接口基本原理与结构I2CBUS(InterIntegratedCircuitBUS,内部集成电路总线)是由Philips公司推出的二线制串行扩展总线,用于连接微控制器及其外围设备。如下图所示,在I2C总

线上,只需要两条线—串行数据SDA线和串行时钟SCL线,它们用于总线上器件之间的信息传递。SDA和SCL都是双向的。每个器件都有一个唯一的地址(读写不一样)以供识别,而且各器件都可以作为一个发送器或接收器(由器件的功能决定)。在标准模式下,总线数据传输的速度为100kbit/s,在高速模式下,可

达400kbit/s;I2C总线有如下操作模式:主发送模式、主接收模式、从发送模式、从接收模式。下面介绍其通用传输过程、信号及数据格式。第6章嵌入式系统总线接口《嵌入式系统设计》I2C简介——电气连接I2C总线接口均为开漏或开集电

极输出,因此需要为总线增加上拉电阻Rp。RpRpVDDSCLSDASDA出SDA入SCL入SCL出SCLSDA器件1器件2I2CBUS总线速率越高,总线上拉电阻就越小,100Kbit/s总线速率,通常使用5.1K欧姆的上拉电阻第6章嵌入式系统总线接口《嵌入式系统设

计》(1)I2C总线的启动和停止信号当I2C接口处于从模式时,要想数据传输,必须检测SDA线上的启动信号,启动信号由主器件产生。如下图所示,在SCL信号为高时,SDA产生一个由高变低的电平变化,即产生一个启动信号。当I2C总线上产生了启动信号后,那么这条

总线就被发出启动信号的主器件占用了,变成“忙”状态;如下图所示,在SCL信号为高时,SDA产生一个由低变高的电平变化,产生停止信号。停止信号也由主器件产生,作用是停止与某个从器件之间的数据传输。当I2C总线上产生了一个停止信号后,那么在几个时钟周期之后总线就被释放,变成“闲”

状态。第6章嵌入式系统总线接口《嵌入式系统设计》主器件产生一个启动信号后,它还会立即送出一个从地址,用来通知将与它进行数据通信的从器件。1个字节的地址包括7位的地址信息和1位的传输方向指示位,如果第7位为“0”,表示马上要进行一个写操作;如果为“1”,表示马上要进行一个读操作

。第6章嵌入式系统总线接口《嵌入式系统设计》(2)数据传输格式SDA线上传输的每个字节长度都是8位,每次传输中字节的数量是没有限制的。在起始条件后面的第一个字节是地址域,之后每个传输的字节后面都有一个应答(ACK)位。(3)应答信号I2C总线数据传送时,每传送一个字节数据后都

必须有应答信号。主控器接收数据时,如果要结束通信时,将在停止位之前发送非应答信号。第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=重复起始信号第6章嵌入式系统总线接口《嵌入式系统设计》第6章嵌入式系统总线接口《嵌入式系统设计》(4)I2C总线的数据传输过程①开始:主设备产生启动信号,表明数据传输开始。②地址:主设备发送地址信息,包含7位的从设备地址和1位的数据方向指示位(读或写位,表

示数据流的方向)。③数据:根据指示位,数据在主设备和从设备之间进行传输。数据一般以8位传输,最重要的位放在前面;具体能传输多少量的数据并没有限制。接收器产生1位的ACK(应答信号)表明收到了每个字节。传输过程可以被中止和重新开始。④停止:主设备产生停止信号,结束数

据传输。第6章嵌入式系统总线接口《嵌入式系统设计》6.2.2S3C2410A的I2C接口S3C2410A提供一个I2C总线接口,其模块框图如图6.2.3所示,具有一个专门的串行数据线和串行时钟线。它有主设备发送模式、主设备接收模式、从设备发送模式和从

设备接收模式4种操作模式。控制S3C2410AI2C总线操作,需要写数据到IICCON(I2C总线控制寄存器)、IICSTAT(I2C总线控制/状态寄存器)、IICDS(I2C总线Tx/Rx数据寄存器)和IICADD(I2C总线地址寄存器)。第

6章嵌入式系统总线接口《嵌入式系统设计》图6.2.3S3C2410A处理器I2C串行总线框图第6章嵌入式系统总线接口《嵌入式系统设计》IIC相关寄存器控制寄存器IICCON—用于设置IIC总线时钟和中断(标志)使能,还有

1位中断标志位状态寄存器IICSTAT—除了指示当前IIC总线状态外,还有2位IIC操作模式控制位和总线启动/结束控制位地址寄存器IICADD—用来保存S3C2410A作IIC从机时的器件地址移位数据寄存

器IICDS--用来发送数据或接收数据第6章嵌入式系统总线接口《嵌入式系统设计》应答使能*7I2C总线应答使能位0:禁止1:使能在输出模式下,IICSDA在ACK时间被释放在输入模式下,IICSDA在ACK时间被拉低0输出时钟源选

择6I2C总线发送时钟预分频选择位0:IICCLK=fPLCK/161:IICCLK=fPLCK/5120发送/接受中断使能**5I2C总线中断使能位0:禁止1:使能0中断未决位***4I2C总线未处理中断标志,不能对这一位写入1,置1使系统自动产生的。当该位被置1时,

IICSCL信号将被拉低,I2C传输也停止了,如果想要恢复操作,将该位清零0:当读出0时,没有发生中断;当写入0时,清除未决定并恢复中断响应1:当读出1时;发生了未决中断,不可以进行写入操作0发送时钟值3:0发送时钟预分频器的值,这4位预分

频器的值决定了I2C总线,运行发送的时钟频率,对应关系如下Tx_clock=IICCLK/(IICCON[3:0]+1)未定义IIC总线控制寄存器(IICCON)第6章嵌入式系统总线接口《嵌入式系统设计》IIC总线状态寄存器

(IICSTAT)模式选择7:6I2C总线主从,发送/接收模式选择位00:从接受模式;01:从发送模式10:主接收模式;11:主发送模式00忙信号状态/起始/停止条件5I2C总线忙信号状态位0:读出为0,表示状态不忙;写入0,

产生停止条件1:读出为1,表示状态忙;写入1,产生起始条件IICDS中的数据在起始条件自动被送出0串行数据输出使能4I2C总线串行数据输出使能/禁止位0:禁止发送/接受1:使能发送/接受0仲裁位状态3I2C总线仲裁程序状态标志位0:总线仲裁成功1:总线仲裁失败0从地址状态标志位2I2C总线从地址状

态标志位0:如果探测到起始或停止条件,则清零1:如果接收到的从器件地址与保存在IICADD中的地址相符,则置100地址状态标志位1应答位(最后接收到的位为)状态标志0:如果探测到起始或停止条件,则清零1:如果接收到的从器件地址为0,则置10应答位状态标志0I2C总线从地址状

态标志位0:如果接收到的位为0(ACK接收到)1:如果接收到的位为1(ACK没有接收到)0第6章嵌入式系统总线接口《嵌入式系统设计》IIC总线地址寄存器(IICADD)从器件地址7:07位从器件地址;如果IICSTAT中的串行数据输出使能位为0

;IICADD就变为写使能,IICADD总为可读XXXXXXXXIIC发送接收移位寄存器(IICDS)数据移位寄存器7:0I2C接口发送/接收数据所使用的8位数据移位寄存器若IICSTAT中的串行数据输出使能为1,则IICDS写使能,IICDS总为可读XXXXXXXX第6章嵌入式系统总

线接口《嵌入式系统设计》6.2.3S3C2410A的I2C接口应用实例S3C2410AI2C总线与使用I2C总线的EEPROM芯片KS24C080C连接电路如图6.2.4所示。图6.2.4S3C2410AIIC总线与KS24C0

80C连接电路第6章嵌入式系统总线接口《嵌入式系统设计》程序设计:使用I2C接口主模式向CAT1025写入10字节数据,然后读出校验,若校验通过则蜂鸣器响1声,否则不断地蜂鸣报警对I2C接口进行初始化时,首

先要设置相应I/O为IICSDA、IICSCL功能引脚,然后通过IICCON寄存器来设置IIC总线时钟,并使能IIC中断(标志),通过IICSTAT寄存器来设置IIC接口为主发送模式。第6章嵌入式系统总线接口《嵌入式系统设计》RpRpVDDSCLSDASDA出S

DA入SCL入SCL出SCLSDA器件1器件2I2CBUSI2C应用示例S3C2410A在该模式下作为主控器,向从机发送数据。数据流向如下图所示:——主机发送S3C2410A(主)第6章嵌入式系统总线接

口《嵌入式系统设计》第6章嵌入式系统总线接口《嵌入式系统设计》RpRpVDDSCLSDASDA出SDA入SCL入SCL出SCLSDA器件1器件2I2CBUSI2C应用示例S3C2410A在该模式下作为主控器,接收从机发出的数据。数据流

向如下图所示:——主机接收S3C2410A(主)第6章嵌入式系统总线接口《嵌入式系统设计》主模式/接收数据第6章嵌入式系统总线接口《嵌入式系统设计》初始化IIC总线voidInitI2C(void){//设置管脚连接rGPECON=(rGPECON&

0x0FFFFFFF)|0xA0000000;//设置IIC口使能,GPE14、GPE15分别为SCL和SDArGPEUP=rGPEUP|0xC000;//禁止内部上拉电阻//设置IIC控制寄存器(使能ACK位时才能接收从机的应答位)rIICCON=IICCON_DACK;//IICCON_DA

CK=((1<<7)|(1<<6)|(1<<5)|(0<<0))//设置IIC为主机模式rIICSTAT=(3<<6)|(1<<4);//从机地址(作主机时没有用)rIICADD=0x10;}第6章嵌入式系统总线接口《嵌入式系统设计》第6章嵌入式系统总线接

口《嵌入式系统设计》启动IIC总线,发送从器件地址intStartI2C(uint8sla){uint32i;rIICDS=sla;//设置从机地址if(sla&0x01){rIICSTAT=(2<<6)|(1<<5)|(1<<4);//

主接收模式,发送使能,启动总线rIICCON=IICCON_DACK;//若是重启总线,则需要有此操作}else{rIICSTAT=(3<<6)|(1<<5)|(1<<4);//主发送模式,发送使能,启动总线}//等待操

作完成while((rIICCON&0x10)==0);//判断操作是否成功(总线仲裁和从机应答)if((rIICSTAT&0x09)==0){return(TRUE);}else{//发送结束信号if(sla&0x01)rIICSTAT=

(2<<6)|(0<<5)|(1<<4);elserIICSTAT=(3<<6)|(0<<5)|(1<<4);rIICCON=IICCON_DACK;for(i=0;i<5000;i++);//等待结束信号

产生完毕return(FALSE);}//endofif((rIICSTAT&0x09)==0)...else...}第6章嵌入式系统总线接口《嵌入式系统设计》第6章嵌入式系统总线接口《嵌入式系统设计》IIC发送1字节数据,并接收应答位intI2C_SendByte(uint8d

at){uint32i;rIICDS=dat;//将数据写入I2C数据寄存器rIICCON=IICCON_DACK;//清除中断标志,允许发送数据操作//等待操作完成while((rIICCON&0x10)==0);//判断操作是否成功(总线仲裁和从机应答)if((rIICST

AT&0x09)==0){return(TRUE);}else{//发送结束信号rIICSTAT=(3<<6)|(0<<5)|(1<<4);rIICCON=IICCON_DACK;for(i=0;i<5000;i++);//等待结束信号产生完毕retur

n(FALSE);}}第6章嵌入式系统总线接口《嵌入式系统设计》第6章嵌入式系统总线接口《嵌入式系统设计》IIC接收1字节数据,并发送应答位intI2C_RcvByteA(uint8*dat){uint32i;//允许接收数据rIICCON

=IICCON_DACK;//等待接收数据操作完成while((rIICCON&0x10)==0);//判断操作是否成功(总线仲裁)if((rIICSTAT&0x08)!=0){//发送结束信号rIICSTAT=(2<<6)|(0<<5)|(1<<4);rIICCON

=IICCON_DACK;for(i=0;i<5000;i++);//等待结束信号产生完毕return(FALSE);}*dat=rIICDS;//读取数据return(TRUE);}第6章嵌入式系统总

线接口《嵌入式系统设计》第6章嵌入式系统总线接口《嵌入式系统设计》结束IIC总线voidStopI2C(uint8send){uint32i;if(send)//主发送模式时为1,否则为0{rIICSTAT=(3<<6)|(0<<5)|(1<<4

);//发送结束信号}else{rIICSTAT=(2<<6)|(0<<5)|(1<<4);//发送结束信号}rIICCON=IICCON_DACK;for(i=0;i<5000;i++);//等待结束信号产生完毕}第6章嵌入式系统总线接口《嵌入式系统设计》6.4SPI

接口SPI(SerialPeripheralInterface)一般称为串行外设接口,是Motorola在其MC68HCxx微处理器系列中定义的一种标准接口,实现了一个串行同步协议,目前在嵌入式系统中得到了广泛的应用。SPI采用同步、全双工串行传输技术,业内

也称为同步串行总线接口SPI接口可以用来连接存储器、A/D转换器、D/A转换器、实时时钟日历、LCD驱动器、传感器、音频芯片,甚至其他处理器等。6.4.1SPI接口原理与结构1.原理第6章嵌入式系统总线接口《嵌入式系统设计》一个SPI总线可以连接多个主

机和多个从机。在同一时刻只允许一个主机操作总线,即被主设备选中的那个从设备,能与主设备通信。其他未被选中的从设备不能与主设备通信。串行时钟由主机产生,当主机发送一字节数据(通过MOSI)的同时,从机返回一字节数据(

通过MISO)。第6章嵌入式系统总线接口《嵌入式系统设计》使用SPI通信需要4个引脚,分别为:引脚名称类型描述SCK输入/输出串行时钟,用于同步SPI接口间数据传输的时钟信号。该时钟信号总是由主机输出。nSS输入从机选择,SPI从机选择信号是一个低有效信号,用于指示被选择参与

数据传输的从机。每个从机都有各自特定的从机选择输入信号。MISO输入/输出主入从出,MISO信号是一个单向的信号,它将数据由从机传输到主机。MOSI输入/输出主出从入,MOSI信号是一个单向的信号,它

将数据从主机传输到从机。2.SPI电气连接SPI主机S3C2410ASPI从机1SPI从机2nSSSPIBUSnSSnSS作SPI主机时,SS要接上拉电阻第6章嵌入式系统总线接口《嵌入式系统设计》MOS

I信号由主机产生,从机接收。在有些芯片上,MOSI只被简单的标为串行输入(SI),或者串行数据输入(SDI)。MISO信号由从机产生,不过还是在主机的控制下产生的。在一些芯片上,MISO有时被称为串行输出(SO)或串行数据输出(SD

O)。外设片选信号通常只是由主机的备用I/O引脚产生的。第6章嵌入式系统总线接口《嵌入式系统设计》S3C2410包含有两个串行外围设备接口(SPI口),每个SPI口都有两个分别用于发送和接收的8位移位寄存器,在一次SPI通信当中

数据被同步发送(串行移出)和接收(串行移入)。每个SPI通道有4个I/O引脚信号与SPI传输有关,2个SPI通道使用以下引脚信号传输:SPICLK[1:0]SPIMISO[1:0]SPIMOSI[1:0]nSS[1:0]6.4.2S3C2410A的SPI接口电路1.内

部结构第6章嵌入式系统总线接口《嵌入式系统设计》8位串行数据的速率由相关的控制寄存器(SPPREn)的内容决定。如果只想发送,接收到的是一些虚拟的数据。另外,如果只想接收,发送的数据也可以是一些虚拟的“

1”。当器件作为主机时,使用一个IO引脚拉低相应从机的选择引脚(nSS),传输的起始由主机发送数据来启动,时钟(SCK)信号由主机产生。通过MOSI发送数据,同时通过MISO引脚接收从机发出的数据。当器件作为从机时,传输在从机选择引脚(nSS)被主机拉低后开始,接收主机

输出的时钟信号,在读取主机数据的同时通过MISO引脚输出数据。第6章嵌入式系统总线接口《嵌入式系统设计》第6章嵌入式系统总线接口《嵌入式系统设计》时钟相位为1时钟前沿数据输出时钟后沿数据采样时钟信号极性0极性1从机选择时钟相位为0时钟前沿数据采样时钟后沿数据输出Bit112345678Bi

t1Bit2Bit3Bit4Bit5Bit6Bit7Bit8Bit1Bit2Bit3Bit4Bit5Bit6Bit7Bit8Bit1Bit2Bit3Bit4Bit5Bit6Bit7Bit812345678SCK(CPOL=0)SCK(CPOL=1)SS

ELCPHA=0Cycle#CPHA=0MOSI(CPHA=0)MISO(CPHA=0)CPHA=1Cycle#CPHA=1MOSI(CPHA=1)MISO(CPHA=1)Bit2Bit3Bit4Bit5Bit6Bit7Bit82.SPI传输时序时钟前

沿输出时钟后沿采样时钟前沿采样时钟后沿输出第6章嵌入式系统总线接口《嵌入式系统设计》名称描述访问复位值SPI0名称SPI1名称SPCONnSPI控制寄存器。该寄存器控制SPI的操作模式。读写0SPCON0SPCON1SPSTAnSPI状态寄存器。该寄存器显示SPI的状态。只读01S

PSTA0SPSTA1SPPINnSPI引脚控制寄存器。读写02SPPIN0SPPIN1SPPREnSPI波特率预分频寄存器。该寄存器控制主机SCK的频率。读写0SPPRE0SPPRE1SPRDATnSPI接收数据寄存器。该寄存器存放SPI口接收到的数据。

读0SPRDAT0SPRDAT1SPTDATnSPI发送数据寄存器。该寄存器存放待SPI口发送的数据。读写0SPTDAT0SPTDAT16.4.3SPI接口寄存器及操作1.寄存器第6章嵌入式系统总线接口《嵌入式系统设计》SPI寄存器描述——SPI控制寄存器SPCONn寄存器包含一些可

编程位来控制SPI功能模块的功能,该寄存器必须在数据传输之前进行设定。第6章嵌入式系统总线接口《嵌入式系统设计》SPI寄存器描述——SPI状态寄存器SPSR寄存器为只读寄存器,用于监视SPI功能模块的状态,包括一般性功能和异常状况。第6章嵌入式系统总线接口《

嵌入式系统设计》SPI寄存器描述——SPI引脚寄存器当一个SPI系统被允许时,nSS之外的引脚的数据传输方向都由SPCONn的MSTR位控制,nSS引脚总是输入。当SPI是一个主设备是,nSS引脚用于检测多主设备错误(如果SPPIN的ENMUL位被使能),另外还需要一个GPIO来选择从设备。

如果SPI被配置为从设备,nSS引脚用来被选择为从设备。第6章嵌入式系统总线接口《嵌入式系统设计》SPIMISO(MISO)和SPIMOSI(MOSI)数据引脚是用来接收和发送串行数据。当SPI配置为主设备,SPIMISO(MISO)是主数据输入线,SPIMOSI(MOSI)是主数

据输出线,SPICLK(SCK)是时钟输出线。当SPI为从设备,这些引脚翻转角色。在一个多主机系统中,SPICLK(SCK)、SPIMISO(MISO)和SPIMOSI(MOSI)引脚分别捆绑配置成组。当另一个SPI设备工作在主设备状态并选择S3C2410

ASPI为从设备,一个主SPI将经历多主机错误。当错误被检测时,接下来的措施被立即执行。但是如果你想检测这个错误,你必须预先设置SPPINn的ENMUL位。第6章嵌入式系统总线接口《嵌入式系统设计》SPI寄存器

描述——SPI波特率寄存器作为主机时,SPPRE寄存器控制SCK的频率。如果寄存器的值不符合以上条件,可能会导致产生不可预测的动作。第6章嵌入式系统总线接口《嵌入式系统设计》SPI寄存器描述——SPI发送数据寄存器、接收数据寄存器第6章嵌入式系统总线接

口《嵌入式系统设计》2.SPI接口操作通过SPI接口,S3C2410可以与外设同时发送/接收8位数据。串行时钟线与两条数据线同步,用于移位和数据采样。如果SPI是主设备,数据传输速率由SPPREn寄存器的相关位控制。可

以修改频率来调整波特率寄存器的值。如果SPI是从设备,其他的主设备提供时钟,向SPDATn寄存器中写入字节数据,SPI发送/接收操作就同时启动。某些情况下片选nSS要在向SPDATn寄存器中写入字节数据之前激活。第6

章嵌入式系统总线接口《嵌入式系统设计》3.编程步骤如果ENSCK和SPCONn中的MSTR位都被置位,向SPDATn寄存器写一个字节数据,就启动一次发送。也可以使用典型的编程步骤来操作SPI:设置波特率预分频寄存器(SPPR

En)设置SPCONn配置SPI模块。向SPDATn中写10次0xFF来初始化MMC或SD卡。把一个GPIO(当作nSS)清零来激活MMC或SD卡。发送数据→核查发送准备好标志(REDY=1),之后向SPD

ATn中写数据。第6章嵌入式系统总线接口《嵌入式系统设计》接收数据(1):禁止SPCONn的TAGD位,正常模式→向SPDAT中写0xFF,确定REDY被置位后,从读缓冲区中读出数据。接收数据(2):使能SPCONn的TAGD位,自动发送虚拟数据模式→确定REDY被置位后,从读缓冲区中

读出数据,之后自动开始数据传输。置位GPIO引脚(当作nSS的那个引脚),停止MMC或SD卡。第6章嵌入式系统总线接口《嵌入式系统设计》4.SPI接口电路在ARM开发板上可以采用独立的SPI接口(J602),其

电路如图6.4.5所示。也可以通过PCI插槽引出相应引脚,如通过PCI接口引出,见6.5节PCI接口部分。图6.4.5SPI接口电路第6章嵌入式系统总线接口《嵌入式系统设计》5.S3C2410A的SPI接口编程实例

程序例通过S3C2410A处理器的SPI0口发送数据,SPI1口接收数据,实验时需要把相应信号接到一起:第6章嵌入式系统总线接口《嵌入式系统设计》第6章嵌入式系统总线接口《嵌入式系统设计》第6章嵌入式系统总线接口《嵌入式系统设计》第6章嵌入式系统总线接口《嵌入式系统设计》

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?