三星S3C2440微处理器
MMC/SD/SDIO控制器 特性 兼容 SD 存储器卡规格(1.0 版本)/ MMC 规格(2.11) 16 字(64 字节)数据发送/接收 FIFO 40 位命令寄存器 136 位响应寄存器 8 位预分频逻辑(频率 = 系统时钟 / (P + 1)) 正常和 DMA 数据传输模式(字节、半字或字传输) DMA burst4 存取支持(只支持字传输) 1 位/4 位(宽总线)模式和块/流模式切换支持
MMC/SD/SDIO控制器 SD接口框图
MMC/SD/SDIO控制器 SD 操作 串行时钟线同步 5 根数据线上信息的采样和移位,传输频率是通过设置 SDIPRE 寄存器相应位来控制,可以更改其频率来调整波特率数据寄存器值。 编程过程(通用) 编程 SDI 模块需要以下几个基本步骤: 1. 设置 SDICON 配制适当的时钟和中断使能。 2. 设置 SDIPRE 配制为适当值。 3. 等待为初始化卡的 74 个 SDCLK 时钟周期。
MMC/SD/SDIO控制器 CMD 通路编程 1. 写 32 位命令参数给 SDICmdArg。 2. 决定命令类型并设置 SDICmdCon 来启动命令发送。 3. 当 SDICmdSta 的特定标志置位时确认 SDICMD 通路操作的结束。 4. 如果命令类型为无响应时标志为 CmdSent。 5. 如果命令类型带响应时标志为 RspFin。 6. 通过写'1'到相应位来清除 SDICmdSta 的标志。
MMC/SD/SDIO控制器 DAT 通路编程 1. 写数据超时时间到 SDIDTimer。 2. 写块大小(块长度)到 SDIBSize(通常为 0x80 个字) 3. 确定块方式,宽总线或 DMA 等并通过设置 SDIDatCon 启动数据传输。 4. Tx 数据写数据到数据寄存器(SDIDAT),其中 Tx FIFO 为可用(TFDET 为置位),或一半(TFHalf 为置位),或空(TFEmpty 为置位)。 5. Rx 数据从数据寄存器(SDIDAT)读数据,其中 Rx FIFO 为可用(RFDET 为置位),或满(RFFull 为置位),或一半(RFHalf 为置位),再或最后数据就绪(RFLast 为置位)。 6. 当 SDIDatSta 的 DatFin 标志置位时确认 SDI DAT 通路操作的结束。 7. 通过写'1'到相应位来清除 SDIDatSta 的标志。
MMC/SD/SDIO控制器 SDIO 操作 有两个 SDIO 操作的功能:SDIO 中断接收和读等待请求发生。当 SDICON 寄存器的 RcvIOInt 位和 RwaitEn 位分别有效时这两个功能可操作。
MMC/SD/SDIO控制器 两个功能都有如下步骤和条件。 SDIO 中断 SD 1 位模式中,接受所有范围来自 RxDAT[1]引脚的中断。 SD 4 位模式中,共享数据接收与中断接收的 RxDAT[1]引脚。当中断检测范围(中断时间)为: 1. 单块:A 与 B 之间的时间 - A:数据包的完成后 2 个时钟 - B:下个 withdata 命令的发出结束位的完成 2. 多块、PrdType = 0:A 与 B 之间的时间,C 处重新启动 - B:A 后 2 个时钟 - C:中止命令响应的结束位后 2 个时钟
MMC/SD/SDIO控制器 3. 多块、PrdType = 1:A 与 B 之间的时间,A 处重新启动 - A:数据包的完成后 2 个时钟 - 最后块的情况中,中断时间在 A 时开始,但不结束于 B(由 CMD53 引起) 读等待请求 无论是 1 位模式还是 4 位模式,在以下状况发送读等待请求信号到 TxDAT[2]引脚。 读多块操作中,请求信号在数据块结束后 2 个时钟开始发送。 当用户设置 SDIDatSta 寄存器的 RwaitReq 为 1 时发送结束。
MMC/SD/SDIO控制器 SDI 特殊寄存器 SDI 控制寄存器(SDICON)-------(其余略)
IIC总线接口 IIC(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。IIC总线产生于在80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇。可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。
IIC总线接口 IIC总线最主要的优点是其简单性和有效性。由于接口直接在组件之上,因此IIC总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率支持40个组件。 IIC总线的另一个优点是,它支持多主控multimastering, 其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率,在任何时间点上只能有一个主控。
IIC总线接口 IIC总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送,最高传送速率100kbps。 各种被控制电路均并联在这条总线上,像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有唯一的地址,在信息的传输过程中,IIC总线上并接的每一模块电路既是主控器(或被控器),又是发送器(或接收器),这取决于它所要完成的功能。 CPU发出的控制信号分为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;控制量决定该调整的类别(如对比度、亮度等)及需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。
IIC总线接口 S3C2440A RISC 微处理器可以支持一个多主控 IIC 总线串行接口。一条专用串行数据线(SDA)和一条专用串行时钟线(SCL)传递连接到 IIC 总线的总线主控和外设之间的信息。SDA 和 SCL 线都为双向的。 多主控 IIC 总线模式中,多个 S3C2440A RISC 微处理器可以发送或接收串行数据来自或到从设备。主机S3C2440A 可以通过 IIC 总线启动和结束数据传输。S3C2440A 中的 IIC 总线是使用标准总线仲裁步骤。
IIC总线接口 为了控制多主控 IIC 总线操作,必须写入值到以下寄存器中: 多主控 IIC 总线控制寄存器,IICCON 多主控 IIC 总线控制/状态寄存器,IICSTAT 多主控 IIC 总线 Tx/Rx 数据移位寄存器,IICDS 多主控 IIC 总线地址寄存器,IICADD
IIC总线接口 当释放了 IIC 总线时,SDA 和 SCL 线应该都保持为高电平。一个高到低 SDA 的变化可以启动一个起始条件。SCL 稳定保持在高电平时的一个低到高 SDA 的变化可以启动一个停止条件。 起始和停止条件通常由主设备产生。第一个数据字节为 7 位地址值,其在启动起始条件后放到总线上,可以确定出主设备要选择的从设备。第 8 位是决定传输方向(读或写)。 每个放到 SDA 线上的字节都应该总共为 8 位。字节可以在总线传输操作期间无限制的发送或接收。数据通常从最高有效位(MSB)开始始发送,并且每个字节应该立即通过应答(ACK)位跟上。
IIC总线接口 IIC总线框图
IIC总线接口 S3C2440A 的 IIC 总线接口有 4 种工作模式: 主机发送模式 主机接收模式 从机发送模式 从机接收模式 这些工作模式彼此的功能关系描述如下。
IIC总线接口 起始和停止条件 当 IIC 总线接口不活动时,其通常在从机模式。换句话说,该接口在从 SDA 线上检测到起始条件(当 SCL 时钟信号为高时的一个高到低 SDA 的变化可以启动一个起始条件)之前应该处于从机模式。当接口状态被改为主机模式时,可以起始发送数据到 SDA 上并且产生 SCL 信号。 起始条件可以传输 1 字节串行数据到 SDA 线上,而停止条件可以结束数据的传输。停止条件是当 SCL 为高时的 SDA 线低到高的变化,起始和停止条件总由主机产生。当产生了一个起始条件时 IIC 总线变为忙,停止条件将使得 IIC 总线空闲。
IIC总线接口 当主机发起一个起始条件时,其应该送出一个从机地址来通知从设备。地址字段的 1 字节由 7 位地址和 1 位传输方向标志(表现为读或写)组成。如果位[8]为 0,其表示一个写操作(发送操作);如果位[8]为 1,其表示一个数据读取的请求(接收操作)。 主机将通过发送一个停止条件来完成传输操作。如果主机希望持续发生数据到总线上,其应该在同一个从地址产生再一个起始条件。这样就可以执行各种格式的读写操作。
IIC总线接口 数据传输格式 IIC 总线接口数据格式 放置到 SDA 线上的每个字节应该以 8 位为长度,每次传输字节可以无限制的发送。起始条件随后的第一个字节应该包含地址字段,当 IIC 总线工作在主机模式时可以由主机发送该地址字段,每个字节都应该跟随一个应答(ACK)位,总是最先发送串行数据和地址的 MSB。 IIC 总线接口数据格式
IIC总线接口 IIC 总线上的数据传输
IIC总线接口 发送 ACK 信号 为了完成一次单字节传输操作,接收器应该发送一个 ACK 位给发送器。ACK 脉冲应该发生在 SCL 线的第 9个时钟,前 8 个时钟是提供给单字节传输的,主机需要产生时钟脉冲来发送 ACK 位。 当发送器收到 ACK 时钟脉冲时,应该通过拉高 SDA 线来释放 SDA 线。当接收器在 ACK 时钟脉冲期间时,也应该驱动 SDA 线为低来在第 9 个脉冲的高电平时期期间保持 SDA 为低。 ACK 位发送功能可以由软件(IICSTAT)使能或禁止。然而,需要 SCL 的第 9 个时钟上的 ACK 脉冲来完成单字节的传输操作。
IIC总线接口 IIC 总线上的应答
IIC总线接口 读写操作 发送模式中当发送了数据时,在 IIC 总线数据移位(IICDS)寄存器收到新数据之前 IIC 总线接口将会一直等待。在新数据写入到寄存器之前,SCL 线将会保持为低,然后在其写入后释放。S3C2440A 应该等待中断来确定当前数据发送的完成。在 CPU 收到中断请求后,需要再次写一个新数据到 IICDS 寄存器中。 接收模式中当收到了数据时,在读取 IICDS 寄存器前 IIC 接口将会一直等待。在新数据读出前,SCL 线将会保持为低,然后在其读取后释放。S3C2440A 应该等待中断来确定当前数据接收的完成。在 CPU 收到中断请求后,需要从 IICDS 寄存器中读取数据。
IIC总线接口 总线仲裁步骤 发生在 SDA 线上的仲裁是预防总线上两个主机的竞争。如果 SDA 为高电平的主机检测到另一个主机的 SDA 激活了低电平,其将不会启动数据传输,这是因为总线上的当前电平与其(前者)拥有的电平不符合。将扩展仲裁步骤直到 SDA 线变为高。 中止条件 如果从接收器不能应答从地址的确认,其应该保持 SDA 线的电平为高。这种情况中,主机应该产生一个停止条件并且中止传输。 如果主机接收器受到了传输中止的影响,其应该通过取消来自从机收到的最后数据字节后 ACK 的产生来指示从发送操作的结束。从发送器应该随后释放 SDA 来允许主机产生停止条件。
IIC总线接口 配制 IIC 总线 可以编程 IICCON 寄存器中的 4 位预分频器值来控制串行时钟(SCL)的频率。IIC 总线接口地址被储存在 IIC总线地址(IICADD)寄存器中。(默认 IIC 总线接口地址包含一个未知值。)
IIC总线接口 每种模式中操作流程图 必须在任何 IIC Tx/Rx 操作之前执行以下步骤。 1. 如果需要,写自己从地址到 IICADD 寄存器。 2. 设置 IICCON 寄存器 a) 使能中断 b) 定义 SCL 周期 3. 设置 IICSTAT 以使能串行输出
IIC总线接口 主 机 发 送 器 模 式 操 作
IIC总线接口 主 机 接 收 器 模 式 操 作
IIC总线接口 从 机 发 送 器 模 式 操 作
IIC总线接口 从 机 接 收 器 模 式 操 作
IIC总线接口 IIC 总线接口特殊寄存器 多主机 IIC 总线控制(IICCON)寄存器(其余略)
IIS总线接口 IIS(Inter-IC Sound Bus)是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准。在飞利浦公司的IIS标准中,既规定了硬件接口规范,也规定了数字音频数据的格式。 I2S有3个主要信号: 1.串行时钟SCLK,也叫位时钟(BCLK),即对应数字音频的每一位数据,SCLK都有1个脉冲。SCLK的频率=2×采样频率×采样位数 2. 帧时钟LRCK,用于切换左右声道的数据。LRCK为“1”表示正在传输的是左声道的数据,为“0”则表示正在传输的是右声道的数据。LRCK的频率等于采样频率。 3.串行数据SDATA,就是用二进制补码表示的音频数据。 有时为了使系统间能够更好地同步,还需要另外传输一个信号MCLK,称为主时钟,也叫系统时钟(Sys Clock),是采样频率的256倍或384倍。
IIS总线接口 S3C2440A的内置 IC音频(IIS)总线接口可以用于实现CODEC接口到外部 8/16位立体声音频 CODEC IC 给迷你光碟和便携式应用。IIS 总线接口同时支持 IIS 总线数据格式和 MSB 对齐数据格式。该接口还提供 FIFO 存取的 DMA 传输模式来代替中断,其能够同时发送和接收数据以及在同一时间交替的发送或接收数据。
IIS总线接口 IIS 总线框图
IIS总线接口 功能描述 总线接口、寄存器组和状态机(BRFC):总线接口逻辑和 FIFO 存取都是由状态机控制的。 5 位双预分频器(IPSR):一个预分频器是用于 IIS 总线接口的主时钟发生器,另一个是用于作为外部 CODEC的时钟发生器。 64 字节 FIFO(TxFIFO 和 RxFIFO):发送数据传输中,数据被写入到 TxFIFO;接收数据传输中,从 RxFIFO 读取数据。 主机 IISCLK 发生器(SCLKG):在主机模式中,从主机时钟产生串行位时钟。 通道发生器和状态机(CHNC):通道状态机控制和产生 IISCLK 和 IISLRCK。 16 位移位寄存器(SFTR):发送模式中并行数据被移位到串行数据输出,并且接收模式中串行数据输入被移位到并行数据。
IIS总线接口 只发送或只接收模式 正常传输 IIS 控制寄存器包含 FIFO 就绪标志位给发送和接收 FIFO。这些标志可以在 CPU 准备写或读 FIFO 时决定,用此方法可以在 CPU 正在存取发送和接收 FIFO 时发送或接收串行数据。 当 FIFO 准备好了发送数据,如果发送 FIFO 非空,则FIFO 就绪标志设置为'1'。如果发送 FIFO 为空,则 FIFO 就绪标志设置为'0'。 接收中的 FIFO 未满,接收 FIFO 的FIFO 就绪标志设置为'1';它表明 FIFO 是否准备好了接收数据。如果接收 FIFO 为满,则 FIFO 就绪标志设置为'0'。
IIS总线接口 DMA 传输 此模式中,通过 DMA 控制器发送或接收 FIFO 为可存取的。发送或接收模式中的 DMA 服务请求由 FIFO 就绪自动生成。 发送并接收模式 此模式中,IIS 总线接口可以同时发送和接收。
IIS总线接口 音频串行接口格式 IIS 总线格式 IIS 总线有 4 根线,包括串行数据输入(IISDI)、串行数据输出(IISDO)、左/右通道选择(IISLRCK)和串行位时钟(IISCLK);主机是产生 IISLRCK 和 IISCLK 的器件。
IIS总线接口 采样频率和主时钟 主时钟频率(PCLK 或 MPLLin)可以由采样频率选择,由于主时钟是由 IIS 预分频器配制的,应该适当的决定预分频值和主时钟类型(256 或 384fs)。串行位时钟频率类型(16/32/48fs)可以由串行位每通道和主时钟来选择。
IIS总线接口 CODEC 时钟(CODECLK = 256 或 384fs)
IIS总线接口 可用串行位时钟频率(IISCLK = 16 或 32 or 48fs)
IIS总线接口 IIS 总线接口特殊寄存器 IIS 控制(IISCON)寄存器 (其余略)
SPI串行外部接口 串行外围设备接口SPI(serial peripheral interface)总线技术是Motorola公司推出的一种同步串行接口,Motorola公司生产的绝大多数MCU(微控制器)都配有SPI硬件接口,如68系列MCU。 SPI 用于CPU与各种外围器件进行全双工、同步串行通讯。SPI可以同时发出和接收串行数据。它只需四条线就可以完成MCU与各种外围器件的通讯,这四条线是:串行时钟线(SPICLOCK)、主机输入/从机输出数据线(SPIMISO)、主机输出/从机输入数据线(SPIMOSI)、低电平有效从机选择线nSS。这些外围器件可以是简单的TTL移位寄存器,复杂的LCD显示驱动器,A/D、D/A转换子系统或其他的MCU。 当SPI工作时,在移位寄存器中的数据逐位从输出引脚(MOSI)输出(高位在前),同时从输入引脚(MISO)接收的数据逐位移到移位寄存器(高位在前)。发送一个字节后,从另一个外围器件接收的字节数据进入移位寄存器中。主SPI的时钟信号(SCK)使传输同步。
SPI串行外部接口 S3C2440A 的串行外设接口(SPI)可以与串行数据传输连接。S3C2440A 包含了 2 个 SPI,每个都有 2 个分别用于发送和接收的 8 位移位寄存器。一次 SPI 传输期间,同时发送(串行移出)和接收(串行移入)数据。由相应控制寄存器设置指定 8 位串行数据的频率。如果只希望发送,则接收数据可以保持伪位(dummy)。此外如果只希望接收,则需要发送伪位'1'数据。
SPI串行外部接口 特性 支持 2 个通道 SPI 兼容 SPI 协议(2.11 版本) 8 位发送移位寄存器 8 位接收移位寄存器 8 位预分频逻辑 查询、中断和 DMA 传输模式
SPI串行外部接口 SPI 方框图
SPI串行外部接口 SPI 操作 通过使用 SPI 接口,S3C2440A 可以与外部器件同时发送/接收 8 位数据。与 2 根数据线同步串行时钟线来移位和采样信息。当 SPI 接口为主机时,可以通过设置 SPPREn 寄存器中的相应位来控制发送频率。可以修改其频率来调整波特率数据寄存器值。当 SPI 为从机时,由其它主机提供时钟。当程序员写字节数据到 SPTDATn 寄存器,将同时开始 SPI 的发送/接收操作。在一些情况中,应该在写字节数据到 SPTDATn 之前激活 nSS。
SPI串行外部接口 编程过程 当一个字节数据写入到 SPTDATn 寄存器中时,如果置位了 SPCONn 寄存器的 ENSCK 和 MSTR 则 SPI 开始发送。可以使用典型的编程步骤来操作一个 SPI 卡。 按照这些基本步骤来编程 SPI 模型: 1. 设置波特率预分频寄存器(SPPREn) 2. 设置 SPCONn 来正确配制 SPI 模型 3. 写数据 0xFF 到 SPTDATn 10 次来初始化 MMC 或 SD 卡 4. 设置起 nSS 作用的 GPIO 引脚为低来激活 MMC 或 SD 卡 5. 发送数据 ¡ 检查发送就绪标志的状态(REDY = 1),并接着写数据到 SPTDATn。
SPI串行外部接口 6. 接收数据(1):SPCONn 的 TAGD 位禁止 = 普通模式 7. ¡ 写 0xFF 到 SPTDATn,然后确认 REDY 的置位,并接着从读缓冲器读取数据 8. 接收数据(2):SPCONn 的 TAGD 位使能 = 自动发送杂数据模式 9. ¡ 确认 REDY 的置位,并接着从读缓冲器读取数据(然后自动开始传输) 10. 设置起 nSS 作用的 GPIO 引脚为高来释放 MMC 或 SD 卡
SPI串行外部接口 DMA 发送过程 1. 配制 SPI 为 DMA 模式 2. 正确的配制 DMA 3. SPI 请求 DMA 服务 7. SMOD 位配制 SPI 为中断或查询模式
SPI串行外部接口 DMA 接收过程 1. SMOD 位配制 SPI 为 DMA 模式并且置位 TAGD 位 2. 正确的配制 DMA 5. DMA 接收来自 SPI 的数据 6. 自动写数据 0xFF 到 SPTDATn 7. 返回步骤 4,直到 DMA 计数变为 0 8. SMOD 位配制 SPI 为查询模式并且清零 TAGD 位 9. 如果 SPSTAn 的 READY 标志置位,然后读取最后字节数据
SPI串行外部接口 SPI 特殊寄存器 SPI 控制寄存器(其余略)
Camera接口 (略)
AC97控制器 (略)
总线优先级 (略)
机械数据 (略)
电气数据 (略)
参考资料 培训课程目录下: S342440A开发板原理图-01.pdf S342440A开发板原理图-02.pdf S3C2440A User's Manual(2440芯片资料01).pdf S3C2440A Application Notes(2440芯片资料02).pdf S342440A开发板原理图-01.pdf S342440A开发板原理图-02.pdf S342440A调试板原理图.pdf