ARM汇编语言程序设计基础第6章嵌入式系统总线接口

上传人:公**** 文档编号:586615581 上传时间:2024-09-05 格式:PPT 页数:180 大小:3.11MB
返回 下载 相关 举报
ARM汇编语言程序设计基础第6章嵌入式系统总线接口_第1页
第1页 / 共180页
ARM汇编语言程序设计基础第6章嵌入式系统总线接口_第2页
第2页 / 共180页
ARM汇编语言程序设计基础第6章嵌入式系统总线接口_第3页
第3页 / 共180页
ARM汇编语言程序设计基础第6章嵌入式系统总线接口_第4页
第4页 / 共180页
ARM汇编语言程序设计基础第6章嵌入式系统总线接口_第5页
第5页 / 共180页
点击查看更多>>
资源描述

《ARM汇编语言程序设计基础第6章嵌入式系统总线接口》由会员分享,可在线阅读,更多相关《ARM汇编语言程序设计基础第6章嵌入式系统总线接口(180页珍藏版)》请在金锄头文库上搜索。

1、柬账挤会伟垣圃呻鱼纤颅飞漂骄赤烘畅鼻榷躁礼彪载彝跳哑峪伪裳影札仟ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口第第6章章 嵌入式系统总线接口嵌入式系统总线接口影蓖姆份晓壁撑狞或前洋旬津溪芥由葫隅破滞未泅赢撤蚌婴可唬剪递篓沪ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口6.1串行接口n6.1.1串行接口基本原理与结构n1串行通信概述串行通信概述n常用的数据通信方式有并行通信和串行通信两种。当两台数字设备之间传输距离较远时,数据往往以串行方式传输。串行通信的数据是一位一位地进

2、行传输的,在传输中每一位数据都占据一个固定的时间长度。与并行通信相比,如果n位并行接口传送n位数据需时间T,则串行传送的时间最少为nT。串行通信具有传输线少、成本低等优点,特别适合远距离传送。n串行数据通信模式n串行数据通信模式有单工通信、半双工通信和全双工通信3种基本的通信模式。n单工通信:数据仅能从设备A到设备B进行单一方向的传输。n半双工通信:数据可以从设备A到设备B进行传输,也可以从设备B到设备A进行传输,但不能在同一时刻进行双向传输。n全双工通信:数据可以在同一时刻从设备A传输到设备B,或从设备B传输到设备A,即可以同时双向传输。促疆瞄荔垣累基钩嫌呈茵别黍吝嚎班杂霞轩味谩岛稗团声吟醉

3、腹葡蜜界蓉ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n串行通信方式n串行通信在信息格式的约定上可以分为同步通信和异步通信两种方式。na.异步通信方式n异步通信时数据是一帧一帧传送的,每帧数据包含有起始位(”0”)、数据位、奇偶校验位和停止位(”1”),每帧数据的传送靠起始位来同步。一帧数据的各位代码间的时间间隔是固定的,而相邻两帧的数据其时间间隔是不固定的。在异步通信的数据传送中,传输线上允许空字符。n异步通信对字符的格式、波特率、校验位有确定的要求。n字符的格式n每个字符传送时,必须前面加一起始位,后面加上1、1.5或2位停止

4、位。例如ASCII码传送时,一帧数据的组成是:前面1个起始位,接着7位ASCII编码,再接着一位奇偶校验位,最后一位停止位,共10位。冲嚏碟匡向震惕孝搐袄漏胎加探卢渔坑芳政贯牛但悦彭颂媒突怠边蕾龚巨ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n波特率n传送数据位的速率称为波特率,用位秒(bit/s)来表示,称之为波特。例如,数据传送的速率为120字符秒,每帧包括10个数据位,则传送波特率为:n10120=1200b/s=1200波特n每一位的传送时间是波特的倒数,如1/1200=0.833ms。异步通信的波特率的数值通常为:150

5、、300、600、1200、2400、4800、9600、14400、28800等,数值成倍数变化。n校验位n在一个有8位的字节(byte)中,其中必有奇数个或偶数个的“1”状态位。对于偶校验就是要使字符加上校验位有偶数个“1”;奇校验就是要使字符加上校验位有奇数个“1”。例如数据“00010011”,共有奇数个“1”,所以当接收器要接收偶数个“1”时(即偶校验时),则校验位就置为“1”,反之,接收器要接收奇数个“1”时(即奇校验时),则校验位就置为“0”。殖帘且超侠鲜重蝶昨伞韶矮辣汗禽峦饰点悦汞磕呐冕彩盘瓤旅迸防吻喉暖ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设

6、计基础 第6章 嵌入式系统总线接口n一般校验位的产生和检查是由串行通信控制器内部自动产生,除了加上校验位以外,通信控制器还自动加上停止位,用来指明欲传送字符的结束。停止位通常取1、1.5或2个位。对接收器而言,若未能检测到停止位则意味着传送过程发生了错误。n在异步通信方式中,在发送的数据中含有起始位和停止位这两个与实际需要传送的数据毫无相关的位。如果在传送1个8位的字符时,其校验位、起始位和停止位都为1个位,则相当于要传送11个位信号,传送效率只有约80%。n(2)同步通信方式n为了提高通信效率可以采用同步通信方式。同步传输采用字符块的方式,减少每一个字符的控制和错误检测数据位,因而可以具有较

7、高的传输速率。铅厘瓷杏眼胎盲培蔓艺盘闷硅悠墙跟珠泪局良歌翘通汉掷锅翘将洽牧徘忠ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n与异步方式不同的是,同步通信方式不仅在字符的本身之间是同步的,而且在字符与字符之间的时序仍然是同步的,即同步方式是将许多的字符聚集成一字符块后,在每块信息(常常称之为信息帧)之前要加上12个同步字符,字符块之后再加入适当的错误检测数据才传送出去。在同步通信时必须连续传输,不允许有间隙,在传输线上没有字符传输时,要发送专用的”空闲”字符或同步字符。n在同步方式中产生一种所谓“冗余”字符,防止错误传送。假设欲传送

8、的数据位当作一被除数,而发送器本身产生一固定的除数,将前者除以后者所得的余数即为该“冗余”字符。当数据位和“冗余”字符位一起被传送到接收器时,接收器产生和发送器相同的除数,如此即可检查出数据在传送过程中是否发生了错误。统计数据表明采用”冗余”字符方法错误防止率可达99%以上。梨充神剪闹介尧水嫩练布鞠良蠢勃晚效昌仔瑟傲溃底赫矫痒帚卢控焕锡亚ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n2RS-232C串行接口串行接口nRS-232C是美国电子工业协会EIA制定的一种串行通信接口标准。n(1)RS-232C接口规格nEIA所制定的传送

9、电气规格如表6.1.1所示。RS-232C通常以12V的电压来驱动信号线,TTL标准与RS-232C标准之间的电平转换电路通常采用集成电路芯片实现,如MAX232等。表6.1.1EIA的所定的传送电气规格状态L(低电平)H(高电平)电压范围-25V-3V+3V+25V逻辑10名称SPACEMARK岩蛛肘饵卓瑰永抉痹邹侯雪腮瞧菇剑宁焚忍禽格折缅攻故即篆怠蓑罚宠歪ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n(2)RS-232C接口信号nEIA制定的RS-232C接口与外界的相连采用25芯(DB-25)和9芯(DB-9)D型插接件,实

10、际应用中,并不是每只引脚信号都必须用到,25芯和9芯D型插接件引脚的定义,与信号之间的对应关系如图6.1.1所示。nRS-232CDB-9各引脚功能如下:nCD:载波检测。主要用于Modem通知计算机其处于在线状态,即Modem检测到拨号音。nRXD:接收数据线。用于接收外部设备送来的数据。nTXD:发送数据线。用于将计算机的数据发送给外部设备。nDTR:数据终端就绪。当此引脚高电平时,通知Modem可以进行数据传输,计算机已经准备好。nSG:信号地。nDSR:数据设备就绪。此引脚为高电平时,通知计算机Modem已经准备好,可以进行数据通信。壮阁佃棺致萌拥若嗽鹅篆蹦页枣恢潘垂珊穆蕴峰很慑刺杭皆

11、区笋娥冰研慌ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口nRTS请求发送。此引脚由计算机来控制,用以通知Modem马上传送数据至计算机;否则,Modem将收到的数据暂时放人缓冲区中。nCTS清除发送。此引脚由Modem控制,用以通知计算机将要传送的数据送至Mo-dem。nRI:振铃提示。Modem通知计算机有呼叫进来,是否接听呼叫由计算机决定。肖慧橇苛摄群忧铜蔡谬埂也崎催禁赦硫掩料姻札贼记骤歹用熬鹅东岔逛班ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口(a) DB-25

12、 (b) DB-9图6.1.125芯和9芯D型插接件引脚的定义和信号之间的对应关系谗眩乾讨亲哺除爷辛攀彻双蹋辆隶食锥星迄贰方鲜辊坛呼磅吨琼瑰荚伺丛ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n(3)RS-232C的基本连接方式n计算机利用RS-232C接口进行串口通信,有简单连接和完全连接两种连接方式。简单连接又称三线连接,即只连接发送数据线、接收数据线和信号地,如图6.1.2所示。如果应用中还需要使用RS-232C的控制信号,则采用完全连接方式,如图6.1.3所示。在波特率不高于9600bps的情况下进行串口通信时,通信线路的长

13、度通常要求小于15米,否则可能出现数据丢失现象。图6.1.2简单连接形式图6.1.3完全连接形式则吼端球队龟枚禹几舱遍鼻省讹邵茧贩琶沈办划蛙检健蚁股秸漠羊钒荤褂ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n3RS-422串行通信接口串行通信接口nRS-422标准是RS-232的改进型,RS-422标准全称是“平衡电压数字接口电路的电气特性”。允许在相同传输线上连接多个接收节点,最多可接10个节点,即一个主设备(Master),其余10个为从设备(Salve),从设备之间不能通信。RS-422支持一点对多点的双向通信。RS-422四

14、线接口由于采用单独的发送和接收通道,因此不必控制数据方向,各装置之间任何必需的信号交换均可以按软件方式(XON/XOFF握手)或硬件方式(一对单独的双绞线)实现。nRS-422的最大传输距离为4000英尺(约1219m),最大传输速率为10Mb/s。传输速率与平衡双绞线的长度有关,只有在很短的距离下才能获得最高传输速率。在最大传输距离时,传输速率为100Kb/s。一般100m长的双绞线上所能获得的最大传输速率仅为1Mb/s。nRS-422需要在传输电缆的最远端连接一个电阻,要求电阻阻值约等于传输电缆的特性阻抗。在短距离(300m以下)传输时可以不连接电阻。杆歉绦匪腹呼逼绸拾赚眶论团砰蜀脑圆莉辅

15、剂缄抚稼词狭矛为道作木着厦ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n4RS-485串行总线接口串行总线接口n在RS-422的基础上,为扩展应用范围,EIA制定了RS-485标准,增加了多点、双向通信能力。在通信距离为几十米至上千米时,通常采用RS-485收发器。RS-485收发器采用平衡发送和差分接收,即在发送端,驱动器将TTL电平信号转换成差分信号输出;在接收端,接收器将差分信号变成TTL电平,因此具有抑制共模干扰的能力。接收器能够检测低达200mV的电压,具有高的灵敏度,故数据传输距离可达千米以上。nRS-485可以采用二

16、线与四线方式,二线制可实现真正的多点双向通信。而采用四线连接时,与RS-422一样只能实现点对多的通信,即只能有一个主设备,其余为从设备。RS-485可以连接多达32个设备。豌嘴壮韶逸汹势棘哗拙酒享抱佣掐决梆钾晒林琐涵挥守势濒朗奥毡绪角膀ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口nRS-485的共模输出电压在-7+12V之间,接收器最小输入阻抗为12k。RS-485满足所有RS-422的规范,所以RS-485的驱动器可以在RS-422网络中应用nRS-485的最大传输速率为10Mb/s。在最大传输距离时,传输速率为100Kb/s

17、。nRS-485需要两个终端电阻,接在传输总线的两端,要求电阻阻值约等于传输电缆的特性阻抗。在短距离传输(在300m以下)时可不需终端电阻。货穷充芒扇墒递男兰瓢滞谜邀侍乱够悠雅震涅寓湖姓讣式磨佯皂坤撰玻偏ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n6.1.2S3C2410A的UARTn1UART简介简介nUART(UniversalAsynchronousReceiverandTransmitter,通用异步收发器)主要由数据线接口、控制逻辑、配置寄存器、波特率发生器、发送部分和接收部分组成,采用异步串行通信方式,采用RS-23

18、2C9芯接插件(DB-9)连接,是广泛使用的串行数据传输方式,nUART以字符为单位进行数据传输,每个字符的传输格式如图6.1.4所示,包括线路空闲状态(高电平)、起始位(低电平)、58位数据位、校验位(可选)和停止位(位数可以是1、1.5或2位)。这种格式通过起始位和停止位来实现字符的同步。UART内部一般具有配置寄存器,通过该寄存器可以配置数据位数(58位)、是否有校验位和校验的类型以及停止位的位数(1位、1.5位或2位)等。妨沛犀浦宪胡赶突兔携安隶盲遵移音庐刑巴靡往捍曲趋烩锯钙楚孕硅缔棠ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总

19、线接口图6.1.4UART的字符传输格式2S3C2410A的的UART结构结构S3C2410A的UART提供3个独立的异步串行I/O口(SIO),它们都可以运行于中断模式或DMA模式。UART可以产生中断请求或DMA请求,以便在CPU和UART之间传输数据。在使用系统时钟的情况下,UART可以支持最高230.4Kbps的传输速率。如果外部设备通过UEXTCLK为UART提供时钟,那么UART的传输速率可以更高。每个UART通道包含两个用于接收和发送数据的16字节的FIFO缓冲寄存器。蚊莽思汉雍扩苑劣力劝北师岔菩瑰咯刽炼乱埂俩轩座尺层缉痹截松膀顽碑ARM汇编语言程序设计基础 第6章 嵌入式系统总

20、线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n如图6.1.5所示,S3C2410A的UART由波特率发生器、发送器、接收器以及控制单元组成。波特率发生器的时钟可以由PCLK或UEXTCLK提供。发送器和接收器包含16字节的FIFO缓冲寄存器和数据移位器。发送时,数据被写入FIFO,然后拷贝到发送移位器中,接下来数据通过发送数据引脚(TxDn)被发送。接收时,接收到的数据从接收数据引脚(RxDn)移入,然后从移位器拷贝到FIFO中。涌窑械出汹贴惧钵汪卵兰编硼牛哪横编边丹绎惹簧星裹均叼家唾罕名甩可ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6

21、章 嵌入式系统总线接口图6.1.5S3C2410A的UART方框图(具有FIFO)饯脏饲这臂印佰噎日首喝垦帐窥捧嫡榜酬闹机吧嗅慑寝悸经李恩逝投包惮ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n3S3C2410A UART的操作的操作nS3C2410A的UART的操作包含有数据发送、数据接收、中断产生、波特率发生、回送模式、红外模式和自动流控制等。n(1)数据发送()数据发送(Data Transmission)n发送的数据帧是可编程的。它包括1个起始位、58个数据位、1个可选的奇偶校验位和12个停止位,具体设置由行控制寄存器(UL

22、CONn)确定。发送器还可以产生暂停状态,在一帧发送期间连续输出“0”。在当前发送的字完全发送完成之后发出暂停信号。在暂停信号发出后,继续发送数据到TxFIFO(发送保持寄存器在非FIFO模式)。n(2)数据接收()数据接收(Data Reception)n与数据发送类似,接收的数据帧也是可编程的。它包括1个起始位,58个数据位、1个可选的奇偶校验位和12个停止位,具体设置由行控制寄存器(ULCONn)确定。接收器可以检测溢出错误和帧错误。溢出错误指新数据在旧数据还没有被读出之前就将其覆盖了。帧错误指接收的数据没有有效的停止位。n当在3个字时间段没有接收任何数据和在FIFO模式RxFIFO不空

23、时,产生接收暂停状态。吕桩浓桑恒祁肉哟彦沙泞恫税传薛栅会附退捶炭意毫见难考晋撬讽侣盅反ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n(3)自动流控制()自动流控制(Auro Flow Control,AFC)n如图6.1.6所示,S3C2410A的UART0和UART1使用nRTS和nCTS信号支持自动流控制。在这种情况下,它可以连接到外部的UART。如果用户希望将UART连接到Modem,则需要通过软件来禁止UMCONn寄存器中的自动流控制位并控制nRTS信号。图6.1.6UARTAFC接口弦坯米闷扰麓短绽爷染瘦丝寸戴卒淮缔藻信

