




已阅读5页,还剩125页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9章UART及IIC、IIS、SPI总线接口,2020/5/8,2,本章重点:,S3C2410AUART概述;UART操作;UART特殊功能寄存器;UART与RS-232C接口连接举例;UART与红外收发器连接举例。S3C2410AIIC总线接口概述;IIC总线接口组成与操作方式中的功能关系;IIC总线接口4种操作方式的操作流程图;IIC总线接口特殊功能寄存器;IIC总线接口程序举例。S3C2410AIIS总线接口概述;IIS总线接口组成和发送/接收方式;音频串行接口数据格式;IIS总线接口特殊功能寄存器;IIS总线接口程序举例。S3C2410ASPI总线接口概述;SPI总线接口组成和操作;SPI传输格式与DMA方式发送/接收步骤;SPI总线接口特殊功能寄存器;SPI总线接口应用举例。,2020/5/8,3,9.1UART,9.1.1UART概述UART概述位于S3C2410A芯片内部的通用异步收发器(UART)提供了三个独立的异步串行I/O(SerialI/O,SIO)端口(或通道)。每个端口能够基于中断或基于DMA方式操作。换句话说,UART能够产生中断或DMA请求,用来在CPU(或内存)与UART之间传输数据。,2020/5/8,4,使用系统时钟时,UART能够支持位传输速率最高达到230Kbps。如果外设为UART提供时钟UEXTCLK,那么UART能够以更高的速度操作。每个UART通道含有两个16字节的FIFO(FirstInFirstOut,先进先出)寄存器,一个用于接收数据,一个用于发送数据。可以对S3C2410AUART以下参数通过编程设置:波特率;通常方式或红外(InfraRed,IR)发送/接收方式;数据格式设置:1位或2位停止位;58位数据位;奇偶校验方式。,2020/5/8,5,如图9.1所示,每个UART通道含有一个波特率发生器,一个发送器,一个接收器,一个控制单元。波特率发生器使用PCLK或UEXTCLK时钟。,2020/5/8,6,图9.1UART框图,2020/5/8,7,发送器和接收器各有一个16字节的FIFO(即缓冲区)寄存器和移位器。在FIFO方式,要发送的数据先写入FIFO寄存器,然后复制到发送移位器,通过发送数据引脚TxDn移位输出;而接收数据从接收数据引脚RxDn输入并移位,然后从接收移位器复制到FIFO寄存器。在非FIFO方式,要发送的数据先写入发送保持寄存器,然后复制到发送移位器,通过TxDn引脚移位输出;要接收的数据通过RxDn引脚输入并移位,然后从移位器复制到接收保持寄存器。在FIFO方式,每个缓冲区寄存器的全部16字节用作FIFO寄存器。在非FIFO方式,仅仅每个缓冲区寄存器中的1字节用作保持寄存器。,2020/5/8,8,S3C2410A中的UART有以下特点:三个端口中每个端口的数据发送/接收可以基于中断或基于DMA方式操作,也可以基于查询方式操作;UART通道0、1和2支持红外通信协议IrDA1.0;UART通道0和1带有nRTS0、nCTS0、nRTS1和nCTS1。,2020/5/8,9,UART使用的引脚信号RxD2:0:UART接收数据输入;TxD2:0:UART发送数据输出;nCTS1:0:UART清除发送输入信号;nRTS1:0:UART请求发送输出信号;UEXTCLK:UART时钟信号,由外部UART设备或系统提供。,2020/5/8,10,9.1.2UART操作,UART操作包括:数据发送数据接收自动流控制中断/DMA请求产生错误状态FIFO波特率发生器红外方式,2020/5/8,11,数据发送发送数据帧格式是可编程的。一帧数据由1位起始位,58位数据位,1位可选择的奇偶校验位和1位或2位停止位组成。数据接收与数据发送格式一样,可编程。接收器能够检测溢出错误(overrunerror)和帧错误(frameerror)。接收超时条件出现,指示当接收器在(接收)3个字的时间内没有接收到任何数据,并且在FIFO方式Rx(接收)FIFO不空。,2020/5/8,12,自动流控制S3C2410A的UART0和UART1使用nRTS和nCTS信号,支持自动流控制(AutoFlowControl,AFC)。非自动流控制(由软件控制nRTS和nCTS)RS-232C接口如果用户要通过RS-232C连接UART到调制解调器接口,nRTS、nCTS、nDSR、nDTR、nDCD和nRI信号是需要的,但是UART不支持这么多的信号。在这种情况下,用户应该使用通用I/O端口(GPIO),由软件控制产生这些信号。,2020/5/8,13,中断/DMA请求产生S3C2410A每个UART有5种状态信号,溢出错误、帧错误、接收缓冲区数据准备好、发送缓冲区空和发送移位器空,它们由对应的UART状态寄存器UTRSTATn和UERSTATn表示。与FIFO有关的中断见表9-1(P297)。,2020/5/8,14,UART错误状态FIFO除了接收FIFO,UART还有错误状态FIFO。错误状态FIFO指示,在接收FIFO中哪一个数据接收时有错误。只有当有错误的数据准备读出时,错误中断将被发出。带有错误的字符在未被读出时,不产生错误中断,如表9-2和图9.3(P298)所示。,2020/5/8,15,波特率发生器每个UART通道的波特率发生器(baudrategenerator),为发送器和接收器提供连续的时钟信号。用于波特率发生器的源时钟(sourceclock)可以选择S3C2410A的内部系统时钟PCLK,或由外部UART设备、系统,通过S3C2410A引脚UEXTCLK引入,方法是通过UCONn寄存器的时钟选择位UCONn10选择。波特率时钟可以通过对源时钟(PCLK或者UEXTCLK)16分频和对在UART波特率系数寄存器(UBRDIVn)中的16位分频数设置得到。,2020/5/8,16,回送方式(loopbackmode)UART提供的测试方式,用于在通信连中隔离故障。TxD发送的数据经由RxD被接收到接收器。允许处理器校验每个串口内部发送和接收的数据通路。由UART控制寄存器UCONn设置回送方式位指定。,2020/5/8,17,红外方式S3C2410AUART模块支持红外(InfraRed,IR)方式发送和接收数据,可以在UART线控制寄存器ULCONn中通过设置红外方式位指定。图9.4给出了红外方式功能模块图。,2020/5/8,18,在红外方式,当发送数据位是0时,发送脉冲宽度是通常方式(非红外方式)串行发送一位时长的3/16。在红外接收方式,接收器必须检出这个3/16的脉冲,并识别作为0,详见图9.5图9.7(P299-300)。,2020/5/8,19,9.1.3UART特殊功能寄存器,UART线控制寄存器UART的3个通道各有1个线控制寄存器,分别是ULCON0、ULCON1和ULCON2,对应地址是0 x50000000、0 x50004000和0 x50008000,可读写,Reset值均为0 x00,推荐使用值为0 x3,具体含义见表9-3。,2020/5/8,20,表9.3UART行控制寄存器的位功能,2020/5/8,21,UART控制寄存器,UART的3个通道各有1个控制寄存器,分别是UCON0、UCON1和UCON2,对应地址是0 x50000004、0 x50004004和0 x50008004,可读写,Reset值均为0 x00,推荐使用值为0 x245,具体含义见表9-4。,2020/5/8,22,2020/5/8,23,2020/5/8,24,UARTFIFO控制寄存器,UART的3个通道各有1个FIFO控制寄存器,分别是UFCON0、UFCON1和UFCON2,对应地址是0 x50000008、0 x50004008和0 x50008008,可读写,Reset值均为0 x00,推荐使用值为0 x0,具体含义见表9-5。,2020/5/8,25,表9.52410A的UARTFIFO控制寄存器(UFCONn)的位功能,2020/5/8,26,表9.52440A的UARTFIFO(64Byte)控制寄存器(UFCONn)的位功能,2020/5/8,27,UART调制解调器控制寄存器(UMCONn),UMCON0和UMCON1是UART通道0和通道1的调制解调器控制寄存器,地址分别是0 x5000000C和0 x5000400C,可读写,Reset值均为0 x00,具体含义见表9-6。另外,地址为0 x5000800C的寄存器保留。,2020/5/8,28,表9.6UARTModem控制寄存器(UMCONn)的位功能,2020/5/8,29,UART发送/接收状态寄存器,UTRSTAT0、UTRSTAT1和UTRSTAT2分别是UART通道0、通道1和通道2的发送和接收状态寄存器,对应地址是0 x50000010、0 x50004010和0 x50008010,只读,Reset值均为0 x6,具体含义见表9-7。,2020/5/8,30,UART(接收)错误状态寄存器,UART的3个通道各有1个(接收)错误状态寄存器,分别是UERSTAT0、UERSTAT1和UERSTAT2,对应地址是0 x50000014、0 x50004014和0 x50008014,只读,Reset值均为0 x0,具体含义见表9-8。,2020/5/8,31,UARTFIFO状态寄存器,UART的3个通道各有1个UARTFIFO状态寄存器,分别是UFSTAT0、UFSTAT1和UFSTAT2,对应地址是0 x50000018、0 x50004018和0 x50008018,只读,Reset值均为0 x0000,具体含义见表9-9。,2020/5/8,32,UART调制解调器状态寄存器,UART通道0和通道1各有1个UART调制解调器状态寄存器,分别是UMSTAT0和UMSTAT1,对应地址是0 x5000001C和0 x5000401C,只读,Reset值均为0 x0,具体含义见表9-10和图9.8。另外,地址为0 x5000801C的寄存器保留。,2020/5/8,33,UART发送缓冲区寄存器(发送保持寄存器与发送FIFO寄存器),UART发送缓冲区寄存器,在禁止使用FIFO方式,仅仅把缓冲区的1字节用作发送保持寄存器;在允许使用FIFO方式,缓冲区全部16字节用作发送FIFO寄存器。在表9-5中,如果UFCONn0=0,禁止使用FIFO,由处理器送来的8位发送数据,保存到发送保持寄存器。如果UFCONn0=1,允许使用FIFO,由处理器送来的8位发送数据,保存到发送FIFO寄存器。UART通道0、通道1和通道2各有1个发送缓冲区寄存器,分别是UTXH0、UTXH1和UTXH2,具体内容见表9-11。UTXHn中位7:0称为TXDATAn域。,2020/5/8,34,UART接收缓冲区寄存器(接收保持寄存器与接收FIFO寄存器),UART接收缓冲区寄存器,在禁止使用FIFO方式,仅仅把缓冲区的1字节用作接收保持寄存器;在允许使用FIFO方式,缓冲区全部16字节用作接收FIFO寄存器。在表9-5中,如果UFCONn0=0,禁止使用FIFO,UART接收到的数据保存在接收保持寄存器。如果UFCONn0=1,允许使用FIFO,UART接收到的数据保存在接收FIFO寄存器。UART通道0、通道1和通道2各有1个接收缓冲区寄存器,分别是URXH0、URXH1和URXH2,具体内容见表9-12。URXHn中位7:0称为RXDATAn域。,2020/5/8,35,UART波特率分频寄存器,UART的3个通道各有1个波特率分频寄存器,分别是UBRDIV0、UBRDIV1和UBRDIV2,用于确定每个通道的发送/接收波特率,具体含义见表9-13。UBRDIVn的值可以利用下面的表达式确定:UBRDIVn=(int)(PCLK/(bps16)1式中,分频数值在12161之间。对于精确的UART操作,S3C2410A也支持对UEXTCLK进行分频。如果S3C2410A使用由外部的DART设备或系统提供的UEXTCLK信号,那么UART的连续的时钟将严格与UEXTCLK同步。用户可以得到更精确的UART操作。,2020/5/8,36,UBRDIVn的值可以利用下面的表达式确定:UBRDIVn=(int)(UEXTCLK/(bps16)1式中,分频数值在12161之间,并且UEXTCLK应该小于PCLK。例如,如果波特率是115200bps,PCLK或者UEXTCLK是40MHz,UBRDIVn的值为:UBRDIVn=(int)(40000000/(11520016)-1=(int)(21.7)-1=21-1=20,2020/5/8,37,9.1.4UART与RS-232C接口连接举例,RS-232C接口简介RS-232C接口简称RS-232C。RS-232C标准是由美国EIA(电子工业联合会)与BELL公司共同开发并于1969年公布的一个串行通信协议。这个协议适合于数据传输速率比较低的场合。协议规定了信号线的功能和电气特性等内容。RS-232C接口目前广泛地用于PC机、嵌入式系统和外部设备之间短距离、低速度的通信中。,2020/5/8,38,协议规定了TxD(TransmittedData,发送数据)RxD(ReceivedData,接收数据)数据信号线逻辑0的电平为+5V+15V,逻辑1的电平为-5V-15V,即使用负逻辑表示。DTR:数据终端就绪。DSR:数据设备就绪。RTS:请求发送。CTS:允许发送或清除发送。DCD:载波检测。RI:振铃提示。,2020/5/8,39,UART与RS-232C连接举例S3C2410A的UART0与MAX3232、MAX3232与DB-9连接见图9.12。,2020/5/8,40,图9-10DB9连接器,2020/5/8,41,图9.12UART0与MAX3232与DB9连接,2020/5/8,42,UART编程举例,对于图9.12,UART初始化、读UART、写UART等程序部分代码见例9.1。程序中开始部分定义了UART特殊功能寄存器的地址和寄存器中的一些位(或域)。例9.1中对于设置GPIO端口和中断处理,没有列出全部程序,重点是对UART的编程。【例9.1】S3C2410AUART通道0、1、2初始化,等待发送移位器空,查询方式得到一个字符和发送一字节的程序。(参考书P308-310),2020/5/8,43,1.初始化操作,参数pclk为时钟源的时钟频率,band为数据传输的波特率,初始化函数Uart_Init()的实现如下:voidUart_Init(intpclk,intbaud)inti;if(pclk=0)pclkPCLK;Switch(nchannel)caseUART0:/UART0rUFCON0=0 x0;/UART0FIFO控制寄存器,FIFO禁止rUMCON0=0 x0;/UART0MODEM控制寄存器,AFC禁止rULCON00 x3;/行控制寄存器:正常模式,无奇偶校验,1位停止位,8位数据位rUCON00 x245;/控制寄存器rUBRDIV0=(int)(pclk/16/baud+0.5)-1);/波特率因子寄存器break;caseUART1:./UART1caseUART2:./UART2default:break;for(i0;i100;i+);,2020/5/8,44,2.发送数据,其中whichUart为全局变量,指示当前选择的UART通道,使用串口发送一个字节的代码如下:voidUart_SendByte(intdata)if(whichUart=0)if(data=n)while(!(rUTRSTAT00 x2);Delay(10);/延时,与终端速度有关WrUTXH0(r);while(!(rUTRSTAT00 x2);/等待,直到发送状态就绪Delay(10);WrUTXH0(data);,2020/5/8,45,elseif(whichUart=1)if(data=n)while(!(rUTRSTAT10 x2));Delay(10);/延时,与终端速度有关rUTXH1=r;while(!(rUTRSTAT10 x2);/等待,直到发送状态就绪Delay(10);rUTXH1data;,2020/5/8,46,elseif(whichUart=2)if(data=n)while(!(rUTRSTAT20 x2);Delay(10);/延时,与终端速度有关rUTXH2r;while(!(rUTRSTAT20 x2);/等待,直到发送状态就绪Delay(10);rUTXH2data;,2020/5/8,47,3.接收数据,如果没有接收到字符则返回0。使用串口接收一个字符的代码如下:charUart_GetKey(void)if(whichUart0)if(rUTRSTAT00 x1)/UART0接收到数据returnRdURXH0();elsereturn0;elseif(whichUart=1)if(rUTRSTAT10 x1)/UART1接收到数据returnRdURXH1();elsereturn0;elseif(whichUart=2)if(rUTRSTAT20 x1)/UART2接收到数据returnRdURXH2();elsereturn0;elsereturn0;,2020/5/8,48,9.1.5UART与红外收发器连接举例,红外通信概述红外通信以红外线作为信息的载体进行数据传输,适合于短距离、点对点、直线式数据传输。红外通信技术在嵌入式系统有着比较广泛的应用。红外通信利用波长850nm900nm之间的红外线作为信息的载体进行通信。红外通信技术将二进制数调制成脉冲序列,驱动红外线发射管向外发射红外光;而接收端则将收到的红外光脉冲信号转换成电信号,再进行放大、滤波、解调后还原成二进制数。,2020/5/8,49,典型的红外数据传输模块由4部分组成:接口电路、编/解码器、发送器和接收器。S3C2410AUART接口电路中包含了编/解码器,见图9.4图9.7,实现了信号的调制和解调。红外发送和接收器可以做成一个器件,简称红外收发器。红外通信按发送速率可以分为SIR(SerialInfraRed)、MIR(MediumInfraRed)、FIR(FastInfraRed)和VFIR(VaryFastInfraRed)方式。其中SIR方式通信速率较低,最高速率为115.2Kbps,支持异步、半双工方式,通常依托UART接口。其他三种方式传输速率较高。,2020/5/8,50,IrDA1.0是一个红外通信协议,IrDA(InfraredDataAssociation,红外数据协会)协议规定了红外传输的距离为1m,速率为9.6115.2Kbps,响应角度为15,响应时间为10ms等内容。,2020/5/8,51,UART与红外收发器的连接S3C2410AUART2与红外收发器的连接见图9.13(P311)。支持红外方式的UART编程举例对于图9.13,例9.2给出了对应的初始化、发送一字节和接收一字节的程序片段。由于采用半双工方式,数据的收、发之间加了一定间隔的延时。,2020/5/8,52,【例9.2】支持红外方式的UART编程举例。初始化UART发送一字节程序接收一字节程序(见参考书P312),2020/5/8,53,9.2IIC总线接口,9.2.1IIC总线接口概述常用IIC总线接口概述IIC(IntelIntegratedCircuit)总线一般称为内部集成电路总线,也写作I2C或I2C。IIC总线是20世纪80年代初由飞利浦公司发明的一种双向同步串行总线,是目前较为常用的一种串行总线。总线接口可以做成专用芯片,也可以集成在微处理器内部,如S3C2410A微处理器内部就集成了IIC总线模块。IIC总线可以与许多设备连接,如图9.14所示。,2020/5/8,54,图9.14,2020/5/8,55,IIC总线数据传送速率在标准模式下为100Kb/s;快模式下为400Kb/s;高速模式下为3.4Mb/s。IIC总线仅有两条信号线:SDA(SerialDataLine,串行数据线)是数据信号线,SCL(SerialClockLine,串行时钟线)是时钟信号线,另外设备之间还要连接一条地线,图9.14中未画出地线。与IIC总线连接的设备,使用集电级/漏级开路门电路,以“线与”(Wired-AND)方式分别连接到SDA、SCL线上,SDA和SCL线要外接上拉电阻,如图9.14所示。,2020/5/8,56,连接到IIC总线上的设备可以分为总线主设备和总线从设备。总线主设备是能够发起传送,发出从设备地址和数据传送方向标识、发送或接收数据、能够产生时钟同步信号、能够结束传送的设备。总线主设备也称总线主、主设备。总线从设备是能被主设备寻址、接收主设备发出的数据传送方向标识、接收主设备送来的数据,或者给主设备发送数据的设备。总线从设备也称从设备。,2020/5/8,57,IIC总线是一个真正的多主(multi-master)总线,总线上可以连接多个总线主设备,也可以连接多个总线从设备,如图9.15所示。,2020/5/8,58,每一个连接在IIC总线上的设备,在系统中都被分配了一个唯一的地址。地址用7位二进制数表示。扩展的IIC总线允许使用10位地址。设备地址用7位表示时,地址为0000000的一般用于发出通用呼叫,也称总线广播。IIC总线被设计成多主总线结构,多个主设备中的任何一个,可以在不同时刻起到主控设备的作用,因此不需要一个全局的主控设备在SCL上产生时钟信号。只有传送数据的主设备驱动SCL。当总线空闲时,SDA和SCL同时为高电平。,2020/5/8,59,IIC多主总线接口中含有冲突检测机制,保证了多个主设备同时要求发送数据时,只能有一个主设备占有总线,不会造成数据冲突。,2020/5/8,60,S3C2410A微处理器IIC总线接口特点在多主IIC总线模式,多个S3C2410A微处理器中的每一个,能够接收由从设备发送来的串行数据,或发送串行数据给从设备。主S3C2410A能够启动或停止IIC总线的数据传送。在S3C2410A中,标准的总线仲裁过程用于IIC总线。当IIC总线空闲时,SDA和SCL两条线都应该是高电平。,2020/5/8,61,当SCL稳定在高电平,SDA从高电平变到低电平,能够启动开始条件;而SDA从低电平变到高电平能够启动停止条件,参见图9.18。开始和停止条件总是由主设备产生。开始条件之后总线上传送的第一字节数据中的7位是地址值,能够确定总线主设备所选择的从设备,另外一位确定传送的方向是读还是写,参见图9.19。,2020/5/8,62,送到SDA线上的每个数据以字节为单位,为8位。在总线传送期间发送或接收的字节数没有限制。数据先从最高有效位(Most-SignificantBit,MSB)发送,每一字节之后应该立即被跟随一个响应(ACKnowledge,ACK)位,参见图9.19(P317)。,2020/5/8,63,IIC总线接口用到的S3C2410A引脚信号IICSDA,IIC总线数据;IICSCL,IIC总线时钟。,2020/5/8,64,9.2.2IIC总线接口组成与操作方式中的功能关系,IIC总线接口组成框图S3C2410A微处理器IIC总线接口组成框图见图9.17。SDA数据线和SCL时钟线也称为IICSDA和IICSCL。PCLK为系统时钟信号。S3C2410A微处理器IIC总线数据传送速率支持标准模式和快模式。,2020/5/8,65,图9.17,2020/5/8,66,IIC总线接口操作方式中的功能关系S3C2410A微处理器IIC总线接口有4种操作方式,分别是主/发送方式、主/接收方式、从/发送方式和从/接收方式。开始和停止条件数据传送格式ACK信号传送读写操作总线仲裁过程中止条件(abortcondition)配置IIC总线,2020/5/8,67,9.2.3IIC总线接口4种操作方式,S3C2410A微处理器IIC总线接口有4种操作方式:主/发送方式;主/接收方式;从/发送方式;从/接收方式。,2020/5/8,68,在IIC发送(Tx)或接收(Rx)操作之前,必须按以下步骤执行:如果需要,由处理器写自己的从地址到IICADD寄存器。设置IICCON寄存器:中断允许;定义SCL周期。设置IICSTAT,允许串行输出。,2020/5/8,69,在主/发送方式时,首先要指定从地址,即接收方(从设备)的地址,这个地址要由主设备发送出去,传送到从设备,所以在主/发送方式时,首先要由处理器将从地址写入IIC总线发送/接收数据移位寄存器IICDS中。,2020/5/8,70,在从/接收方式时,IIC总线地址寄存器IICADD内容,是由处理器写入的,并且在从设备中保存的,是从设备自己的地址。当处在从/接收方式的设备,从IIC总线收到从地址时,保存在IICDS寄存器中,与自己的IICADD寄存器中的从地址比较,判断收到的地址是否是自己的地址。如果是,该从设备接收由主设备发送来的数据。,2020/5/8,71,在多主IIC总线系统中,主设备也可以处在接收方式,因此要指定的从地址是从设备发送方的地址,这个地址要由主设备发送出去,传送到从设备,所以在主/接收方式时,从地址要写入IIC总线发送/接收数据移位寄存器IICDS中。当处在从/发送方式的设备,收到这个地址时,保存在IICDS寄存器中,要与IICADD寄存器中自己的地址比较,判断收到的地址是否是自己的地址,如果是,从设备发送数据,主设备接收数据。,2020/5/8,72,主/发送方式操作主/发送方式也写作M/T,发送也写作Tx。主/发送方式操作见图9.22(P319)。主/接收方式操作主/接收方式也写作M/R,接收也写作Rx。主/接收方式操作见图9.23(P320)。,2020/5/8,73,从/发送方式操作从/发送方式也写作S/T,发送也写作Tx。从/发送方式操作见图9.24(P321)。从/接收方式操作从接收方式也写作S/R,接收也写作Rx。从/接收方式操作见图9.25(P321)。,2020/5/8,74,9.2.4IIC总线接口特殊功能寄存器,多主IIC总线控制寄存器多主IIC总线控制寄存器IICCON地址为0 x54000000,可读写,8位,Reset值为0 x0 x,(低4位未定义)具体含义见表9-15。多主IIC总线控制/状态寄存器多主IIC总线控制/状态寄存器IICSTAT地址为0 x54000004,可读写,8位,Reset值为0 x00,具体含义见表9-16。,2020/5/8,75,多主IIC总线地址寄存器多主IIC总线地址寄存器IICADD,地址为0 x54000008,可读写,8位,Reset值不确定,具体含义见表9-17。多主IIC总线发送/接收数据移位寄存器多主IIC总线发送/接收数据移位寄存器IICDS,地址为0 x5400000C,可读写,8位,Reset值不确定,具体含义见表9-18。,2020/5/8,76,9.2.5IIC总线接口程序举例,【例9.3】以下是Linux操作系统对IIC总线操作的部分程序实例,包括初始化、IIC读和IIC写等函数。程序部分从IIC读、IIC写开始阅读。(见参考书P323-327),2020/5/8,77,9.3IIS总线接口,9.3.1IIS总线接口概述常用IIS总线接口概述目前许多数字电子产品,如便携式CD机、手机、MP3、MD、VCD、DVD和数字电视机等,都使用了数字音频系统。IIS(Intel-ICSound)总线一般称为集成电路内部声音总线,也写作I2S。IIS总线源于SONY和PHILIPS等公司共同提出的一个串行数字音频总线协议,许多音频编解码器(CODEC)和微处理器都提供了对IIS总线的支持。IIS总线只传送音频数据,其他信号(如控制信号)必须另外单独传送。,2020/5/8,78,为了尽可能减少芯片引脚数,通常IIS只使用3条串行总线(不同芯片可能会有所不同),3条线分别是:提供分时复用功能的数据线SD,SD传送数据时由时钟信号同步控制,且以字节为单位传送,每字节的数据传送从左边的二进制位MSB开始;字段选择线WS,WS为0或1表示选择左声道或右声道;时钟信号线SCK,能够产生SCK信号的设备称为主设备,从设备引入SCK作为内部时钟使用。IIS总线接口支持通常的IIS和MSB_justified(MSB调整IIS)两种数据格式。,2020/5/8,79,S3C2410A微处理器IIS总线接口概述S3C2410A内部集成了IIS总线接口模块,图9.26是S3C2410A与PHILIPS公司数字音频串行输入/输出接口芯片UDA1341TS连接的一个例子。,2020/5/8,80,图9.26中UDA1341TS是一个低成本、小尺寸、低功耗、高性能的立体声音频编解码器,支持IIS和L3两种接口。片内有音频数据用的A/D转换器和D/A转换器。芯片提供了两个麦克风输入通道,分别连接到VINL1和VINR1、VINL2和VINR2引脚。芯片提供了一路输出,通过VOUTR和VOUTL与扬声器连接。片内配置了可编程增益放大器和自动增益控制器,扬声器音量可以编程调节或进入静音状态;在ADC路径上,还提供了可编程滤波器、混频器等。,2020/5/8,81,图9.26中S3C2410A与UDA1341TS的连线由两组接口组成。一组是IIS总线接口,在S3C2410A端信号是:CDCLK(CODEC系统时钟);I2SSCLK(IIS总线串行时钟);I2SLRCK(IIS总线声道选择时钟);I2SSDI(IIS总线串行数据输入);I2SSDO(IIS总线串行数据输出)。,2020/5/8,82,另一组是L3总线接口在S3C2410A端在UDA1341TS端GPG10L3DATA(L3总线数据,输入/输出)GPG8L3MODE(L3总线模式,输入)GPG9L3CLOCK(L3总线时钟,输入)。,2020/5/8,83,音频数据传送过程可以简单描述为:处理器通过IIS总线接口,控制音频数据在S3C2410A内存与UDA1341TS之间传送。连接在UDA1341TS上的麦克风信号在UDA1341TS内部经过A/D转换器等,转换成二进制数,串行通过DATAO引脚送到S3C2410A的IIS模块,在IIS模块中数据转换成并行数据,然后使用通常存取方式或DMA存取方式,将并行数据保存在内存中;而内存中要输出的音频数据,使用通常存取方式或DMA存取方式,将数据并行传送到IIS模块,在IIS模块中转换成串行数据,串行通过DATAI引脚送到UDA1341TS,在片内经过D/A转换器等,变成模拟信号,经过驱动器等,驱动扬声器。,2020/5/8,84,S3C2410A中传送方式的选择、串行数据接口格式、发送/接收方式的选择等都可以通过IIS接口控制器的寄存器设置。L3接口用来传送控制信号,控制外部编解码器,相当于混音器控制接口。L3接口可以对麦克风输入、扬声器输出的音频信号音量大小等进行控制。L3接口连接在S3C2410A的3个通用输入输出引脚上,S3C2410A利用这3个I/O端口引脚模拟L3总线的全部时序和协议。L3总线时钟不是连续时钟,只有数据线上有数据时,它才会发出8个周期的时钟信号,其他时间保持高电平。,2020/5/8,85,L3传送模式有两种,地址模式和数据传送模式。地址模式用于确定数据传送的目的寄存器,而数据传送模式只进行控制数据的传送。,2020/5/8,86,9.3.2IIS总线接口组成和发送/接收方式,IIS总线接口组成框图S3C2410A微处理器IIS总线接口组成框图见图9.27。,2020/5/8,87,在图9.27中,BRFC表示总线接口、寄存器组和状态机。总线接口逻辑和FIFO存取由状态机控制。IPSR_A和IPSR_B是两个5位的预分频器。一个用于IIS总线接口的主时钟发生器,另一个用于外部CDCLK时钟发生器。发送数据时,数据被写入TxFIFO;接收数据时,从RxFIFO读出数据。TxFIFO和RxFIFO长度各为64字节。SCLKG称为主I2SSCLK产生器,在主方式时,串行位时钟由主时钟产生。CHNC表示声道发生器和状态机。由声道状态机产生并控制I2SSCLK和I2SLRCK。SFTR表示16位移位寄存器。在发送方式,并行数据被移位串行输出;在接收方式,串行数据移位输入形成并行数据。,2020/5/8,88,IIS总线接口发送/接收方式只发送或只接收方式只发送或只接收方式可以采用通常(normal)传送方式或DMA传送方式。通常传送方式DMA传送方式同时发送和接收方式在这种方式下,IIS总线接口能同时发送和接收数据。,2020/5/8,89,9.3.3音频串行接口数据格式,IIS总线格式与S3C2410A连接的IIS总线中,除了系统时钟CDCLK外的4条线,分别是串行数据输入I2SSDI、串行数据输出I2SSDO、左右声道选择时钟I2SLRCK和串行时钟I2SSCLK。能够产生I2SLRCK和I2SSCLK信号的设备是主设备。,2020/5/8,90,串行数据以2的补码形式传送,先传送MSB。先传送MSB是由于发送器和接收器可能有不同的字长。发送器无需知道接收器能够处理的位数,接收器也无需知道发送器发送的位数。,2020/5/8,91,当系统的一个字的长度比发送器的一个字的长度更长时,系统的数据中的每个字的低有效位被截掉(低有效位数据被设置为0),作为发送数据。如果接收器收到的位数,比接收器一个字的长度更长时,接收器LSB(LeastSignificantBit,最低有效位)以后的位被忽略。如果接收器收到的位数比它的字的长度短,那么缺省的位在内部被置为0。最高有效位有固定的位置,而最低有效位取决于字长。在I2SLRCK改变后经过1个时钟周期之后,发送器发送下一个字的最高有效位,见图9.28。,IIS-BUSFORMAT(N=8or16),2020/5/8,92,MSB-JustifiedFORMAT(N=8or16),2020/5/8,93,2020/5/8,94,左右声道选择线指示正在传送的数据所在的声道。I2SLRCK能够在串行时钟信号的后沿或前沿改变,而它的长度不需要对称。在从设备,I2SLRCK信号在时钟信号的前沿被锁存。I2SLRCK在最高有效位被传送的前一个周期改变。MSB(LEFT)JUSTIFIED数据格式,2020/5/8,95,采样频率和主时钟举例音频系统时钟,即图9.27中的CDCLK,也称为CODEC时钟或CODECLK,它的频率为采样(samplingfrequency,简称fs)频率的256倍或384倍。CODECLK是由处理器主时钟PCLK经过预分频器IPSR_B,预分频后得到。预分频器的值,在IISPSR寄存器的bit4:0中设置。CODECLK与采样频率对应关系见表9-19。串行位时钟(I2SSCLK)的频率,可以选择采样频率的16、32、48倍,参考表9-20。,IISLRCK与CODECLK的关系如表919所示,表中fs为采样频率,2020/5/8,96,可用的串行位时钟频率如表9-20,2020/5/8,97,2020/5/8,98,9.3.4IIS总线接口特殊功能寄存器,利用S3C2410AI2S总线接口实现音频录放,需要对S3C2410AI2S总线接口的相关寄存器进行正确的配置。IIS控制寄存器IISCONIIS模式寄存器IISMODIIS分频因子寄存器IISPSRIIS队列控制寄存器IISFCONIIS队列寄存器IISFIFO,99,表1IISCON的位功能,100,表2IISMOD的位功能,101,表3IISPSR的位功能,IISPSR(I2S前置分频寄存器),102,表6.6.5IISFCON的位功能,IISFCON(IISFIFO控制寄存器),IISFIFO(IISFIFO寄存器)是一个可读写的寄存器,16位。该寄存器有2个地址:0 x55000010(小端半字、小端字、大端字)和0 x55000012(大端半字)。复位后的初始值为0 x0。该寄存器为I2S总线接口发送和接收数据。,2020/5/8,103,2020/5/8,104,9.3.5IIS总线接口程序举例,以下程序是对IIS总线接口进行测试的部分代码。与图9.26不同的是,L3接口与S3C2410A连接的引脚没有使用GPG10、GPG8和GPG9,而是使用了GPB3、GPB2和GPB4。下述测试程序将内存DMA2缓冲区的数据,送往IIS总线接口FIFO,填充DMA2缓冲区的过程在本程序被忽略。测试程序还用到了UART和外部中断EINT0,作一些辅助操作,与这部分相关的代码没有详细列出。另外,如何通过L3接口模拟L3总线的全部时序和协议,与音频技术处理关系密切,不在这里讨论。【例9.4】IIS总线接口测试部分代码。(见参考书),staticvoidIIS_PortSetting(void)/-/PORTBGROUP/Ports:GPB4GPB3GPB2/Signal:L3CLOCKL3DATAL3MODE/Setting:OUTPUTOUTPUTOUTPUT/9:87:65:4/Binary:01,0101/-rGPBUP=rGPBUP/GPE4:0=I2SSDO:I2SSDI:CDCLK:I2SSCLK:I2SLRCK,105,端口初始化,IIS采用DMA方式进行录音和播放,因此需要进行DMA中断的注册。pISR_DMA2=(unsigned)DMA2_Done;进入中断服务程序,清楚标志位Void_irqDMA2_Done(void)rSRCPND=BIT_DMA2;rINTPND=BIT_DMA2;,2020/5/8,106,DMA中断注册,rDISRC2=(int)rec_buf;/recbuf0 x3100000rDISRCC2=(01)+(00);/AHB,incrDIDST2=(U32)IISFIFO;/IIS_bufferrDIDSTC2=(11)+(10);/APB,fixedrDCON2=(131)+(030)+(129)+(028)+(027)+(024)+(123)+(022)+(120)+(sise/2);rDMASKTRIG2=(02)+(11)+0;/no-stop,DMA2channelon,no-swtrigger,2020/5/8,107,DMA2初始化,IIS初始化,staticvoidStartPlay(void)SetPlayDma();rIISPSR=CodecParaPlayStatus.FsIdx.PreScaler;rIISCON=(15)+(04)+(03)+(12)+(11);/TxDMAenable5,Rxidle2,Prescalerenable1rIISMOD=(08)+(26)+(05)+(14)+(13)+(02)+(10);rIISFCON=(115)+(113);,2020/5/8,108,rIISCON|=0 x1;While(!Uart_GetKey();,2020/5/8,109,停止DMA和IIS,启动IIS,Delay(10);rIISCON|=0 x0;rDMASKTRIG2=(12);rIISFCON=0 x0;,2020/5/8,110,9.4SPI总线接口,9.4.1SPI总线接口概述常用SPI总线接口概述SPI(SerialPeripheralInterface)一般称为串行外设接口,是Motorola在其MC68HCxx微处理器系列中定义的一种标准接口,实现了一个串行同步协议,目前在嵌入式系统中得到了广泛的应用。SPI采用同步、全双工串行传输技术,业内也称为同步串行总线接口。,2020/5/8,111,SPI允许计算机与计算机、微处理器与外设之间串行同步通信。可以与SPI通信的外设有:ADC、DAC、LCD、LED、外置闪存、网络控制器等等。另外还有许多厂家生产的多种标准外围器件可以与SPI接口。通信时,通信双方要规定好一个为主设备,另一个(或多个)为从设备。主设备也允许选择工作在主方式或从方式。当带有SPI接口的两个计算机之间通信时,通常每个计算机的SPI允许选择使用主方式或从方式。,2020/5/8,112,计算机与计算机、微处理器与外设使用SPI总线连接举例见图9.29和图9.30。,图9.29,2020/5/8,113,图9.30,2020/5/8,114,连接在SPI总线上的多个从设备,某一时刻只有一个,即被主设备选中的那个从设备,能与主设备通信。其他未被选中的从设备不能与主设备通信。通信中主设备和被选中的从设备使用同一个时钟,主设备创建并发送时钟信号(以下简称时钟),从设备接收时钟,主设备和从设备使用同一个时钟将数据送出和锁存。MotorolaSPI总线通常包含4条I/O线。,2020/5/8,115,nSS(SlaveSelect):从设备选择线,信号低电平有效,由主设备发出信号,通知连接的从设备被选中,它们之间的通信通道已经被激活。当一个主设备连接多个从设备时,主设备与每个从设备要连接一条单独的nSS线,某段时间只能有一条nSS线上的信号为低电平。,2020/5/8,116,SCK(SerialClock):串行时钟线,时钟由主设备创建、驱动并发送,从设备只能接收。主设备发送的时钟作为主、从设备数据传输的同步时钟。使用该时钟锁存串行输入线上接收到的数据位,或送出要发送的数据位到串行输出线上。,2020/5/8,117,MOSI(MasterOutSlaveIn):主设备输出、从设备输入串行数据线,数据由主设备驱动输出,从设备接收,使用SCK同步传输。MISO(MasterInSlaveOut):主设备输入、从设备输出
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高端小型车项目立项申请报告模板
- 2025年标准紧固件项目申请报告
- 2025年秋季四年级语文课本复习计划
- 学校宿舍消防应急预案措施
- 春节期间交通运输工期保证措施
- 九年级英语上册核心单元作文范文
- 2025至2030中国万圣节服饰行业产业运行态势及投资规划深度研究报告
- 2025至2030中国IT服务台行业产业运行态势及投资规划深度研究报告
- 黄冈奥赛9年级数学试卷
- 江苏省对口单招数学试卷
- GB/T 25155-2010平板硫化机
- 环境作用下结构受力性能的退化2
- 山东中烟雪茄烟产品推广
- 中国传统美食文化介绍课件
- 200题最新2022-2023医护急救知识培训考试题及答案
- 超声诊断质量控制规范及考评标准
- 不宜流通人民币纸币行业标准课件
- 公路工程工程质量管理制度
- 大型公立医院巡查应知应会
- 我国及发达国家圆珠笔发展现状Microsoft Word 97 - 2003 Document
- 《慢性意识障碍诊断与治疗中国专家共识》(2020)要点汇编
评论
0/150
提交评论