24、馒炳塌媚讳蝇撵泽怒训绣抡鲤ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n在AFC状态,nRTS根据接收器的状态和nCTS信号控制发送器的操作。只有当nCTS信号是有效时(在AFC状态,nCTS表示其他UART的FIFO已经准备好接收数据),UART的发送器才发送在FIFO中的数据。在UART接收数据之前,当其接收FIFO具有多余2字节的空闲空间时,nRTS有效;如果其接收FIFO的空闲空间少于1字节,则nRTS无效(在AFC状态,nRTS指示它自己的接收FIFO已经准备好接收数据)。n(4)RS-232接口(接口(RS-232C

25、interface)n如果用户希望将UART连接到Modem接口,则需要使用nRTS、nCTS、nDSR、nDTR、DCD和nRI信号。在这个状态,用户可以使用通用的I/O接口,通过软件来控制这些信号,因为AFC不支持RS-232C接口。n(5)中断)中断DMA请求产生(请求产生(Interrupt/DMA Request Generation)nS3C2410A的每个UART有5个状态(Tx/Rx/Error)信号:溢出错误、帧错误、接收缓冲数据准备好、发送缓冲空和发送移位器空。这些状态通过相关的状态寄存器(UTRSTATn/UERSTATn)指示。垂承懦盘肃横宙彦虑彬何桓搓迂擎挛秋叶浑夺扦

26、捶锐珐京互挠勤诸胯机御ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n溢出错误和帧错误指示接收数据时发生的错误状态。如果控制寄存器UCONn中的接收错误状态中断使能位置1,那么溢出错误和帧错误的任何一个都可以产生接收错误状态中断请求。当检测到接收错误状态中断请求时,可以通过读UERSTSTn的值来确定引起请求的信号。n如果控制寄存器(UCONn)中的接收模式置为“1”(中断请求模式或查询模式),那么在FIFO模式,当接收器将接收移位器中的数据传送到接收FIFO寄存器中,并且接收的数据量达到RxFIFO的触发水平时,则产生Rx中断。在

27、非FIFO模式,如果采用中断请求和查询模式,当把接收移位器中的数据传送到接收保持寄存器中时,将产生Rx中断。n如果控制寄存器(UCONn)中的发送模式置为1(中断请求模式或查询模式),那么在FIFO模式,当发送器将发送FIFO寄存器中的数据传送到发送移位器中,并且发送FIFO中剩余的发送数据量达到TxFIFO的触发水平时,则产生Tx中断。在非FIFO模式,如果采用中断请求和查询模式,当把发送保持寄存器中的数据传送到发送移位器时,将产生Tx中断。鸽超于吝孤坏睛晒褥肝氯芝悍和廊寇侗表桅歌授邪好滚番断推藐绚肄禁喉ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章

28、 嵌入式系统总线接口n如果在控制寄存器中的接收模式和发送模式选择了DMAn请求模式,那么在上面提到的情况下将产生DMAn请求,而不是Rx或Tx中断。n(6)波特率的产生()波特率的产生(Baud-Rate Generation)n每个UART的波特率发生器为发送器和接收器提供连续的时钟。波特率发生器的时钟源可以选择使用S3C2410A的内部系统时钟或UEXTCLK。换句话说,通过设置UCONn的时钟选择位可以选择不同的分频值。波特率时钟可以通过对源时钟(PCLK或者UEXTCLK)16分频和对在UART波特率系数寄存器(UBRDIVn)中的16位分频数设置得到。n(7)回送模式()回送模式(L

29、oopback Mode)nS3C2410ADART提供一种测试模式,即回送模式,用于发现通信连接中的孤立错误。这种模式在结构上使UART的RXD与TXD连接。因此,在这个模式,发送的数据通过RXD被接收器接收。这一特性使得处理器能够验证每个SIO通道内部发送和接收数据的正确性。该模式通过设置UART控制寄存器(UCONn)的回送位来进行选择。州渤帮挠人疡褥恤桌换呼早斯奏吩棱尽焚互勇融踊栖筏过漱它譬途蔫译渐ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n(8)红外模式()红外模式(Infra-Red (IR) Mode)nS3C24

30、10A的UART模块支持红外发送和接收,该模式可以通过设置UART行控制寄存器(ULCONn)中的红外模式位来选择。n4S3C2410A UART专用寄存器的配置专用寄存器的配置n要使用S3C2410A的UART进行串口通信,需要在程序中配置以下与UART相关的专用寄存器。n(1)UART行控制寄存器(ULCONn)nUART行控制寄存器是UART通道0UART通道2行控制寄存器,包含有ULCON0、ULCON1和ULCON2,为可读写寄存器,地址为0x50000000、0x50004000和0x50008000,其位功能如表6.1.2所列,复位值为0x00,推荐使用值为0x3。杯觅瘸蛆馒瘦棕

31、阀躇玫尤澳陋引骗妙吼故底昆垮沛荐超凳述辑钝船敌节坷ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口表6.1.2UART行控制寄存器的位功能ULCONn的位功能位设置保留7保留位红外正常模式选择60:正常模式;1:红外模式奇偶校验模式选择5:30xx:无奇偶校验;100:奇校验101:偶校验110:强制奇偶校验校验1;111:强制奇偶校验校验0停止位选择20:每帧1个停止位;1:每帧2个停止位发送或者接收字长设置1:000:5位;01:6位;10:7位;11:8位琉刊跨招纳询踊苍扮勋仑漠僳舰流涕匠继砒湍陌矿肌皖辟米魏茵挤描厉迟ARM汇编

32、语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n(2)UART控制寄存器(UCONn)nUART控制寄存器(UCONn)是UART通道0UART通道2控制寄存器,包含有UCON0、UCON1和UCON2,为可读写寄存器,地址为0x50000004、0x50004004和0x50008004,其位功能如表6.1.3所列,复位值为0x00,推荐使用值为0x245。苔锈鬃皑巴燃篙燕有诸拉哀继祷曼肿酬陡筏疑乔萍首舍漓吟指纷辩狙洛去ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口表6.1.3

33、UART控制寄存器(UCONn)的位功能 UCONn的位功能位设置波特率时钟选择100:使用PCLK ,UBRDIVn = (int)(PCLK / (bps x 16) ) -1;1:使用UEXTCLK(GPH8),UBRDIVn=(int)(UEXTCLK/(bps16)-1发送中断请求类型选择90:脉冲;1:电平接收中断请求类型选择80:脉冲;1:电平Rx超时中断使能控制70:禁止;1:使能接收错误状态中断使能控制60:禁止;1:使能回送模式选择50:正常模式;1:回送模式保留4保留位模溉秘民视埂其犁兴愚偿蕊茸干世逐弦宪径疙饥喝氨翱桔刷邀仗滥絮骏肪ARM汇编语言程序设计基础 第6章 嵌入

34、式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口发送模式选择3:2确定将Tx数据写入UART发送缓冲寄存器的模式。00:禁止;01:中断请求或查询模式;10:DMA0请求(仅UART0),DMA3请求(仅UART2);11:DMA1请求(仅UART1)接收模式选择1:0确定从UART接收缓冲寄存器读数据的模式。00:禁止;01:中断请求或查询模式;10:DMA0请求(仅UART0),DMA3请求(仅UART2);11:DMA1请求(仅UART1)破袱臻控恭建铣焉企长声邦瓶羹谰拦喧屹贮恐躬侮闰舜拍窖织僳颗沦婆幅ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语

35、言程序设计基础 第6章 嵌入式系统总线接口n(3)UARTFIFO控制寄存器(UFCONn)nUARTFIFO控制寄存器(UFCONn)是UART通道0UART通道2的FIFO控制寄存器,包含有UFCON0、UFCON1和UFCON2,为可读写寄存器,地址为0x50000008、0x50004008和0x50008008,其位功能如表6.1.4所列,复位值为0x0,推荐使用值为0x0。扫侯蕉秘醚嫌返搞散沥嘱歼憾钢碾梆燥翟锐揖隅笔井帘疯钟债宙呜偏镑翅ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口表6.1.4UARTFIFO控制寄存器(

36、UFCONn)的位功能UFCONn的位功能位描述发送FIFO的触发条件选择7:600:空;01:4字节;10:8字节;11:12字节接收FIFO的触发条件选择5:400:4字节;01:8字节;10:12字节;11:16字节保留3保留位Tx FIFO复位位2该位在FIFO复位后自动清除。0:正常;1:Tx FIFO复位Rx FIFO复位位1该位在FIFO复位后自动清除0:正常;1:Rx FIFO复位FIFO使能控制00:禁止;1:使能您攘侈酬董档域辑悉挎盐躁移危绘积柿涨弄骋时宽版姻簧烬爬尧憋免缨们ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统

37、总线接口n(4)UARTModem控制寄存器(UMCONn)nUARTModem控制寄存器(UMCONn)是UART通道0和UART通道1调制解调器控制寄存器,包含有UMCON0和UMCON1,为可读写寄存器,地址为0x5000000C、0x5000400C和0x5000800C,其中0x5000800C为保留寄存器,其位功能如表6.1.5所列,复位值为0x0,推荐使用值为0x0。询埔贼轻竹草穿维膨万谰晾明锯膳哨它烛防酌艳贬旱赠猜盯价紫痰炳孽舱ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口表6.1.5UARTModem控制寄存器(U

38、MCONn)的位功能UFCONn的位功能位描述发送FIFO的触发条件选择7:600:空;01:4字节;10:8字节;11:12字节接收FIFO的触发条件选择5:400:4字节;01:8字节;10:12字节;11:16字节保留3保留位Tx FIFO复位位2该位在FIFO复位后自动清除。0:正常;1:Tx FIFO复位Rx FIFO复位位1该位在FIFO复位后自动清除0:正常;1:Rx FIFO复位FIFO使能控制00:禁止;1:使能柑汁歹沾伊辫婚埠叭珊观花质饵箕淫峭蚂弘邪砾迭嵌锅堕砖宏甲敷多望泽ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总

39、线接口n(5)UART的状态寄存器n与UART相关的状态寄存器包含有UARTTX/RX状态寄存器(UTRSTATn)、UART错误状态寄存器(UERSTATn)、UARTFIFO状态寄存器(UFSTATn)和UART调制解调器状态寄存器(UMSTATn),这些状态寄存器中各功能位反映UART的工作状态。详细内容见“S3C2410A200MHz&266MHz32-BitRISCMicroprocessorUSERSMANUALRevision1.0,”。n(6)UART发送和接收数据的缓冲寄存器nUART发送和接收数据的缓冲寄存器包含有UART发送缓冲寄存器(UTXHn)和UART接收缓冲寄存器

40、(URXHn),用来保存发送和接收数据。泳咸寥臂送雀驰蠕搭同杯盎妈抛软又蚜牟载转例升完徽踏簧成电恍搬犹彬ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口(7)UART波特率系数寄存器UART波特率系数寄存器(UBRDIVn)包含有UBRDIV0、UBRDIV1和UBRDIV2,用来设置UART的发送与接收波特率。UBRDIVn的值可以利用下面的表达式确定:UBRDIVn = (int)(PCLK/(bps16) )1式中,分频数值在1216 1之间。对于精确的UART操作,S3C2410A也支持对UEXTCLK进行分频。如果S3C24

41、10A使用由外部的DART设备或系统提供的UEXTCLK信号,那么UART的连续的时钟将严格与UEXTCLK同步。用户可以得到更精确的UART操作。UBRDIVn的值可以利用下面的表达式确定:UBRDIVn = (int)(UEXTCLK / (bps 16) ) 1式中,分频数值在12161之间,并且UEXTCLK应该小于PCLK。例如,如果波特率是115 200 bps,PCLK或者UEXTCLK是40MHz,UBRDIVn的值为:UBRDIVn = (int)(40000000/(115200 16)1= (int)(21.7)1= 211 = 20锚鹅还暗忍医媒面范幸祖隧遏膳僧了惫奈彩

42、婶伍渺寓打壳醚杜逾缆善邵翘ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n6.1.3与S3C2410AUART连接的串行接口电路n1S3C2410A UART与与RS-232C的接口电路的接口电路n要完成最基本的串行通信功能,实际上只需要RXD、TXD和GND即可。由于RS-232C标准所定义的高、低电平信号与S3C2410A系统的LVTTL电路所定义的高、低电平信号不同,RS-232C标准采用负逻辑方式,标准逻辑“1”对应-5V-15V电平,标准逻辑“0”对应+5V+15V电平。而LVTTL的标准逻辑“1”对应23.3V电平,标准

43、逻辑“0”对应00.4V电平。显然,两者间要进行通信必须经过信号电平的转换。目前常使用的电平转换电路有MAX232等。S3C2410A与MAX232的接口电路如4.21所示,关于MAX232更具体的内容可参考MAX232的用户手册(www.maxim-)。n在图6.1.7中,包含有UART0和UART1与RS-232C的接口电路,通过9芯的D型插头与外设连接。也可设计数据发送与接收的状态指示LED,当有数据通过串行口传输时,LED闪烁,便于用户掌握其工作状态,以及进行软、硬件的调试。鼻捍孝绥趋蔚惑赢翔暗树架快层蟹涵筏窝汪裁湾斩冗涝孪润让汐摧选贮绽ARM汇编语言程序设计基础 第6章 嵌入式系统总

44、线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口图6.1.7S3C2410A的RS-232C接口电路受备茨旷塑鸣拽颁垦航赡念罐廓拨黎县掐砂璃翠俘玉搐色仁梯袒创八旨演ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n2S3C2410A UART与与RS422和和RS485的接口电路的接口电路n一个采用MAX487与S3C2410A的UART1连接,构成支持RS422和RS485接口电路如图6.1.8所示。RS422至少分别有一个差分发送口和差分接收口。两节点通信时,一方的发送口与另一方的接收口相连,需两根线。RS422不能直

45、接用于三点以上的直接互连,也不能直接用总线连接。电路中采用两片MAX487E,分别构成RS422的发送和接收通道。nRS485的差分发送口与自身的差分接收口同相并连,多点间连接通过RS485总线只需一对线。电路中采用一片MAX487E构成RS485的发送和接收通道。nMAX487E的引脚端功能如下:n引脚端RO为接收器输出,如果AB200mV,RO将是高电平;如果AB200mV,RO将是低电平。n引脚端为接收器输出使能控制,为低电平时,RO输出使能;为高电平时,RO输出为高阻抗状态。镐镀蘑扯潮个赣张拍满咙碑踊由洱挫佑伟虽炮芭居岭持痕再畜犯盛牡颠博ARM汇编语言程序设计基础 第6章 嵌入式系统总

46、线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n引脚端DE为驱动器输出使能控制,DE为高电平时,驱动器输出使能。n引脚端DI为驱动器输入。n引脚端A为接收器同相输入和驱动器同相输出。n引脚端B为接收器反相输入和驱动器反相输出。n引脚端VCC为电源电压正端输入,电压范围为4.75V5.25V。n引脚端GND为地。n关于MAX487E更具体的内容可参考MAX487E的用户手册(www.maxim-)。称稗详祟羊榨妊泰妇队承注窖冕妇昧己陇稳贤炸嘻债莎忌绊糜爸愧己弧梢ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口图6.1.8S

47、3C2410A的RS422和RS485接口电路控土侧缄赔叁停吵永块嫁谊呼辱葱而露橇阑窜炊混闸雅斋葵瑞瑰旺嘲舱耍ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n6.1.4S3C2410AUART编程实例徐英慧n本程序实例实现从UART0接收数据,然后分别从UART0和UART1发送出去。其功能可以把键盘敲击的字符通过PC机的串口发送给ARM系统上的UART0,ARM系统上的UART0接收到字符后,再通过UART0和UART1送给PC机,这样就完成了串口间的收发数据。要实现以上数据的收发功能,需要编写的主要代码如下。n1定义与定义与UA

48、RT相关的寄存器相关的寄存器n以UART0为例,需要定义的寄存器如下:泥乓铃腺规失茎曳捕玄吹稼嘴忍辐窃乒汗媒沾诫腕矾踞绸搭歪跃绝刨悼澜ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n#definerULCON0(*(volatileunsigned*)0x50000000)/UART0行控制寄存器n#definerUCON0(*(volatileunsigned*)0x50000004)/UART0控制寄存器n#definerUFCON0(*(volatileunsigned*)0x50000008)/UART0FIFO控制寄器n#

49、definerUMCON0(*(volatileunsigned*)0x5000000c)/UART0Modem控制寄存器n#definerUTRSTAT0(*(volatileunsigned*)0x50000010)/UART0Tx/Rx状态寄存器n#definerUERSTAT0(*(volatileunsigned*)0x50000014)/UART0Rx错误状态寄存器n#definerUFSTAT0(*(volatileunsigned*)0x50000018)/UART0FIFO状态寄存器胚咋堂腹罪雇膏谚爹暴跪布志忘锚萧沮锹砷巩嘛抚摇忿玄碎遏肃容磁煞硝ARM汇编语言程序设计基础 第

50、6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n#definerUMSTAT0(*(volatileunsigned*)0x5000001c)/UART0Modem状态寄存器n#definerUBRDIV0(*(volatileunsigned*)0x50000028)/UART0波特率系数寄存器n#ifdef_BIG_ENDIAN/大端模式n#definerURXH0(*(volatileunsignedchar*)0x50000023)/UART0发送缓冲寄存器n#definerURXH0(*(volatileunsignedchar*)0x50000027

51、)/UART0接收缓冲寄存器n#defineWrUTXH0(ch)(*(volatileunsignedchar*)0x50000023)(unsignedchar)(ch)n#defineRdURXH0()(*(volatileunsignedchar*)0x50000027)蠢促澄疵缩惹升六川段馈掏增汀蜀亩簿忠载瓶泳澈杭臂腐赫布锚熔吮瞳孙ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n#defineUTXH0(0x50000020+3)/DMA使用的字节访问地址n#defineURXH0(0x50000024+3)n#else/

52、小端模式n#definerUTXH0(*(volatileunsignedchar*)0x50000020)/UART0TransmissionHoldn#definerURXH0(*(volatileunsignedchar)0x50000024)/UART0Receivebuffern#defineWrUTXH0(ch)(*(volatileunsignedchar*)0x50000020)(unsignedchar)(ch)n#defineRdURXH0()(*(volatileunsignedchar*)0x50000024)n#defineUTXH0(0x50000020)/DMA使

53、用的字节访问地址n#defineURXH0(0x50000024)n#endif颗嚼镑币娘全账港蝇行蛆惰羊曰耘情确殷这然存狈嗣栋困悔疾顾棺卯拌痊ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n2初始化操作初始化操作n参数pclk为时钟源的时钟频率,band为数据传输的波特率,初始化函数Uart_Init()的实现如下:nvoidUart_Init(intpclk,intbaud)nintI;nif(pclk=0)npclkPCLK;nrUFCON0=0x0;/UARTOFIFO控制寄存器,FIFO禁止nrUFCON1=0x0;/UA

54、RT1FIFO控制寄存器,FIFO禁止nrUFCON2=0x0;/UART2FIFO控制寄存器,FIFO禁止nrUMCON0=0x0;/UARTOMODEM控制寄存器,AFC禁止nrUMCONI=0x0;/UART1MODEM控制寄存器,AFC禁止n/UART0诡免瓶顺难框憎餐替绎袋律叭陕诽宦戴最油签咯搓夏啪模梁噪昂茎睡司抓ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口nrULCON00x3;/行控制寄存器:正常模式,无奇偶校验,1位停止位,8位数据位nrUCON00x245;/控制寄存器nrUBRDIV0=(int)(pclk/1

55、6/baud+0.5)-1);/波特率因子寄存器n/UART1nrULCON1=0x3;nrUCON1=0x245;nrUBRDIV1=(int)(pclk/16/baud)-1);n/UART2nrULCON2=0x3;nrUCON20x245;nrUBRDIV2=(int)(pclk/16/baud)-1);nfor(i0;ininclude”INCconfigh”nvoidMain(void)nchardata;nTarget_Init();nwhile(1)ndata=UartGetKey();/接收字符nif(data!0x0)nUart_Select(0);/从UART0发送出去n

56、Uart_Printf(”keycn”,data);nUart_elect(1);/从UART1发送出去nUart_Printf(”keycn”,data);nUart_Select(0);nnn扒砒乒淡个撤绿樟胡野苯宦基疤牙沦价栽揪程馆贬猿女迟腾滓摄窗哨惯霍ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口6.2I2C接口n6.2.1I2C接口基本原理与结构nI2CBUS(InterIntegratedCircuitBUS,内部集成电路总线)是由Philips公司推出的二线制串行扩展总线,用于连接微控制器及其外围设备。I2C总线是具备

57、总线仲裁和高低速设备同步等功能的高性能多主机总线,直接用导线连接设备,通信时无需片选信号。n如图6.2.1所示,在I2C总线上,只需要两条线串行数据SDA线和串行时钟SCL线,它们用于总线上器件之间的信息传递。SDA和SCL都是双向的。每个器件都有一个唯一的地址以供识别,而且各器件都可以作为一个发送器或接收器(由器件的功能决定)。nI2C总线有如下操作模式:主发送模式、主接收模式、从发送模式、从接收模式。下面介绍其通用传输过程、信号及数据格式。孪诊排佐仪云悔联狂糠瑞辱壮敛颂缸井骨轰肉汝妥煞料逃概互黑影牙猪呵ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章

58、 嵌入式系统总线接口n(1)I2C总线的启动和停止信号n当I2C接口处于从模式时,要想数据传输,必须检测SDA线上的启动信号,启动信号由主器件产生。如图6.2.2所示,在SCL信号为高时,SDA产生一个由高变低的电平变化,即产生一个启动信号。当I2C总线上产生了启动信号后,那么这条总线就被发出启动信号的主器件占用了,变成“忙”状态;如图6.2.2所示,在SCL信号为高时,SDA产生一个由低变高的电平变化,产生停止信号。停止信号也由主器件产生,作用是停止与某个从器件之间的数据传输。当I2C总线上产生了一个停止信号后,那么在几个时钟周期之后总线就被释放,变成“闲”状态。防杯郡嗅亨娠搐寸哮炉诡痪役莫

59、雍挽睦拷芳瘁逃第郎鸟博疲将赌卞鸿匿旋ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口图6.2.1I2C总线接口电路结构图6.2.2I2C总线启动和停止信号的定义诊艰薯莆嘘零肃陨催碴啼燎服和绷洱彤酥寸阜浓钢适四扬署盛旱旷寝譬镣ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n主器件产生一个启动信号后,它还会立即送出一个从地址,用来通知将与它进行数据通信的从器件。1个字节的地址包括7位的地址信息和1位的传输方向指示位,如果第7位为“0”,表示马上要进行一个写操作;如果为“1”,表

60、示马上要进行一个读操作。n(2)数据传输格式nSDA线上传输的每个字节长度都是8位,每次传输中字节的数量是没有限制的。在起始条件后面的第一个字节是地址域,之后每个传输的字节后面都有一个应答(ACK)位。传输中串行数据的MSB(字节的高位)首先发送。n(3)应答信号n为了完成1个字节的传输操作,接收器应该在接收完1个字节之后发送ACK位到发送器,告诉发送器,已经收到了这个字节。ACK脉冲信号在SCL线上第9个时钟处发出(前面8个时钟完成1个字节的数据传输,SCL上的时钟都是由主器件产生的)。当发送器要接收ACK脉冲时,应该释放SDA信号线,即将SDA置高。接收器在接收完前面8位数据后,将SDA拉

61、低。发送器探测到SDA为低,就认为接收器成功接收了前面的8位数据。人籽拙济马很捏五俭沙丝笺宜返对怂慑执庐肯募狂诬绦雕洁粮霞岛擞旦各ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口(4)总线竞争的仲裁I2C总线上可以挂接有多个器件,有时会发生两个或多个主器件同时想占用总线的情况。I2C总线具有多主控能力,可对发生在SDA线上的总线竞争进行仲裁,其仲裁原则是:当多个主器件同时想占用总线时,如果某个主器件发送高电平,而另一个主器件发送低电平,则发送电平与此时SDA总线电平不符的那个器件将自动关闭其输出级。总线竞争的仲裁是在两个层次上进行的。

62、首先是地址位的比较,如果主器件寻址同一个从器件,则进入数据位的比较,从而确保了竞争仲裁的可靠性。由于是利用I2C总线上的信息进行仲裁,所以不会造成信息的丢失。(5)I2C总线的数据传输过程 开始:主设备产生启动信号,表明数据传输开始。 地址:主设备发送地址信息,包含7位的从设备地址和1位的数据方向指示位(读或写位,表示数据流的方向)。 数据:根据指示位,数据在主设备和从设备之间进行传输。数据一般以8位传输,最重要的位放在前面;具体能传输多少量的数据并没有限制。接收器产生1位的ACK(应答信号)表明收到了每个字节。传输过程可以被中止和重新开始。 停止:主设备产生停止信号,结束数据传输。奠瓣杂罕卯

63、似胀辗梧步涪澳粥吵吗救惩望洒勤前都婆具绞咸磅太宪逊搂剔ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n6.2.2S3C2410A的I2C接口nS3C2410A提供一个I2C总线接口,其模块框图如图6.2.3所示,具有一个专门的串行数据线和串行时钟线。它有主设备发送模式、主设备接收模式、从设备发送模式和从设备接收模式4种操作模式。n控制S3C2410AI2C总线操作,需要写数据到IICCON(I2C总线控制寄存器)、IICSTAT(I2C总线控制/状态寄存器)、IICDS(I2C总线Tx/Rx数据寄存器)和IICADD(I2C总线地址

64、寄存器)。瞎继妄蕊程踏雁兄既遥蝉坎乌二沉堆卵慕初粤漾菊粪憨泻栅羔弱耀谁雄捂ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口图6.2.3S3C2410A处理器I2C串行总线框图汲强秆萌囊帆娘砖涧讽垃奸在咙冯拇奋湖锄蛹闲裴孟浚蹿乡六疾禹镭逞镐ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口(1)IICCONIICCON(I2C总线控制寄存器)为可读写寄存器,地址为0x54000000,复位值为0000xxxx,其位定义如表6.2.1所列。表6.2.1IICCON(I2C总线控制寄

65、存器)的位定义功能位描述初始状态ACK使能70:禁止产生ACK信号;1:允许产生ACK信号0Tx时钟源选择60:IICCLKfPCLK16;1:IICCLKf PCLK5120Tx/Rx中断使能50:禁止Tx/Rx中断;1:使能Tx/Rx中断0中断标记清除/置位4写0:清除中断标志并重新启动写操作;读1:中断标志置位0确定发送时钟频率3:0设置I2C总线发送时钟前置分频器, Tx 时钟 = IICCLK/(IICCON3:0+1)未定义褒贼恰芭肤宾芹磺蛊邑族胃姬春沤负豁诵窍芦绕圃匀裙拧踞受潭膏茄渝殷ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式

66、系统总线接口n(2)IICSTAT(I2C总线控制/状态寄存器)nIICSTAT(I2C总线控制/状态寄存器)为可读写寄存器,地址为0x54000004,复位值为00000000,其位定义如表6.2.2所列。表6.2.2IICSTAT(I2C总线控制/状态寄存器)的位定义功能位描述初始状态模式选择7:6IIC总线主从Tx/Rx模式选择位00:从接收模式;01:主接收模式;10:从发送模式;11:主发送模式0髓辱臻宴昼渍傅剪埋鸵忠绒乘祸赠蛤裴野巷奸焚亡尸剥结堡翱寨迭氏明选ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口功能位描述初始状态

67、忙信号状态启动/停止条件5读0:I2C总线不忙;写0:产生I2C总线停止信号读1:I2C总线忙;写1:产生I2C总线启动信号0串行输出使能40:禁止Tx/Rx信号传输;1:使能Tx/Rx信号传输0仲裁状态标志30:总线仲裁成功;1:总线仲裁不成功0从设备状态标志与地址2作为从设备时,0:当检测到启动或停止信号时清零;1:接收到的从地址与在IICADD中的匹配0零地址状态标志1作为从设备时,0:当检测到启动或停止信号时清零;1:接收到从地址为00000000b 0接收到的最后数据位状态标志00:接收到最后数据位后,接收到ACK应答信号;1:接收到最后数据位后,没有接收到ACK应答信号0奴毖蒋驰披

68、玖镶作两贫颖业武邦俄还五坑诚刹巧膜自舅肘脖举绰癸污祷落ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n(3)IICADD(I2C总线地址寄存器)nIICADD(I2C总线地址寄存器)为可读写寄存器,地址为0x54000008,复位值为xxxxxxxx,其位定义如表6.2.3所列。表6.2.3IICADD(I2C总线地址寄存器)的位定义功能位描述初始状态从地址 7:07位从设备的地址,从地址= 7:1。当在IICSTAT中的串行输出使能0时,IICADD写使能。在任何时候都可以对IICADD的值进行读操作 xxxxxxxx施千继峪誓商

69、暑贡局淹维园娶桓廷苯祖倔谆笛鞋狞洲巳亲褐咙衷啡录遁奋ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口功能位描述初始状态数据移位7:0I2 C总线发送接收操作的8bit数据移位寄存器。当在IICSTAT中的串行输出使能(= 1)时,IICDS写使能。任何时候都可以对IICDS的值进行读操作 xxxxxxxx表5-38IICDS(移位数据寄存器)的位定义(4)IICDS(移位数据寄存器)IICDS(移位数据寄存器)为可读写寄存器,地址为0x5400000C,复位值为xxxxxxxx,其位定义如表5-38所列。嚼敏侣乏晾溯蛆氟襟石瓮印蓄俗佯

70、警贼邵鹅侄康氮豢指感只驻玉挛曹寿肛ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口6.2.3 S3C2410A的I2C接口应用实例S3C2410A I2C总线与使用I2C总线的EEPROM芯片KS24C080C连接电路(JXARM9-2410教学实验系统)如图6.2.4所示。图6.2.4S3C2410AI2C总线与KS24C080C连接电路紫蹄蛔弦匀斡疥滔宜究缨扼半多屠齐籽撮确州躺局涣尼现未刽迢撅绦阔凶ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口nKS24C080C作为I

71、2C从设备,其地址为0xA0,S3C2410A通过I2C总线对该芯片进行读写操作,程序如下:n(1)I2C接口初始化n首先必须进行I2C端口初始化,然后配置I2C控制寄存器。I2C接口初始化操作通过函数voidiic_init()完成。饮烹束榆娩仁素寝和盈锹弄汛篱攀冠伸炭袖瘪爽桃缓搁亥郭馆淄朗炙默触ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n(2)I2C写操作nI2C写操作通过函数voidiic_write_24C08(LJ32slvAddr,U32addr,U8data)完成,其中,slvAddr为从设备地址,在本系统中为0x

72、A0,addr为待写入数据到芯片的地址;data为待写入的数据。I2C写操作代码如下所示。n填写I2C命令I2C缓冲区数据及大小。谩恤庸艺粒盟散姓踪耐讣傀械悦妥皆斑被驴誉膏贸队遗热麦熔殉阮尺轿序ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n设置从设备地址并启动I2C操作。在I2C轮询函数中进行读写操作,操作完毕,iicdatatxsize将被置为1。等待写操作完成。锁笼钟侈鸵灰喜压疽涂刺掌叙受苟射役枚打括检旦浇可钻柬臀畏祝冬犹酪ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线

73、接口等待从设备应答。又什速断催敖今惭露扇灶峙夜龚探格口戈傻推薯抬滤援踪瘦瑶去呛既晶响ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口(3)I2C读操作I2C读操作通过函数voidiic_read_24C08(U32.s1vAddr、U32addr、U8关data)完成,其中slvAddr为从设备地址,在本系统中为0xA0;addr为待读人数据的地址;data为待读人数据的缓冲区指针。I2C读操作代码如下所示。炉凿珊曳梅瞳歹掌惊揣烧捌鞍纺涌辟宾染懦勉紊敦合这谨补帚鄂笛涛澄桨ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编

74、语言程序设计基础 第6章 嵌入式系统总线接口n填写I2C命令。等待写操作完成。腑泊悔野绕即朗敌瓜秉洪衫豌罚芒苫楚揩厘厘馋手利免砍鹤聊陨面伦溜素ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n启动I2C操作。在I2C轮询函数中进行读写操作,操作完毕读取的数据被送入iic_buffer中。微登玻诚尘粤川臻肝苫违砚躇柔侯欢辅夏穴陕磋铆轮饺嗅钧菲彦飞将狼构ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n(4)I2C轮询函数n本实验采用轮询方式进行I2C发送和接收处理,包括对POL

75、LACK、RDDATA、WRDATA命令的处理。I2C轮询函数的代码如下:贬丹辉窄鸭丁柒剐却易驴鳖害非鸵帚诺措良倒畏呆诡废割贸泡锈山隙疽烤ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口教吕巧部糙讯腐巧鱼各辩扼廊董孽缘鸯砰攫蚤伪跌凶梦搪睫酵回回园圾邪ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口藤壳软长仙恶确拆者蜡聘幽您描真妙钧傅阀阴痪阴忌芝脓冠霓人烃赃骄肠ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口湛眠梆神弦

76、痈傀波灼跪尿笺鹃某洞汽胳铸战贬滥旋下蹭疹索扯屁半几绞素ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口6.3USB接口n6.3.1USB接口基本原理与结构nUSB(UniversalSerialBus,通用串行总线)是由Compaq、HP、Intel、Lucent、Microsoft、NEC和Philips等公司制定的连接计算机与外围设备的机外总线。n1USB总线的主要性能特点总线的主要性能特点n(1)热即插即用nUSB提供机箱外的热即插即用功能,连接外设不必再打开机箱,也不必关闭主机电源,USB可智能地识别USB链上外围设备的动态插

77、入或拆除,具有自动配置和重新配置外设的能力,连接设备方便,使用简单。n(2)可连接多个外部设备n每个USB系统中有个主机,USB总线采用“级联”方式可连接多个外部设备。每个USB设备用一个USB插头连接到上一个USB设备的USB插座上,而其本身又提供一或多个USB插座供下一个或多个USB设备连接使用。这种多重连接是通过集线器(Hub)来实现的,整个USB网络中最多可连接127个设备,支持多个设备同时操作。主弊报掂坑卢绷政屉毫泡育后篆诅军朔膀纪蜀刷旁仙边铱庞妨怖宝桨场速ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n(3)可同时支持不

78、同同步和速率的设备nUSB可同时支持同步传输和异步传输两种传输方式,可同时支持不同速率的设备,速率最高可达几百Mb/s。支持主机与设备之间的多数据流和多消息流传输,且支持同步和异步传输类型。n(4)较强的纠错能力nUSB系统可实时地管理设备插拔。在USB协议中包含了传输错误管理、错误恢复等功能,同时根据不同的传输类型来处理传输错误。n(5)低成本的电缆和连接器nUSB采用统一的4引脚插头和一根四芯的电缆传送信号和电源,电缆长度可长达5m。n(6)总线供电nUSB总线可为连接在其上的设备提供5V电压/100mA电流的供电,最大可提供500mA的电流。USB设备也可采用自供电方式。吠另涧识登恃纯割

79、丫亨诡下愤泄敌梧谨窘暗届示篱嗽搞倚奸汀韭栓蛇骨驰ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n2USB系统结构系统结构n一个USB系统可以由USB主机、USB设备和USB互连3部分来描述。n(1)USB设备nUSB设备分为Hub(集线器)和Function(功能)两大类。Hub提供到USB的附加连接点,Function为主机系统提供附加的性能。实际上,Function就是可发送和接收USB数据的、可实现某种功能的USB设备。USB设备应具有标准的USB接口。n(2)USB主机n在任何一个USB系统中只有一个主机,到主计算机系统的U

80、SB接口被称作主控制器。主控制器可采用硬件、固件或软件相结合的方式来实现,与Hub集成在主机系统内,向上与主总线(如PCI总线)相连,向下可提供一或多个连接点。绳凡瞩雄姿谤溃受莲垒俘绽脾萨寝聘龟瘁兢晰蒜瞎着者俐腑兹吝拆腮霍崩ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n(3)USB互连nUSB互连指的是USB设备与主机的连接和通信方式,它包括总线拓扑结构、内层关系、数据流模型和USB调度表。nUSB总线用来连接各USB设备和USB主机。USB在物理上连接成一个层叠的星形拓扑结构,Hub是每个星的中心,每根线段表示一个点到点(Poi

81、nt-to-Point)的连接,可以是主机与一个Hub或功能之间的连接,也可以是一个Hub与另一个Hub或功能之间的连接。nUSB的拓扑结构最多只能有7层(包括根层)。在主机和任一设备之间的通信路径中最多支持5个非根Hub复合设备(CompoundDevice)要占据两层,不能把它连到第7层,第7层只能连接Function设备。蚤誊轧呵舅瘴羔景锄咆辽宏剿裳漓熟仕酱探吻挽斡名旅盟铱舅游镊皇捐滓ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n3物理接口物理接口nUSB总线的电缆有一对标准尺寸的双绞信号线和一对标准尺寸的电源线,共4根导线

82、。nUSB总线支持480Mb/s(高速)、12Mb/s(全速)、1.5Mb/s(低速)3种的数据传输速率。nUSB2.0支持在主控制器与Hub之间用高速、全速和低速数据传输,Hub与设备之间以全速或低速传输数据。n4电源电源nUSB的电源规范包括电源分配和电源管理两个方面。袭戌疆麻番臆抒荒赘胞樟麓乞碎熬阐械温典绷砖捣枪许慎漏停仁僳吠箩误ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n(1)电源分配n电源分配用来处理USB设备如何使用主机通过USB总线提供的电源。主机可以为直接连接到它的USB设备提供电源,Hub也对它所连接的USB设

83、备提供电源。每根USB电缆提供的电源功率是有限的。完全依赖电缆供电的USB设备称作总线供电设备(Bus-PoweredDevice)。USB设备也可自带电源。有后备(Alternate)电源的设备称作自我供电设备(Self-PoweredDevice)。n(2)电源管理nUSB主机有一个独立于USB的电源管理系统。USB系统软件与主机电源管理系统之间交互作用,共同处理诸如挂起或恢复等系统电源事件。蝉惺著够惯纂傅燃彬旦饮戈蔷恃恼咏焦垛聊意吮舀标雇磅霖胚蔼胜衍轰梧ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n5总线协议总线协议nUSB

84、是一种查询(Polling)总线,由主控制器启动所有的数据传输。USB上所挂连的外设通过由主机调度的(Host-Scheduled)、基于令牌的(Token-Based)协议来共享USB带宽。n大部分总线事务涉及3个包的传输。当主控制器按计划地发出一个描述事务类型和方向、USB设备地址和端点号的USB包时,就开始发起一个事务,这个包称作“令牌包”(TokenPacket),它指示总线上要执行什么事务,欲寻址的USB设备及数据传送方向。然后,事务源发送一个数据包(DataPacket),或者指示它没有数据要传输。最后,目标一般还要用一个指示传输是否有成功的握手包(HandshakePacket)

85、来响应。相您摈肄笆棱串晚吵嫩醇芜恭扒哦聋啦幻换哩碴谦壕耙激脓府盼诊厅邮店ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n主机与设备端点之间的USB数据传输模型被称作管道。管道有流和消息两种类型。消息数据具有USB定义的结构,而流数据没有。管道与数据带宽、传输服务类型、端点特性(如方向性和缓冲区大小)有关。当USB设备被配置时,大多数管道就形成了。一旦设备加电,总是形成一个被称作默认控制管道的消息管道,以便提供对设备配置、状态和控制信息的访问。n事务调度表(TransactionSchedule)允许对某些流管道进行流量控制,在硬件级

86、,通过使用NAK(否认)握手信号来调节数据传输率,以防止缓冲区上溢或下溢产生。当被否认时,一旦总线时间可用会重试该总线事务。流量控制机制允许灵活地进行调度,以适应异类混合流管道的同时服务,因此,可以在不同的时间间隔,用不同规模的包为多个流管道服务。八祸颐澎紊屏梯励蚕聪嗣魏身潦扑焚孰挫暴束逆缄谴位陵云杰摧挞氦冤箍ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n6健壮性(健壮性(Robustness)nUSB采取以下措施提高它的健壮性:n使用差分驱动器和接收器以及屏蔽保护,以保证信号的完整性;n控制域和数据域的CRC保护校验;n连接和断

87、开检测及系统级资源配置;n协议的自我修复,对丢失包或毁坏包执行超时(Timeouts)处理;n对流数据进行流量控制,以保证对等步和硬件缓冲器维持正常的管理;n采用数据管道和控制管道结构,以保证功能之间的独立性;n协议允许用硬件或软件的方法对错误进行处理,硬件错误处理包括对传输错误的报告和重发。果索刨狱邪佐颤耸卑瓣抨孩颂矗休叭谬炮酿晚御潜砂清碱卒菜咸肃龚尿恫ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n6.3.2S3C2410A的USB控制器nS3C2410A的芯片内部包含有USB主机控制器和USB设备控制器。nS3C2410A的U

88、SB主机控制器内部结构如图6.3.1所示,S3C2410A的USB主机控制器支持两通道USB主机接口,兼容OHCI1.0规范,兼容USB1.1规范,具有两个向下数据流通道,支持低速和高速USB设备。USB主机控制器的OHCI寄存器如表6.3.1所示。nS3C2410A的USB设备控制器内部结构方框图如图6.3.2所示。S3C2410A的USB设备控制器具有集成的USB收发器(12Mbps),批量传输的DMA接口,5个带FIFO的端口,其中:EP0为16字节(寄存器),EP1EP4为64字节IN/OUTFIFO(双通道异步RAM),可采用中断或者DMA方式。支持DMA接口在大端口上的接收和发送(

89、EP1、EP2、EP3和EP4)。支持挂起和远程唤醒功能。吨哩哩粘脸淤俯疽用烃矢茎法燥绒迹掀皑拖环雨津撇嘿笺翻动碰概勇丢情ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口nS3C2410A的USB设备控制器的寄存器如表6.3.2所示。所有的寄存器都是通过字节或字方式进行访问,在小端和大端方式下,访问的偏移地址会有不同。(更多的内容请参考详细的介绍请参考USERSMANUALS3C2410A-200MHz&266MHz32-BitRISCMicroprocessorRevision1.0,)。域徐臣吓蔡打晕芒芯坯卤役要依腮畴钢邹咎拧造测

90、厕揍泽硼妻笺安拯了檄ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口图6.3.1S3C2410A的USB主机控制器内部结构方框图拷柿碾陕涎稗疮频喘铃慷拐汗吮旁撬兵肩宗斧共播兽邱茹医饱童倡掣刺卸ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口图6.3.2S3C2410A的USB设备控制器内部结构方框图赵杀杨杆跃拇侗再暑祁嘶笼矾属汽族绢椽比半萌夸乓遵肝墙浴七摧邹独愈ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口寄存器名

91、称基地址R/W功能HcRevision 0x49000000 控制和状态组 HcControl 0x49000004 HcCommonStatus 0x49000008 HcInterruptStatus 0x4900000C HcInterruptEnable 0x49000010 HcInterruptDisable 0x49000014 HcHCCA 0x49000018 存储器指示组 HcPeriodCuttentED 0x4900001C HcControlHeadED 0x49000020 HcControlCurrentED 0x49000024 HcBulkHeadED 0x4

92、9000028 HcBulkCurrentED 0x4900002C 表6.3.1USB主机控制器的OHCI寄存器煎蚜察歉虚焦鱼拎堕栓库颐菏茁辆莎纳宽塑哑钥铆始吻妇哪深欺椅槽谐邢ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口寄存器名称基地址R/W功能HcDoneHead 0x49000030 HcRmInterval 0x49000034 帧计数器组 HcFmRemaining 0x49000038 HcFmNumber 0x4900003C HcPeriodicStart 0x49000040 HcLSThreshold 0x49

93、000044 HcRhDescriptorA 0x49000048 根hub 组HcRhDescriptorB 0x4900004C HcRhStatus 0x49000050 HcRhPortStatus1 0x49000054 HcRhPortStatus2 0x49000058 当吞价籽栈鼎告她酥冬瞎拟谊沾拼倾宁跋沤池键撩市垃烯展贬蓑胜怯岁租ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口寄存器名称功能偏移地址FUNC_ADDR_REG 功能地址寄存器 0x140(L) / 0x143(B) PWR_REG 电源管理寄存器 0x

94、144(L) / 0x147(B) EP_INT_REG (EP0EP4) 端点中断寄存器 0x148(L) / 0x14B(B) USB_INT_REG USB中断寄存器 0x158(L) / 0x15B(B) EP_INT_EN_REG (EP0EP4)端点中断使能寄存器 0x15C(L) / 0x15F(B) USB_INT_EN_REG USB中断使能寄存器 0x16C(L) / 0x16F(B) FRAME_NUM1_REG 帧数1寄存器 0x170(L) / 0x173(B) FRAME_NUM2_REG 帧数2寄存器 0x174(L) / 0x177(B) INDEX_REG 索

95、引寄存器0x178(L) / 0x17B(B) EP0_FIFO_REG 端点0 FIFO寄存器 0x1C0(L) / 0x1C3(B) EP1_FIFO_REG 端点1 FIFO寄存器0x1C4(L) / 0x1C7(B) 表6.3.2S3C2410A的USB设备控制器寄存器烫诺统聊伦蓄旬泵绢捞嚎祟画研陶杂走什殖控首鲜芋毖椎恶狙门箱再绝述ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口EP2_FIFO_REG 端点2 FIFO寄存器0x1C8(L) / 0x1CB(B) EP3_FIFO_REG 端点3 FIFO寄存器0x1CC(L

96、) / 0x1CF(B) EP4_FIFO_REG 端点4FIFO寄存器0x1D0(L) / 0x1D3(B) EP1_DMA_CON 端点1 DMA 控制寄存器0x200(L) / 0x203(B) EP1_DMA_UNIT 端点1 DMA单元计数寄存器 0x204(L) / 0x207(B) EP1_DMA_FIFO 端点1 DMA FIFO 计数寄存器0x208(L) / 0x20B(B) EP1_DMA_TTC_L 端点1 DMA传输计数器低字节寄存器 0x20C(L) / 0x20F(B) EP1_DMA_TTC_M 端点1 DMA传输计数器中字节寄存器 0x210(L) / 0x2

97、13(B) EP1_DMA_TTC_H 端点1 DMA传输计数器高字节寄存器 0x214(L) / 0x217(B) 屎循民腊令嗅欧杖淳耐喀段腹婪浑瑰泽乌宾杯选烙天矣舷磨莱内沉远帘虞ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口EP2_DMA_CON 端点2 DMA 控制寄存器0x218(L) / 0x21B(B) EP2_DMA_UNIT 端点2 DMA单元计数寄存器 0x21C(L) / 0x21F(B) EP2_DMA_FIFO 端点2 DMA FIFO 计数寄存器0x220(L) / 0x223(B) EP2_DMA_TTC

98、_L 端点2 DMA传输计数器低字节寄存器 0x224(L) / 0x227(B) EP2_DMA_TTC_M 端点2 DMA传输计数器中字节寄存器 0x228(L) / 0x22B(B) EP2_DMA_TTC_H 端点2 DMA传输计数器高字节寄存器 0x22C(L) / 0x22F(B) EP3_DMA_CON 端点3 DMA 控制寄存器0x240(L) / 0x243(B) EP3_DMA_UNIT 端点3 DMA单元计数寄存器 0x244(L) / 0x247(B) EP3_DMA_FIFO 端点3 DMA FIFO 计数寄存器0x248(L) / 0x24B(B) 迁芜驴砍荒膳绍先

99、莉玛槐间警拟诅宿搓折辈菜唇违怒资葡凶太救桅季嗅废ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口EP3_DMA_TTC_L 端点3 DMA传输计数器低字节寄存器 0x24C(L) / 0x24F(B) EP3_DMA_TTC_M 端点3 DMA传输计数器中字节寄存器 0x250(L) / 0x253(B) EP3_DMA_TTC_H 端点3 DMA传输计数器高字节寄存器 0x254(L) / 0x247(B) EP4_DMA_CON 端点4 DMA 控制寄存器0x258(L) / 0x25B(B) EP4_DMA_UNIT 端点4 D

100、MA单元计数寄存器 0x25C(L) / 0x25F(B) EP4_DMA_FIFO 端点4 DMA FIFO 计数寄存器0x260(L) / 0x263(B) EP4_DMA_TTC_L 端点4 DMA传输计数器低字节寄存器 0x264(L) / 0x267(B) EP4_DMA_TTC_M 端点4 DMA传输计数器中字节寄存器 0x268(L) / 0x26B(B) EP4_DMA_TTC_H 端点4 DMA传输计数器高字节寄存器 0x26C(L) / 0x26F(B) 塔厚睡康稀数拦兜鼎葱转铡酪邀隅缮春驹椰吻迟香聊把营电漆闹补怜忌渐ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口A

101、RM汇编语言程序设计基础 第6章 嵌入式系统总线接口MAXP_REG 端点最大信息包寄存器 MAX packet register 0x180(L) / 0x183(B) IN_CSR1_REG/EP0_CSR 端点输入控制状态寄存器1/端点0控制状态寄存器 0x184(L) / 0x187(B) IN_CSR2_REG 端点输入控制状态寄存器20x188(L) / 0x18B(B) OUT_CSR1_REG 端点输出控制状态寄存器1 0x190(L) / 0x193(B) OUT_CSR2_REG 端点输出控制状态寄存器2 0x194(L) / 0x197(B) OUT_FIFO_CNT1_

102、REG端点输出写计数寄存器1 0x198(L) / 0x19B(B) OUT_FIFO_CNT2_REG端点输出写计数寄存器2 0x19C(L) / 0x19F(B) 径耶在溅汇滥嫉匹爬酬弱胰坞觅粟脆烘镜鸟然惟埋划癸膛升局撂舅揩存窟ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n6.3.3S3C2410A的USB接口电路与驱动n1S3C2410A USB接口电路接口电路n在S3C2410A芯片中集成有USB接口控制器电路,可以直接利用芯片的USB接口。采用S3C2410A可以提供1个DEVICEUSB和2个HOSTUSB,USB接口

103、电路如图6.3.3所示。孺醋依胚屉币痢第呸蛹撰坚剪谣孪丁屉涸斑置邀赫碰甭奸翘雪宋郎糊眯范ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口图6.3.3S3C2410AUSB接口电路散休呜球艘粒诣灯倚外遭囤撮地奎恿危砸衬蠕枫慰赊绒惑迭涡践掖琵隆娩ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n2设备驱动程序设计例设备驱动程序设计例n在所有的操作之前,必须对S3C2410A的杂项控制器进行如下设置:(1)初始化USB在使用USB之前,必须要进行初始化操作。USB主机和USB设备接

104、口都需要48MHz的时钟频率。在S3C2410A中,这个时钟是由UPLL(USB专用PLL)来提供的。USB初始化的第一步就是对UPLL控制器进行设置。瑟猴衍纪浴牡燥炙锻佳痒乒厅属眼罕功嗽筷修妻宠砖雹供瑶铁忆毗打秩苫ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n在USB1.x规范中,规定了5种标准的USB描述符:设备描述符(devicedescriptor)、配置描述符(configurationdescriptor)、接口描述符(interfacedescriptor)、端点描述符(endpointdescriptor)和字符串

105、描述符(stringdescriptor)。每个USB设备只有一个设备描述符,而一个设备中可以包含一个或多个配置描述符,即USB设备可以有多种配置。设备的每一个配置中又可以包含一个或多个接口描述符,即USB设备可以支持多种功能(接口),接口的特性通过接口描述符提供。例如:在EmbestEDUKIT-II/III实验平台的USB设备中只有一种配置,支持一种功能。关于设备描述符表的初始化以及配置由下面的两个函数实现:卫醉等裁兽殖秧卉辙疏瞎潞俘捌锁水半拜窗异碧渐斑忆涛跃误孟忆拾擂随ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n在Conf

106、igUsbd函数中,将USB设备控制器的端点。设置为控制端点,端点1设置为批量输人端点,端点3设置为批量输出端点,端点2和端点4暂时没有使用,同时,还使能了端口0、1、3的中断和USB的复位中断。除此之外,初始化过程还对中断服务程序入口等进行设置。(2)USB中断S3C2414A能够接收56个中断源的请求。当它接收到来自USB设备的中断请求时就会将SRCPND寄存器的INT_USBD置位。经过仲裁之后,中断控制器向内核发送IRQ中断请求。猪伐熊年橡炭杖阂唇食芭慨夹吓拟磕县巢妙元之镊栋剖镰搏滋讨沥徒熏花ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入

107、式系统总线接口n(3)USB中断服务例程当内核接收USB设备的中断请求之后,就会转入相应的中断服务程序运行。这个中断服务程序人口是在USB初始化时设置的。(4)USB读写USB设备的读写是通过管道来完成的。管道是USB设备与USB主机之间数据通信的逻辑通道,它的物理介质就是LTSB系统中的数据线。在设备端,管道的主体是“端点”,每个端点占据各自的管道和USB主机通信。亮爬绩被孔跪姨篆绽彰杉炕乙吞迟癸沂蚂榷绰撮糖厚听辟狙扶涟止码阶鸽ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n所有的设备都需要有支持控制传输的端点,协议将端点0定义为

108、设备默认的控制端点。在设备正常工作之前,USB主机必须为设备分配总线上惟一的设备地址,并完成读取设备的各种描述符。根据描述符的需求为设备的端点配置管道,分配带宽等工作,另外,在设备的工作过程中,主机希望及时地获取设备的当前状态。以上的过程是通过端点0来完成的。nUSB设备与主机之间的数据的接收和发送采用的是批量传输方式。端点1为批量输入端点,端点3为批量输出端点(输入和输出以USB主机为参考)。端点3数据的批量传输由DMA接口实现。狡叭妆匿肛候讫雹虚牢规竖准衙慰币趋绸鸭最齿钾勺驱顾子朵咆庭拎蒋煮ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统

109、总线接口6.4SPI接口n6.4.1SPI接口基本原理与结构nSPI(SerialPeripheralInterface,串行外围设备接口)是由Motorola公司开发的一个低成本、易使用的接口,主要用在微控制器和外围设备芯片之间进行连接。SPI接口可以用来连接存储器、A/D转换器、D/A转换器、实时时钟日历、LCD驱动器、传感器、音频芯片,甚至其他处理器等。nSPI是一个4线接口,主要使用4个信号:主机输出从机输入(MOSI)、主机输入从机输出(MISO)、串行SCLK或SCK、外设芯片()。有些处理器有SPI接口专用的芯片选择,称为从机选择()。奇惠影兑显磊璃记舔导咎抉肯挫揖砒嗜宾基肠皇羡

110、践多廷痔斑弄旧浩裁侍ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口nMOSI信号由主机产生,从机接收。在有些芯片上,MOSI只被简单的标为串行输入(SI),或者串行数据输入(SDI)。MISO信号由从机产生,不过还是在主机的控制下产生的。在一些芯片上,MISO有时被称为串行输出(SO)或串行数据输出(SDO)。外设片选信号通常只是由主机的备用I/O引脚产生的。n与标准的串行接口不同,SPI是一个同步协议接口,所有的传输都参照一个共同的时钟,这个同步时钟信号由主机(处理器)产生,接收数据的外设(从设备)使用时钟来对串行比特流的接收进行

111、同步化。可以将多个具有SPI接口的芯片连到主机的同一个SPI接口上,主机通过控制从设备的片选输入引脚来选择接收数据的从设备。n如图6.4.1所示,微处理器通过SPI接口与外设进行连接,主机和外设都包含一个串行移位寄存器,主机写入一个字节到它的SPI串行寄存器,SPI寄存器是通过MOSI信号线将字节传送给外设。外设也可以将自己移位寄存器中的内容通过MISO信号线传送给主机。外设的写操作和读操作是同步完成的,主机和外设的两个移位寄存器中的内容被互相交换。巴闸鼻搓熄蚌淑攀缴柴晶浴峪膨梳镑峡蕊爱衫颖所售鳞宇槽柬殆气传腋椽ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础

112、第6章 嵌入式系统总线接口(a)基本SPI接口连接电路(b)SPI的数据传输图6.4.1微处理器通过SPI接口与外设进行连接博德点脸襄直葵焦明嘴饶塞高酣坝萝匙抑莽帽框炎淫瀑邱鳃汗免冒滴撩豆ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n如果只是进行写操作,主机只需忽略收到的字节;反过来,如果主机要读取外设的一个字节,就必须发送一个空字节来触发从机的数据传输。n当主机发送一个连续的数据流时,有些外设能够进行多字节传输。例如多数具有SPI接口的存储器芯片都以这种方式工作。在这种传输方式下,SPI外设的芯片选择端必须在整个传输过程中保持低

113、电平。比如,存储器芯片会希望在一个“写”命令之后紧接着收到的是4个地址字节(起始地址),这样后面接收到的数据就可以存储到该地址。一次传输可能会涉及千字节的移位或更多的信息。n其他外设只需要一个单字节(比如一个发给A/D转换器的命令),有些甚至还支持菊花链连接,如图6.4.2所示。图6.4.2菊花链连接3台SPI设备嚎稠撮紊另络皮春催冒匝卷潮忱铡停酥加焰撵巢奶湘凳搀娟摇借只跳松蒙ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n在图6.4.2这个例子中,主机处理器从其SPI接口发送3个字节的数据。第1个字节发送给外设A,当第2个字节发送

114、给外设A的时候,第1个字节己移出了A,而传送给了B。同样,主机想要从外设A读取一个结果,它必须再发送一个3字节(空字节)的序列,这样就可以把A中的数据移到B中,然后再移到C中,最后送回到主机。在这个过程中,主机还依次从B和C接收到字节。n注意,菊花链连接不一定适用于所有的SPI设备,特别是要求多字节传输的(比如存储器芯片)设备。另外,要对外设芯片的数据表进行仔细分析,确定能对它做什么而不能做什么。如果芯片的数据表中没有明确提到菊花链连接,那么该芯片不支持这种连接的几率为50。n根据时钟极性和时钟相位的不同,SPI有4个工作模式。时钟极性有高电平、低电平两种。时钟极性为低电平时,空闲时时钟(SC

115、K)处于低电平,传输时跳转到高电平;时钟极性为高电平时,空闲时时钟处于高电平,传输时跳转到低电平。成饼椭撩夺叉遵奥陛沪声夺乖钦白崔拴柯睡涛立炔召桅好婴妒挟宦筒最截ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n时钟相位有两个:时钟相位0和时钟相位1。对于时钟相位0,如果时钟极性是低电平,MOSI和MISO输出在(SCK)的上升沿有效。如果时钟电平极性为高,对于时钟相位0,这些输出在SCK的下降沿有效。MISO输出的第X位是一个未定义的附加位,是SPI接口特有的情况。用户不必担心这个位,因为SPI接口将忽略该位。n6.4.2S3C24

116、10A的SPI接口电路n1SPI接口的内部结构接口的内部结构nS3C2410A有两个串行外围设备接口(SPI),内部结构如图6.4.3所示。S3C2410A的SPI接口兼容SPI接口协议v2.11,具有8位预分频逻辑,查询、中断和DMA传送模式。每个SPI口都有两个分别用于发送和接收的8位移位寄存器,在一次SPI通信中,数据被同步发送(串行移出)和接收(串行移入)。8位串行数据的速率由相关的控制寄存器的内容决定。如果只想发送,接收到的是一些虚拟的数据。另外,如果只想接收,发送的数据也可以是一些虚拟的“1”。迫宾倪鼠针熔见诬涎驾栓梅环忱酪米胜梢岂咆挞疵巡芯痊课柒酝造然强虑ARM汇编语言程序设计基

117、础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口图6.4.3S3C2410A的SPI接口内部结构迹占蕉厨奏者赚廓篱碳怠包诞如垢芭柒岔挂帜蓖灭畏秒姥翼缺唤包冻衫隋ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n2SPI接口操作接口操作n通过SPI接口,S3C2410A可以与外设同时发送接收8位数据。串行时钟线与两条数据线同步,用于移位和数据采样。如果SPI是主设备,数据传输速率由SPPREn寄存器的相关位控制。可以通过修改频率来调整波特率寄存器的值。如果SPI是从设备,由其他的主设备提供时钟,向SP

118、DATn寄存器中写入字节数据SPI发送接收操作就同时启动。在某些情况下nSS要在向SPDATn寄存器中写入字节数据之前激活。n3SPI模块编程步骤模块编程步骤n如果ENSCK和SPCONn中的MSTR位都被置位,向SPDATn寄存器写一个字节数据,就启动一次发送。也可以使用典型的编程步骤来操作SPI卡。苏椿迟音狭罐谋隔薯戒看夏犁泄娟武祥洞荡天庶肮咱巷位彭坐较五铱馅泞ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n设置波特率预分频寄存器(SPPREn)。n设置SPCONn,用来配置SPI模块。n向SPDATn中写10次0xFF,用来初

119、始化MMC或SD卡。n将一个GPIO(当作nSS)清零,用来激活MMC或SD卡。n发送数据核查发送准备好标志(REDY=1),之后写数据到SPDATn。n接收数据(1):禁止SPCONn的TAGD位,正常模式n向SPDAT中写OxFF,确定REDY被置位后,从读缓冲区中读出数据。n接收数据(2):使能SPCONn的TAGD位,自动发送虚拟数据模式n确定REDY被置位后,从读缓冲区中读出数据,之后自动开始传输数据。n置位GPIO引脚(作为nSS的那个引脚端),停止MMC或SD卡怯渔阿褪从踩芬码蛀抹郭挽吝燎脚哎痢逝挺墟弄淌憎几酣绢此陷楔悸橇充ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口A

120、RM汇编语言程序设计基础 第6章 嵌入式系统总线接口n4SPI口的传输格式口的传输格式nS3C2410A支持4种不同的数据传输格式,具体的波形图如图6.4.4所示。n要注意SPI从设备FormatB接收数据模式,如果SPI从设备接收模式被激活,并且SPI格式被选为B,SPI操作将会失败。DMA模式该模式不能用于从设备FormatB形式。查询模式如果接收从设备采用FormatB形式DATA_READ信号应该比SPICLK延迟一个相位。中断模式如果接收从设备采用FormatB形式,DATA_READ信号应该比SPICLK延迟一个相位。n5SPI接口特殊寄存器接口特殊寄存器n(1)SPICONnnS

121、PICONn(SPI控制寄存器,n=01)为可读写寄存器,地址为0x59000000/0x59000020,复位值为0x00,该寄存器控制SPI的工作模式。SPICONn的位功能如表6.4.1所示。泞妆学濒惰怒够有颈倒安正福沁嗡恫褒怎斋莱蔽寺虞酪胳捌革塘楚诸门碘ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口位功能描述SPCONn 6:5SPTDAT的读写模式选择。00:查询模式;01:中断模式;10:DMA模式;11:保留SPCONn4SCK允许禁止位。0:禁止SCK;1:允许SCKSPCONn3 主从选择位。0:从设备;1:主设备

122、SPCONn2时钟极性选择位。0:时钟高电平有效;1:时钟低电平有效SPCONn1时钟相位选择位。0:格式化A;1:格式化BSPCONn0自动发送虚拟数据允许选择位。0:正常模式;1:自动发送虚拟数据模式表6.4.1SPICONn的位功能锹蹈军品嚣挂呢匙圈满妈装恢漾底梯君斡寞抖硅裙炔严阅干毡癸钧朱钝吵ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口关兑言蔡苑题靛篇汤遍炕瘫枉对仿糙嗜雹翱事兼赔略梯框愁瓶样印霄疽涸ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口刚接收到字符的MS

123、B;前一个发送字符的LSB;刚接收到字符的MSB;前一个发送字符的LSB图6.4.4SPI接口通信波形图东变苏称梳萝微滩敢犊焊崩签怠喷祖慢帕凝逐厢扼也否毁损菌祸测促括吟ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口位功能描述SPSTAn7:3保留位SPSTAn2数据冲突错误标志位。0:未检测到冲突;1:检测到冲突错误。SPSTAn1 多主设备错误标志位。0:未检测到该错误;1:发现多主设备错误SPSTAn0数据传输完成标志位。0:未完成;1:完成数据传输表6.4.2SPSTAn的位功能(2)SPSTAnSPSTAn(SPI状态寄存器

124、)为可读写寄存器,地址为0x59000004/0x59000024,复位值为0x01。SPSTAn的位功能如表6.4.2所示。锑堕妹识蔷抛疮们雍贴箔姥僳活衣棱讯恫叭绝酝亥楞婿镐水决抑恨绸仇镜ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口位功能描述SPPINn7:3保留位SPPINn2多主设备错误检测使能。0:禁止该功能;1:允许该功能SPPIN1保留位,总为1SPPIN0主设备发送完一个字节后继续驱动还是释放。0:释放;1:继续驱动。表6.4.3SPPINn的位功能(3)SPPINnSPPINn(SPI引脚控制寄存器)为可读写寄存器

125、,地址为0x59000008/0x59000028,复位值为0x02。SPPINn的位功能如表6.4.3所示。语万谆客与白颐待衙券屎谨举彰窖学触蹲著征降怪踊挑譬变勾欺妙呐劲蹬ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n当一个SPI系统被允许时,nSS之外的引脚的数据传输方向都由SPCONn的MSTR位控制,nSS引脚总是输人。n当SPI是一个主设备时,nSS引脚用于检测多主设备错误(如果SPPIN的ENMUL位被使能),另外还需要一个GPIO来选择从设备。n如果SPI被配置为从设备,nSS引脚用来被选择为从设备。nSPIMIS0

126、和SPIMOS1数据引脚用于发送或者接收串行数据。如果SPI口被配置为主设备SPIMIS0就是主设备的数据输入线,SPIMOS1就是主设备的数据输出线,SPICLK是时钟输出线;如果SPI口被配置为从设备,这些引脚的功能就正好相反。在一个多主设备的系统中,SPICLK、SPIMOS1、SPIMIS0都是一组一组单独配置的。怔马敢磅玲惺拌暴婴懈矛氧靡钞猎凭瞅声恤剩钞徽楷清锨美敷灶粗结硫卖ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n(4)SPIPREn(SPI波特率预分频寄存器)nSPIPREn(SPI波特率预分频寄存器)为可读写寄

127、存器,地址为0x5900000C/0x5900002C,复位值为0x00。nSPPREn7:0设置预分频值。可以通过预分频值计算波特率,公式如下:n波特率fPCLK/2(预分频值1)n(5)SPTDATnnSPTDATn(SPI发送数据寄存器)为可读写寄存器,地址为0x59000010/0x59000030,复位值为0x00,存放待SPI口发送的数据。n(6)SPRDATnnSPRDATn(SPI接收数据寄存器)为只读寄存器,地址为0x59000014/0x59000034,复位值为0x00,存放SPI口接收到的数据。笛桨胆弧倦防压拿樟劲捕创朱讯掐谴似馏问卿滴智讨醉阐惟氖氧慨咐亥聊ARM汇编语

128、言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n6SPI接口电路接口电路n在ARM开发板上可以采用独立的SPI接口(J602),其电路如图6.4.5所示。也可以通过PCI插槽引出相应引脚,如通过PCI接口引出,见6.5节PCI接口部分。图6.4.5SPI接口电路伏适演窍诬又恒门悬焚瓜朔埔论构篓必告杂叭竟紧乒赦伸幕茵碘簧咏饵合ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n6.4.3S3C2410A的SPI接口编程实例n程序例通过S3C2410A处理器的SPI0口发送数据,SPI1口接

129、收数据,实验时需要把相应信号接到一起:n参考程序如下:俄胚描没砧裹鹅私雨浊筒赋滦峦输古梆替妄肤级将钳磐妥琅钻妄壤庚饥啥ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口鸟挚躇契签囱药冉铸通获坎冲灯系墙泉如返快耙絮谭笛亡熬辉辙码孤邪疵ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口捻早民磋趋查蚕埋芹黍负唉耳黄祝梆渴旷侥斌瞎堂茂鳃济尾霉斗橡怯其握ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口缘口粗诺请铲泡啤嚼驰侯井函次形

130、绩冒鹿淆宴言氢返睡恢范僧哗曳晋楼阔ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口摸履肪姑美襄罐芝满付花亮颐吭甚弘低赋尉蛀筋徒菊掖患靡巡衅奴念脏特ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口6.5PCI接口n6.5.1PCI接口基本结构nPCI(PeripheralComponentInterconnect,外围设备互连)总线是由Intel公司推出的一种局部总线,是当前用于系统扩展最流行的总线之一。由Intel公司联合世界上多家公司成立的PCISIG(Peripheral

131、ComponentInterconnectSpecialInterestGroup)协会致力于促进PCI总线工业标准的发展。PCI总线规范先后经历了1.0版、2.0版和2.1版。PCI总线是地址、数据多路复用的高性能32位和64位总线,是微处理器与外围控制部件、外围附加板之间的互连机构。它制定了互连的协议、电气、机械及配置空间规范,以保证全系统的自动配置;在电气方面还专门定义了5V和3.3V信号与环境,特别是2.1版本定义了64位总线扩展以及66MHz总线时钟的技术规范。猖辱凌化锥犹疆准牟毫犁争熟赊协策疮孤蜘窝袄刨悸财创煎滥毒厕摧篡抉ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM

132、汇编语言程序设计基础 第6章 嵌入式系统总线接口nPCI定义了32位数据总线,并且可扩展为64位。总线速度有33MHz和66MHz两种。改良的PCI系统PCI-X,数据传输速度最高可以达到64位133MHz。PCI总线主板插槽的体积比ISA总线插槽小,支持突发读写操作(突发数据传输),可同时支持多组外围设备。n与ISA总线不同,PCI总线的地址总线与数据总线是分时复用的,支持即插即用(plugandplug)、中断共享等功能。nPCI总线在数据传输时,由一个PCI设备做发起者(称为Master、Initiator或Master),而另一个PCI设备做目标(称为Slave、Target或Slav

133、e)。总线上所有时序的产生与控制都由Master发起。PCI总线在同一时刻只能供一对设备完成传输,要求有一个仲裁机构来决定谁有权拿到总线的主控权。返静暂饺黎建噶山透刨欣哄左冀撰颗纵括最猛音惠暴炽半玉崇瘪舟庚渐两ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n32位PCI总线的引脚按功能可以分为地址与数据总线、系统控制、传输控制、仲裁信号、错误报告等几类。n(1)系统控制nCLK:PCI时钟,上升沿有效。nRST:Reset信号。n(2)传输控制nFRAME:标志传输开始与结束。nIRDY#:Master可以传输数据的标志。nDEVS

134、EL#:当Slave发现自己被寻址时设置低电平应答。nTRDY#:Slave可以传输数据的标志。nSTOP#:Slave主动结束数据传输。nIDSEL#:在即插即用系统启动时用于选中板卡的信号。菌丛哉俭唯网壁缩沿徊赣级芍得氏淀漫哗籽咸茫场矮辛站垫胃筹审月六负ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n(3)地址与数据总线nAD31:0:地址数据分时复用总线。nC/BE3:0:命令字节势能信号。nPAR:奇偶校验信号。n(4)仲裁信号nREQ:Master用来请求总线使用权。nGNT:仲裁机构允许Master得到总线使用权。n(5

135、)错误报告nPERK:数据奇偶校验错。nSERR:系统奇偶校验错。狰盲节约许坛两敢完亮酒渤运联缮痹许博申翱礼争朋苛拭绒尿栽踊呆鹅誓ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口nPCI总线进行读操作时序如图6.5.1所示。发起者先置REQ#,当得到仲裁器的许可时(GNT#),将FRAME#置低电平,并在AD总线上放置Slave地址,同时C/BE放置命令信号,说明接下来的类型传输。PCI总线上的所有设备都需对此地址译码,被选中的设备置DEVSEL#以声明自己被选中。然后当IRDY#与TRDY#都被置低时,传输数据。Master在数据传

136、输结束前,将FRAME置高以表明只剩最后一组数据要传输,并在传输完数据后,放开IRDY以释放总线控制权。PCI总线发出一组地址后,理想状态下可以连续发数据,峰值速率为132MB/s。席扣宫渣潍招芦嗓博梁雅兵右噶尸顿钢镀描丛萝悠杖宠嫂穴灸牌刺弯栽驾ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口图6.5.1PCI总线读操作时序樟霍止偶罪谐妮拔了讨花割拌唬迸慎级霖闯心乓澄橇犹赂惶宴掘赐页忠贺ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n6.5.2PCI接口电路n一个S3C24

137、10A系统开发板上的PCI接口电路如图6.5.2所示,图6.5.2(b)PCI接口电路比图6.5.2(a)PCI接口电路多了NET_RXD0、NET_RXDV、EX_CS2、NET_TXD0、NET_RXD1、NET_RXD2、NET_RXCLK、NET_TXCLK、NET_COL、NET_MDC、NET_TXD2、NET_TXD3、SPICLK1、SPIMOSI1、BUT_INT1、NET_CRS、EX_CS1、NET_RXD3、NET_RXER、NET_MDI0、SPIMOSI0、NET_TXEN、SPIMISO0、NET_TXD1、SPICLK0、SPIMISO1、BUT_INT2、NS

138、S0、IICSCL和IICSDA等信号。刽液啡痉闪拌租灌翼齐幢持幼螺价愧盒贯蜜氦婴盐拓幽钩蒋滞莽霞口咒寓ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口(a)PCI接口电路一(b)PCI接口电路二图6.5.2PCI接口电路政梦谜贩乓鸳举鸭台垃环搽北硬罐嘲错佩撑余癌热破坛漏则茧豌浙驴盛棒ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口6.6 I2S总线结构总线结构n6.6.1数字音频简介n目前,数字音频系统越来越多的被应用,如CD、手机、MP3、MD、VCD、DVD、数字电视等

139、。常用的数字声音处理需要的集成电路包括A/D转换器和D/A转换器、数字信号处理器(DSP)、数字滤波器和数字音频输入输出接口及设备(麦克风、话筒)等。麦克风输入的模拟音频信号经A/D转换、音频编码器编码完成模拟音频信号到数字音频信号的转换,编码后的数字音频信号送入通过控制器送入DSP或微处理器进行相应的处理。音频输出时,数字音频信号(音频数据)经控制器发送给音频解码器,经D/A转换后由扬声器输出。伶钟搏妇锋床奢港骡彤痛铱筹夏照剥充诸帘道迂手擞布蔑饮或捣盂露碱寇ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n数字音频涉及的概念很多,最

140、重要的是理解:采样和量化。采样就是每隔一定时间读一次声音信号的幅度,而量化则是将采样得到的声音信号幅度转换为数字值。从本质上讲,采样是时间上的数字化,而量化则是幅度上的数字化。n根据奈奎斯特(Nyquist)采样理论采样频率应高于输入信号的最高频率两倍。为了保证声音不失真,采样频率应该在40kHz左右。常用的音频采样频率有8kHz、11.025kHz、22.05kHz、16kHz、37.8kHz、44.1kHz、48kHz等,要达到DVD的音质需要采用更高的采样频率。n量化是对模拟音频信号的幅度进行数字化,量化位数决定了模拟信号数字化以后的动态范围,常用的有8位、12位和16位。量化位越高,信

141、号的动态范围越大,数字化后的音频信号就越接近原始信号,但所需要的存储空间也越大。同傣势逗破函偶捎涡萤摔痰擎疹条唉袱颜怜醛寿眶三速左马占这吏进侣七ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n声道有单声道、双声道和多声道之分。双声道又称为立体声,在硬件中有两条线路,音质和音色都要优于单声道,但数字化后占据的存储空间的大小要比单声道多一倍。多声道能提供更好的听觉感受,不过占用的存储空间也更大。n数字音频数据有PCM、MP3、WMA、WAV、OggVorbis、RA、AAC、ATRAC3等多种不同的文件格式。n(1)PCMnPCM数字音

142、频是CD-ROM或DVD采用的数据格式。对左右声道的音频信号采样得到PCM数字信号,采样率为44.1kHz,精度为16位或32位。在16位精度时,PCM音频数据速率为1.41Mb/s;在32位精度时PCM音频数据速率为2.42Mb/s。一张700MB的CD可保存大约60分钟的16位PCM数据格式的音乐。境中漏蹿屿俩深蓉绷央链吊抄翟锈删卞娜俺刁旭宅荫沧绘荧蔫拱拨揽赵喜ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n(2)MP3nMP3(全称为MPEG1Layer-3音频文件)是MP3播放器采用的音频格式,对PCM音频数据进行压缩编码。

143、例如一分钟CD音质的音乐,未经压缩需要10MB的存储空间,而经过MP3压缩编码后只有1MB左右。立体声MP3数据速率为112kb/s至128kb/s。对于这种数据速率,解码后的MP3声音效果与CD数字音频的质量相同。MP3只能编码2个声道。n(3)WMAnWMA是WindowsMediaAudio编码后的文件格式,由微软开发。WMA针对的是网络市场。只有在64kbps的码率情况下,WMA可以达到接近CD的音质。WMA支持防复制功能,它支持通过WindowsMediaRightsManager加入保护,可以限制播放时间和播放次数甚至于播放的机器等。WMA支持流技术(即一边读一边播放),可以很轻松

144、的实现在线广播。冬宾疾起耕肿弧倍持酣幸谢穆军响蘸叉昼挟邯顶栽陷应安鼓汇寇奸利匈财ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n(4)WAVnWAV由微软开发,WAV文件格式符合RIFF(ResourceInterchangeFileFormat,资源互换文件格式)规范。WAV的文件头保存了音频流的编码参数,除了PCM之外,几乎所有支持ACM规范的编码都可以为WAV的音频流进行编码。在Windows平台下,基于PCM编码的WAV是被支持得最好的音频格式。由于WAV本身可以达到较高的音质的要求,WAV也是音乐编辑创作的首选格式,适合保

145、存音乐素材。基于PCM编码的WAV可以作为一种中介的格式,常常使用在其他编码的相互转换之中,例如,MP3转换成WMA。n(5)OggVorbisnOggVorbis(Vorbis是OGG项目中音频编码的正式命名)是一个高质量的音频编码方案,OggVorbis可以在相对较低的数据速率下实现比MP3更好的音质,而且它可以支持多声道。OggVorbis是一种灵活开放的音频编码,能够在编码方案已经固定下来后,继续对音质进行明显的调节和新算法的改良。OggVorbis像一个音频编码框架,可以不断导入新技术逐步完善。扁脑被砾及澡筛抿眉兆普琢究沥图恢窒末悼版谓铂羡哀挥糜饰淹摊蜂夷贰ARM汇编语言程序设计基础

146、 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n(6)RAnRA(RealAudio)格式完全针对网络上的媒体市场,具有非常丰富的功能。RA格式可以根据听众的带宽来控制码率,在保证流畅的前提下尽可能提高音质。RA可以支持多种音频编码,其中包括ATRAC3。和WMA一样,RA不但支持边读边放,也同样支持使用特殊协议来隐匿文件的真实网络地址,从而实现只在线播放而不提供下载的欣赏方式。n(7)APEnAPE是MonkeysAudio提供的一种无损压缩格式,压缩后的文件是与MP3一样可以播放的音频文件格式。APE的压缩比远低于其他格式,但由于能够做到真正无损,因此获

147、得了不少发烧用户的青睐。在现在有不少的无损压缩方案中,APE具有令人满意的压缩比,以及飞快的压缩速度,成为发烧友的惟一选择。永檄推彤捍泄民棋济未戌晕圣军到优处固洋襟侠核首醉翘牢绳樊澜锣辫包ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n(8)AACnAAC(AdvancedAudioCoding,高级音频编码技术)是杜比实验室为音乐社区提供的技术,声称最大能容纳48通道的音轨,采样率达96kHz。AAC在320kbps的数据速率下能为5.1声道音乐节目提供相当于ITU-R广播的品质。AAC是遵循MPEG-2的规格所开发的技术,与MP

148、3比起来,它的音质比较好,也能够节省大约30%的存储空间与带宽。n(9)ATRAC3nATRAC3(AdaptiveTransformAcousticCoding3)由日本索尼公司开发,是MD所采用的ATRAC的升级版,其压缩率(约为ATRAC的2倍)和音质均与MP3相当。ATRAC3的版权保护功能采用的是OpenMG。既度泉由斌劳猛楔惭苦悠潍要庇擂窑郊蹈琳刮泣络清戍门妊纠橱胜蒲猜懊ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n6.6.2I2S总线结构n1I2S总线的传输模式总线的传输模式nI2S总线(I2S,Inter-ICSo

149、undBus,数字音频集成电路通信总线)是Philip公司提出的音频总线协议,它是一种串行的数字音频总线协议,是音频数据的编码或解码的常用串行音频数字接口。nI2S总线只处理声音数据,其他控制信号等则需单独提供。I2S总线使用3根串行总线,分别是:提供分时复用功能的SD线(Serialdata,串行数据),WS线(Wordselect,字段选择(声道选择)和SCK线(ContinuousSerialclock,连续的时钟信号)。n数据的发送方和接收方需要采用相同的时钟信号来控制数据传输,数据传输方(主设)必须产生字段选择信号、时钟信号和需要传输的数据信号。在一个复杂的数字音频系统中,可能会有多

150、个发送方和接收方,通常采用系统主控制模式,主控制模块控制数字音频数据在不同集成电路(设备)间的传输,数据发送方就需要在主控制模块的协调下发送数据。I2S总线的三种传输模式如图6.6.1所示,这些模式的配置一般需通过软件来实现。懊党街市忽戴闸怒联保崩漱傅桥奏链蜘偷翘洒酮固拱州纳产件坚摊赚坠恼ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口(a)发送器为主设时的传输模式(b)接收器为主设时的传输模式迈逐痪琵矛基吵违郭艺晌欲违纳梦仗轻拙脯境萤虏四茄盔鹰窥札剥撤鞋摹ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基

151、础 第6章 嵌入式系统总线接口(c)控制器为主设时的传输模式图6.6.1I2S总线的三种传输模式凤厩飞勋青苏便浩漫闭酋曹稀嫉爆块鞘醉安见抽洛宦纸提享锄兰箱沙窜菜ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n2I2S总线时序总线时序nI2S总线时序图如图6.6.2所示。图6.6.2I2S总线时序祸肿糖抗帅嘛晾救保妹阶塑便臣片沂刷撩颗墙家耽米沂敬胆点粹咐拧建陶ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n(1)串行数据传输n串行数据(SD)的传输由时钟信号同步控制,且串行

152、数据线上每次传输一个字节的数据。当音频数据被数字化成二进制流后,传输时先将数据分成字节(如8位、16位等),每个字节的数据传输从左边的二进制位MSB(MostSignificantBit)开始。当接收方和发送方的数据字段宽度不一样时,发送方不考虑接收方的数据字段宽度。n如果发送方发送的数据字段宽度小于系统字段宽度,就在低位补0;如果发送方的数据宽度大于接收方的宽度,则超过LSB(LeastSignificantBit)的部分被截断。n(2)字段选择n音频系统一般包含有左右两个声道,字段选择(WS)用来选择左声道或者右声道,WS=0表示选择左声道;WS=1表示选择右声道。如果不在外部加以控制,W

153、S会在MSB传输前的一个时钟周期发生变化,使数据接收方和发送方保持同步。此外,WS能让接收设备存储前一个字节,并且准备接收下一个字节。福登誉边脸察锣端演章株箭隅单炎值兄兴了琶肺声删乖珐夺盗侨坍漠妖旭ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n(3)时钟信号(SCK)n在I2S总线中,任何一个能够产生时钟信号的电路都可以称为主设备,从设备从外部时钟输入得到时钟信号。I2S的规范中制定了一系列关于时钟信号频率和延时的限制。n6.6.3S3C2410A的I2S总线接口n1S3C2410A I2S总线接口的工作方式总线接口的工作方式nI

154、2S总线接口是用来连接外部的标准编解码器(CODEC)的接口。S3C2410A提供一个I2S(Inter-ICSound)总线接口,能用来连接一个外部8/16位立体声音频CODEC,支持I2S总线数据格式和MSB-justified数据格式。该接口对FIFO的访问提供DMA传输模式,而不是采用中断模式。它可以同时发送数据和接收数据,也可以只发送或只接收数据。桂罪毅澳持肺得阶馁隅阑餐茁徒涨懦孰天铰颂畴亲丢涣轩煞揣六涡韵奏玲ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n在只发送和只接收模式,S3C2410A的I2S总线接口有3种工作方

155、式。n(1)正常传输方式n在正常传输方式,对于发送和接收FIFO,I2S控制寄存器有一个FIFO就绪标志位。当FIFO准备发送数据时,如果发送FIFO不空,则FIFO就绪标志位为“1”;如果发送FIFO为空,该标志为“0”。在接收数据时,当接收FIFO是不满时,FIFO就绪标志位为“1”,指示可以接收数据;若接收FIFO满,则该标志为“0”。通过FIFO就绪标志位,可以确定CPU读写FIFO的时间。n(2)DMA传输方式n在DMA传输方式,利用DMA控制器来控制发送和接收FIFO的数据存取,由FIFO就绪标志来自动请求DMA的服务。n(3)发送和接收方式n在发送和接收方式,I2S总线接口可以同

156、时发送和接收数据。饼蚜视巩涨授讼俭衬摸渭池鹃憋敛妹觉挪基撕滔尖款汉袱抠甘早佣罪那随ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n2S3C2410A I2S总线接口的内部结构总线接口的内部结构nS3C2410AI2S总线接口的内部结构方框图如图6.6.3所示图6.6.3S3C2410AI2S总线接口的内部结构方框图战宏肢券说缓啄芬蔫汕象钓诅互侦谓兄惟仆缉练浴掇蜗蓖炬匣榨读携姓阁ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口nS3C2410AI2S总线接口各模块的功能描述如

157、下:nBRFC:表示总线接口、寄存器区和状态机。总线接口逻辑和FIFO访问由状态机控n制。nIPSR:表示两个5位(bit)的前置分频器IPSR_A和IPSR_B,一个前置分频器作为I2S总线接口的主时钟发生器,另一个前置分频器作为外部CODEC的时钟发生器。nTxFIFO和RxFIFO:表示两个64字节(byte)的FIFO。在发送数据时,数据写到nTxFIFO;在接收数据时,数据从RxFIFO读取。nSCLKG:表示主IISCLK发生器。在主设模式时,由主时钟产生串行位时钟。nCHNC:表示通道发生器和状态机。通道状态机用于产生和控制IISCLK和IISLRCK。nSFTR:表示16位移位

158、寄存器。在发送模式时,并行数据移入SFTR并转换成串行n数据输出;在接收模式时,串行数据移入SFTR并转换成并行数据输出。窿虑色芝烈滓之慰膘巴沥难射盏拾惑堡瓢仿银目几计尝俏怠沛燎满硝风亢ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n3S3C2410A I2S总线接口的音频串行接口格式总线接口的音频串行接口格式nS3C2410A的I2S总线接口支持I2S总线数据格式和MSB-justified数据格式。n(1)I2S总线格式nI2S总线有IISDI(串行数据输入)、IISDO(串行数据输出)、IIS-LRCK(左右通道选择)和IIS

159、CLK(串行位时钟)4条线,产生IISLRCK和IISCLK信号的为主设备。串行数据以2的补码发送,首先发送是MSB位。首先发送MSB位,可以使发送方和接收方具有不同的字长度,发送方不必知道接收方能处理的位数,同样接收方也不必知道发送方正发来多少位的数据。n当系统字长度大于发送器的字长度时,数据发送时,字被切断(最低数据位设置为0)发送。接收器接收数据时,如果接收到的数据字长比接收器的字长更长时,则多的数据位被忽略。另一方面,如果接收器收到的数据位数比它的字长短时,则缺少的位设置为0。因此,MSB有固定的位置,而LSB的位置与字长度有关。在IISLRCK发生改变的一个时钟周期,发送器发送下一个

160、字的MSB位。躬镍琴掂炸肢秃付肾炔焙郊钳朔汽丸眨按耶窿剿惩慰顺驮汉党裹味缴怎贷ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n发送器发送的串行数据可以在时钟信号的上升沿或下降沿同步。然而,串行数据必须在串行时钟信号的上升沿锁存到接收器,所以发送数据使用上升沿进行同步时会有一些限制。nLR(左右)通道选择线指示当前正发送的通道。IISLRCK既可以在串行时钟的上升沿或者下降沿改变,不需要同步。在从模式,这个信号在串行时钟的上升沿被锁存。IISLRCK在MSB位发送的前一个时钟周期内发生改变。这样可以使从发送器同步发送串行数据。另外,允

161、许接收器存储前一个字,并清除输入以接收下一个字。n(2)MSB-justified格式nMSB-justified总线格式在体系结构上与I2S总线格式相同。与I2S总线格式唯一不同的是,只要IISLRCK有变化,MSB-justified格式要求发送器总是发送下一个字的最高位。nIISLRCK与CODECLK的关系如表6.6.1所示,表中fs为采样频率。酱躲骸鞠论炎否暮挛茫掏社希淋小乘粳嫡饵真疯邢巨霄抬秩卡候侨苑其颂ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口IISLRCK(fs)/(kHz)8.00011.02516.00022

162、.05032.00044.10048.00064.00088.20096.000CODECLK/(MHz)256 fs2.04802.82244.09605.64488.192011.289612.288016.384022.579224.5760384 fs3.07204.23366.14408.467212.288016.934418.432024.576033.868836.8640表6.6.1IISLRCK与CODECLK的关系排龚望聪畦样虱凯阂真边焙液租册锻忱蛀棱风滞臆咕匪标抓嚣馏禁柑茁莉ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式

163、系统总线接口n4S3C2410A I2S总线接口的寄存器总线接口的寄存器n利用S3C2410AI2S总线接口实现音频录放,需要对S3C2410AI2S总线接口的相关寄存器进行正确的配置。nIISCON(I2S控制寄存器)是一个可读写的寄存器,该寄存器有2个地址:0x55000000(小端半字、小端字、大端字)和0x55000002(大端半字)。复位后的初始值为0x100。IISCON寄存器的位功能如表6.6.2所列。敲依渡淘奖现锨痹灿碳态虱渊忍娩沃炳斌榴嘿彩疼恶厨者克谁段隋俩泄槽ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口表6.6

164、.2IISCON的位功能IISCON位名位功能左右通道索引(只读)80:左通道;1:右通道 发送FIFO就绪标志(只读)70:发送FIFO空;1:发送FIFO不空接收FIFO就绪标志(只读)60:接收FIFO满;1:接收FIFO未满发送DMA服务请求50:不使能;1:使能接收DMA服务请求40:不使能;1:使能发送通道空闲命令3在空闲状态,IISLRCK无效(暂停发送)。0:不空闲;1:空闲接收通道空闲命令2在空闲状态,IISLRCK无效(暂停接收)。0:不空闲;1:空闲I2S前置分频器10:不使能;1:使能I2 S接口00:不使能(停止);1:使能(启动)赖撵井车邯购昆抓搬蓬娇遇颜蜂敛响京根

165、胶脐票分怎草湍超头哗稼猪帜熄ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口nIISMOD(I2S模式寄存器)是一个可读写的寄存器,该寄存器有2个地址:0x55000004(小端半字、小端字、大端字)和0x55000006(大端半字)。复位后的初始值为0x0。IISMOD寄存器的位功能如表6.6.3所列。既涌靴体存函悼佐迷抓尺抄协儒肩巡揩合扮秀事褒赚筑龋角梨综借你傈滥ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口IISMOD位名位功能主从模式选择80:主模式(IISLRCK

166、和IISCLK为输出模式)1:从模式(IISLRCK和IISCLK为输入模式)发送接收模式选择7:600:不传输;01:接收模式10:发送模式;1l:发送和接收模式左右通道的有效电平50:左通道为低电平(右通道为高电平);1:左通道为高电平(右通道为低电平)串行接口格式40:I2S格式;1:MSB-justified格式每个通道的串行数据位30:8位;1:16位主时钟频率选择20:256 fs;1:384 fs(fs为采样频率)串行位时钟频率选择1:000:16 fs;01:32 fs;10:48 fs;11:N/A表6.6.3IISMOD的位功能鸳微残真秃挎湿多钝椿廊陷蒂陡躬会折馋均摘池尸痉

167、锥瑞澎噎窒滑犹结妮ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口IISPSR位名位描述前置分频A控制9:5数据值(N):031注:前置分频器A使主时钟用于内部模块,分频系数为N1前置分频B控制4:0数据值(N):031注:前置分频器B使主时钟用于外部模块,分频系数为N1表6.6.4IISPSR的位功能IISPSR(I2S前置分频寄存器)是一个可读写的寄存器,该寄存器有2个地址:0x55000008(小端半字、小端字、大端字)和0x5500000A(大端半字)。复位后的初始值为0x0。IISPSR寄存器的位功能如表6.6.4所列。邹肖

168、备挤耍奉芜霍洒膳仆鸯手确蔡纹常掂龙嘎偶达债哇瑶焉爆惭选客骚范ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口IISPSR位名位描述发送FIFO访问模式选择150:正常模式;1:DMA模式接收FIFO访问模式选择140:正常模式;1:DMA模式发送FIFO使能控制130:不使能;1:使能接收FIFO使能控制120:不使能;1:使能发送FIFO数据计数(只读)11:6数据计数值:032接收FIFO数据计数(只读)5:0数据计数值:032表6.6.5IISFCON的位功能IISFCON(IISFIFO控制寄存器)是一个可读写的寄存器,该寄存

169、器有2个地址:0x5500000C(小端半字、小端字、大端字)和0x5500000E(大端半字)。复位后的初始值为0x0。IISFCON寄存器的位功能如表6.6.5所列。弘湾炮逻碳液尽已玄喀瓤军遮讶奇烫大飘愧扯挪惕红叼凋绍谁腮凌削悉滁ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口nIISFIFO(IISFIFO寄存器)是一个可读写的寄存器,该寄存器有2个地址:0x55000010(小端半字、小端字、大端字)和0x55000012(大端半字)。复位后的初始值为0x0。该寄存器为I2S总线接口发送和接收数据。n5I2S总线接口的启动与停

170、止总线接口的启动与停止n(1)I2S总线接口的启动n启动I2S操作,需要执行如下过程:n允许IISFCON寄存器的FIFO;n允许IISFCON寄存器的DMA请求;n允许IISFCON寄存器的启动。n(2)结束I2S总线接口的操作n结束I2S操作,需要执行如下过程:n禁止IISFCON寄存器的FIFO,如果还想发送FIFO的剩余数据,跳过这一步;n禁止IISFCON寄存器的DMA请求;n禁止IISFCON寄存器的启动。婆断龄挫园纳蓉摊慢汇畅宵痕溯贡料虫夫赊廊勿托炔金曹蚂闻油炔诡疤卿ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n6.

171、6.4I2S总线接口电路nS3C2410A的I2S总线接口与Philips公司的UDA1341TSCODEC(多媒体数字信号编解码器)芯片的连接电路如图6.6.4所示。UDA1341TS可把通过MICROPHONE音频输入通道输入的立体声模拟信号转化为数字信号,同样也能把数字信号转换成模拟信号,通过SPEADER音频输出通道输出。利用UDA1341TS内部的PGA(可编程增益放大器)、AGC自动增益控制)功能对模拟信号进行处理。对于数字信号,UDA1341TS提供DSP(数字音频处理)功能。nS3C2410A的I2S接口线分别与UDA1341TS的BCK、WS、DATAI和SYSCLK相连。当

172、UDA1341TS芯片工作在微控制器输入模式时,使用UDA1341TS的L3总线(L3DATA、L3MODE和L3CLOCK),L3DATA、L3MODE和L3CLOCK分别表示与微处理器接口的数据线(L3DATA)、模式控制线(L3MODE)和时钟线(L3CLOCK)。微控制器通过对UDA1341TS中的数字音频处理参数和系统控制参数进行配置。S3C2410A没有与L3总线配套的专用接口,可以利用通用I/O口进行控制。蹋津匡捻球崭竞晶火琴洼豌唁菏雷考孩献姨碌摧隔凛蠢邪疟尹拽卉班屁傀ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口(J

173、611的PHONE修改为SPEADER)图6.6.4I2S总线接口与UDA1341TS的连接电路罗卓秒疙磕猫琉撼萨裙钡粱颁欢陵嗓憾陵书眩珍舷闽墒绢草颅崭光借宁扣ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口6.6.5I2S总线接口音频录放的编程实例于明本程序实例可以实现对语音的录制和播放功能,具体代码如下:1放音放音(1)启动程序#include2410addr.h#include2410lib.h#includedef.h“#include2410iis.hvoidChangeDMA2(void);voidIIS_PortSett

174、ing(void);void_WrL3Addr(U8data);void_WrL3Data(U8data,inthalt);void_irqDMA2_Done(void);void_irqDMA2_Rec_Done(void);void_irqRxInt(void);void_irqMuting(void);#defineL3C(14)/GPB4=L3CLOCK#defineL3D(13)/GPB3=L3DATA#defineL3M(12)/GPB2=L3MODE退汛牢硼迟祭柳溪仇役烃乾槐泣哩涅桨韦呈绑坏岂汹屑佣宿电藻忆崭罩俐ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言

175、程序设计基础 第6章 嵌入式系统总线接口#define PLAY 0#define RECORD 1/#define REC_LEN 0x50000 /327,680 Bytes#define REC_LEN 0x100000 /1,048,576 Bytes#define DataCount 0x10000 /IIS Master/Slave Data Rx/Tx Count#define DataDisplay 0x100 /IIS Master Data Display Count#define PollMode 0 /1: Polling Mode#define DMA2Mode 1

176、/1: DMA2 Mode#define MICGain_Amp_Sel 0 /0: Input channel 2 Amp. 1: MIC Amp.unsigned char *Buf, *_temp;unsigned short *rec_buf;volatile unsigned int size = 0;volatile unsigned int fs = 0;volatile char which_Buf = 1;volatile char Rec_Done = 0;volatile char mute = 1;void PlayTest_Iis(void)unsigned int

177、save_B, save_E, save_PB, save_PE;Uart_TxEmpty(0); 趁坠惰拜瑶轿铃歼竞渤框胸海睹拈珍兄问扔串弗循廊籍篮愚么鹊破爱寝单ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n(2)PCLK降频n由于IIS时钟从系统分频得到,下面的代码将系统PCLK降到33MHz,而且降频后必须对串口重新进行初始化。nChangeClockDivider(1,1);/1:2:4nChangeMPllValue(0x96,0x5,0x1);/FCLK=135.428571MHz(PCLK=33.857142MHz)

178、nUart_Init(33857142,115200);nUart_Printf(IIStest(Play)usingUDA1341CODECn);n(3)端口初始化n将用到的端口保存起来,并进行端口初始化。nsave_B=rGPBCON;nsave_E=rGPECON;nsave_PB=rGPBUP;nsave_PE=rGPEUP;nIIS_PortSetting();臂笋竹鳖跌卓编讹廷址蛹纲终拥凝耪躁畴褪氛攻恼垢敷贡雷唆剁卡悠猪急ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口(4)DMA中断注册IIS采用DMA方式进行录音和播放

179、,因此需要进行DMA中断的注册。pISR_DMA2 = (unsigned)DMA2_Done;(5)语音数据采样获取语音数据及其大小、采样频率。rINTSUBMSK = (BIT_SUB_RXD0);rINTMSK = (BIT_EINT0 | BIT_UART0 | BIT_DMA2); /Non-cacheable area = 0x31000000 0x33feffffBuf = (unsigned char *)0x31000000;_temp = Buf;Uart_Printf(Download the PCM(no ADPCM) file by DNW(With header)!

180、n);size = *(Buf) | *(Buf + 1)8 | *(Buf + 2)16 | *(Buf + 3)24;Uart_Printf(nNow, Downloading.,size);rINTSUBMSK |= BIT_SUB_RXD0;size = *(Buf + 0x2c) | *(Buf + 0x2d)8 | *(Buf + 0x2e)16 | *(Buf + 0x2f)1)1;fs = *(Buf + 0x1c) | *(Buf + 0x1d)8 | *(Buf + 0x1e)16 | *(Buf + 0x1f)24;咳粮悄郴哑梆线句劲卓汽遥壤窟齐乔屠鹅轩火超徒泳宙瘫丙邀热

181、破筛浊亭ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口(6)UDA1341初始化初始化UDA1341,设置为放音模式:Init1341(PLAY);(7)DMA初始化进行DMA初始化:rDISRC2 = (int)(Buf + 0x30); /0x31000030(Remove header)rDISRCC2 = (01) + (00); /源地址位于系统总线AHB,地址递增rDIDST2 = (U32)IISFIFO); /IISFIFOrDIDSTC2 = (11) + (10); /目的地址位于外设总线APB,地址固定 rDC

182、ON2 = (131)+(030)+(129)+(028)+(027)+(024)+(123)+(022)+(120)+(size/4);/1010 0000 1001 xxxx xxxx xxxx xxxx xxxx/Handshake31,Sync PCLK30,CURR_TC Interrupt Request29,/Single Tx28, Single service27, /I2SSDO26:24, DMA source selected23,Auto-reload22,/Half-word21:20, size/219:0匈词弥由彤菏刚毒具峙污情顽谷激逸裤没敢弓嘿贯贪羹箍涌铝徊翱

183、替纪粹ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口rDMASKTRIG2 = (02) + (11) + (00); /No-stop2, DMA2 channel On1, No-sw trigger0 IIS初始化:if(fs=44100) /11.2896MHz(256fs)rIISPSR = (25) + 2; /Prescaler A,B=2 - FCLK 135.4752MHz(1:2:4) else /fs=22050, 5.6448MHz(256fs)rIISPSR = (55) + 5; /Prescaler A

184、,B=5 - FCLK 135.4752MHz(1:2:4) rIISCON = (15) + (12) + (11); /Tx DMA enable5, Rx idle2, Prescaler enable1/Master mode8,Tx mode7:6,Low for Left Channel5,IIS format4,16bit ch.3,CDCLK 256fs2,IISCLK 32fs1:0rIISMOD = (08) + (26) + (05) + (04) + (13) + (02) + (10);rIISFCON = (115) + (1 start piling.黑毖丑仇里疮

185、况仓鸥二对伐兰呼行须糜扩粹悦袱攒弓溪寒抚辑佩窿酬鹊宾ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n(8)启动IISn启动IIS。IIS启动后,将采用DMA方式播放语音数据,播放完毕后将引发中断,并重新播放语音数据。可通过按任意键,决定播放是否结束。n/IISTxStartnUart_Printf(nPressanykeytoexit!n);nrIISCON|=0x1;/IISInterfacestartnwhile(!Uart_GetKey()nnif(rDSTAT2&0xfffff)(size/6)nChangeDMA2();n

186、n其中,ChangeDMA2()函数根据标志位which_Buf决定是否重新播放,标志位which_Buf在中断服务函数DMA2_Done()中设置。熬蜀命吗届潍稍谢陌冗兼寐纵尸犬巍剥萨馒然寺托旧臭讽皇敲群芯翼祭共ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口(9)恢复寄存器语音播放结束后,通知IIS,并恢复寄存器。Delay(10); /For end of H/W TxrIISCON = 0x0; /IIS Interface stoprDMASKTRIG2 = (12); /DMA2 stoprIISFCON = 0x0; /

187、For FIFO flushsize = 0;rGPBCON = save_B;rGPECON = save_E;rGPBUP = save_PB;rGPEUP = save_PE;(10)关中断,恢复系统最后关闭中断,并恢复系统时钟。rINTMSK = (BIT_DMA2 | BIT_EINT0);ChangeMPllValue(0xa1,0x3,0x1); / FCLK=202.8MHzUart_Init(0,115200);mute = 1; 辫摧贼兄屏佐褒子氰针铱儡苛疮察致凑沦际纸奏臃窟猴郊刚克间酵鹤线苗ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础

188、第6章 嵌入式系统总线接口n2录音录音n录音程序在初始化等动作上与放音类似,代码如下:n(1)启动程序nvoidRecord_Iis(void)nnunsignedintsave_B,save_E,save_PB,save_PE;nUart_TxEmpty(0);nChangeClockDivider(1,1);/1:2:4nChangeMPllValue(0x96,0x5,0x1);/FCLK=135428571Hz,PCLK=3.385714MHznUart_Init(33857142,115200);nUart_Printf(RecordtestusingUDA1341n);nsave_

189、B=rGPBCON;nsave_E=rGPECON;nsave_PB=rGPBUP;nsave_PE=rGPEUP;nIIS_PortSetting();扣咽呐寒宪席帘逛埠殃瞧洲硅吼放爬腑议扬践抱伍时话褂男雁洱拾哥等智ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n录音数据保存在rec_buf中:nrec_buf=(unsignedshort*)0x31000000;npISR_DMA2=(unsigned)DMA2_Rec_Done;npISR_EINT0=(unsigned)Muting;nrINTMSK=(BIT_DMA2);

190、nInit1341(RECORD);nrDISRCC2=(11)+(10);/APB,FixnrDISRC2=(U32)IISFIFO);/IISFIFOnrDIDSTC2=(01)+(00);/AHB,IncrementnrDIDST2=(int)rec_buf;/0x31000000nrDCON2=(131)+(030)+(129)+(028)+(027)+(124)n+(123)+(122)+(120)+REC_LEN;n/Handshake,syncPCLK,TCint,singletx,singleservice,n/I2SSDI,I2SRxrequest,n/Off-reload,

191、half-word,0x50000halfword.此占嘉臃蒸脱刹爪锚容樱眯烛脆戎雄绰蚀过宴使弃洲酵懂唬芯抹秩剿敬饶ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口nrDMASKTRIG2=(02)+(11)+0;/No-stop,DMA2channelon,nNo-swtriggern/Master,Rx,L-ch=low,IIS,16bitch,CDCLK=256fs,IISCLK=32fsnrIISMOD=(08)+(16)+(05)+(04)+(13)+(02)+(10);nrIISPSR=(25)+2;/Prescaler_

192、A/B=2-FCLKn135.4752MHz(1:2:4),11.2896MHz(256fs),44.1KHznrIISCON=(05)+(14)+(13)+(02)+(11);n/TxDMAdisable,RxDMAenable,Txidle,Rxnotidle,prescalerenable,stopnrIISFCON=(114)+(1startpiling.超阑抨邢候棕略啪能猛魂须炎喉势咎杀绎功张缄哮锦惹英真坍辰稼满拧疡ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n(2)录音n开始录音。n/RxstartnrIISCON|=

193、0x1;n录音完毕将引发DMA2中断,如下代码等待录音结束。nwhile(!Rec_Done);nrINTMSK=BIT_DMA2;nRec_Done=0;/IISStopnDelay(10);/ForendofH/WRxnrIISCON=0x0;/IISstopnrDMASKTRIG2=(12);/DMA2stopnrIISFCON=0x0;/ForFIFOflush醚缀算菜双缎棒馒逐蛰萝涡持跑叁揖征另钥瘫胀操自蝗狄邹吵框瓮斧渡意ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n(3)播放声音n录音完毕,然后播放声音。nUart_P

194、rintf(EndofRecord!n);nUart_Printf(Pressanykeytoplayrecordeddatan);nUart_Printf(IfyouwanttomuteornomutepushtheEIN0keynrepeatedlyn);nUart_Getch();nsize=REC_LEN*2;nUart_Printf(Size=%dn,size);nInit1341(PLAY);npISR_DMA2=(unsigned)DMA2_Done;nrINTMSK=(BIT_DMA2|BIT_EINT0);吼譬赁败寸塔钳男韩猫鞍圭胖彼蒂把嚷疆贝治帕瓶钠悔肘学臻栓褥企仍难ARM

195、汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口/DMA2 InitializerDISRCC2 = (01)+(00); /AHB, IncrementrDISRC2 = (int)rec_buf; /0x31000000rDIDSTC2 = (11) + (10); /APB, FixedrDIDST2 = (U32)IISFIFO); /IISFIFOrDCON2 = (131)+(030)+(129)+(028)+(027)+(024)+(123)+(022)+(120)+(size/2);/Handshake, sync PCLK

196、, TC int, single tx, single service, I2SSDO, I2S request, /Auto-reload, half-word, size/2rDMASKTRIG2 = (02)+(11)+0; /No-stop, DMA2 channel on,No-sw trigger /IIS Initialize/Master,Tx,L-ch=low,iis,16bit ch.,CDCLK=256fs,IISCLK=32fsrIISMOD = (08)+(26)+(05)+(04)+(13)+(02)+(10);/ rIISPSR = (45)+ 4; /Presc

197、aler_A/B=4 for 11.2896MHzrIISCON = (15)+(04)+(03)+(12)+(11);捅径心莽怠胚洒弓皇蒙矽丘使哦施尹靴抢哀献戈狰梗冕迫潜波戊且圃迅昆ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口/Tx DMA enable,Tx DMA disable,Tx not idle,Rx idle,prescaler enable,stoprIISFCON = (115)+(1 start piling.Uart_Printf(Press any key to exit!n);rIISCON |= 0x

198、1; /IIS Tx Startwhile(!Uart_GetKey();/IIS Tx StopDelay(10); /For end of H/W TxrIISCON = 0x0; /IIS stoprDMASKTRIG2 = (12); /DMA2 stoprIISFCON = 0x0; /For FIFO flushsize = 0;rGPBCON = save_B;rGPECON = save_E;rGPBUP = save_PB;rGPEUP = save_PE;rINTMSK = (BIT_DMA2 | BIT_EINT0);ChangeMPllValue(0xa1,0x3,0x

199、1); / FCLK=202.8MHzUart_Init(0,115200);mute = 1; 抵颜谨吹肾庚稗容像识免早婚拖母嘻爵限拂捷寄暖议嚣憎吸遣攀狮赫粉唐ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口第第6章章 思考题与习题思考题与习题n1.简述串行数据的通信模式。n2.简述串行通信同步通信和异步通信的特点。n3.简述RS-232C接口的规格、信号、引脚功能和基本连接方式。n4.简述RS-232、RS-422和RS-485的特点。n5.简述UART的字符传输格式。n6.分析图6.1.5所示S3C2410A的UART内部结构与

200、功能。n7.简述S3C2410A的UART的操作模式与功能。n8.与S3C2410AUART相关的专用寄存器有哪些?各有什么功能?n9.简述UART行控制寄存器的位功能。n10.简述UART控制寄存器(UCONn)的位功能。n11.简述UARTFIFO控制寄存器(UFCONn)的位功能。n12.简述UARTModem控制寄存器(UMCONn)的位功能。n13.登录www.maxim-,查阅MAX232的有关资料,分析其内部结构、引脚端功能、应用电路和编程方法。陡拳寅硫模斋堕右阻秦瞄勘铰艾赎箩虱棕缔阐迈抡荷霍峰悄爆耘沂涎挚镐ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序

201、设计基础 第6章 嵌入式系统总线接口n14.登录www.maxim-,查阅MAX487的有关资料,分析其内部结构、引脚端功能、应用电路和编程方法。n15.简述I2C总线的工作模式、传输过程、信号及数据格式。n16.分析图6.2.3所示S3C2410A的I2C总线内部结构和功能。n17与S3C2410AI2C总线操作有关的寄存器有哪些?各有什么功能?n18.简述IICCON(I2C总线控制寄存器)的位定义。n19.简述IICSTAT(I2C总线控制/状态寄存器)的位定义。n20.简述IICADD(I2C总线地址寄存器)的位定义。n21.简述IICDS(移位数据寄存器)的位定义。n22.登录,查阅

202、KS24C080C的有关资料,分析其内部结构、引脚端功能、应用电路和编程方法。n23.简述USB总线的主要性能特点。n24.一个USB系统可以分为几部分来描述?启尔拘漫闹淄矫袜谬驮秽芳榔腰铬串圭鸯卡瘪吝忽恼筹蛙蜒搭象梭劈饰羡ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n25.简述USB总线物理接口的组成。n26.USB采取哪些措施来提高它的健壮性?n27.分析图6.3.1所示S3C2410A的USB主机控制器内部结构和功能。n28.分析图6.3.2所示S3C2410A的USB设备控制器内部结构和功能。n29.登录,查找S3C241

203、0A用户手册,了解USB主机控制器的OHCI寄存器的内部结构和编程方法。n30.登录,查阅KS24C080C的有关资料登录,查找S3C2410A用户手册,了解USB设备控制器寄存器的内部结构和编程方法。n31.简述SPI接口基本原理与结构。n32.分析图6.4.3所示S3C2410A的串行外围设备接口内部结构和功能。n33.简述SPI模块的编程步骤。n34.与S3C2410ASPI接口有关的特殊寄存器有哪些?各自的功能?品粒瞎靠挖簇碱怎搏狰俯稍纲毋艺隘绥注追带靖缮翱长孽溜亢耐弱斜绵卤ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口n3

204、5.32位PCI总线的引脚按功能可以分为哪几类?n36.分析图6.5.1所示PCI总线读操作时序,说明其读操作过程。n37.数字音频数据有哪些文件格式?各有什么特点?n38.I2S总线有几种传输模式?各有什么特点?n39.分析图6.6.2所示I2S总线时序图,说明其操作过程。n40.S3C2410A的I2S总线接口有几种工作方式?各有什么特点?n41.分析图6.6.3所示S3C2410AI2S总线接口的内部结构和功能。n42.分析I2S总线格式与MSB-justified格式的同异。n43.与S3C2410AI2S总线接口相关寄存器有哪些?各有什么功能?n44.简述I2S总线接口的启动与停止过程。n45.登录,查阅UDA1341TS的有关资料,分析其内部结构、引脚端功能、应用电路和编程方法。塞诱仰灶剥弃脸捧腻符幢稳寡扩柳玲贤靴烈岗鬃哑苏比决书孟采诽季娘晶ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口ARM汇编语言程序设计基础 第6章 嵌入式系统总线接口

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号