1、http:/ 6学时)学时)http:/ n了解Microware、1-wire、USB和CAN总线。n掌握I2C总线的原理。n掌握SPI总线的原理。nI2C总线的软件模拟。nSPI总线的软件模拟。 http:/ 9.1 串行扩展概述串行扩展概述 n9.2 UART9.2 UART串行扩展接口串行扩展接口 n9.3 I9.3 I2 2C C串行扩展总线串行扩展总线 n9.4 SPI9.4 SPI串行扩展接口串行扩展接口 n本章小结本章小结n习题习题 http:/ 9.1.1 串行扩展的种类串行扩展的种类 n9.1.2 9.1.2 串行扩展的特点串行扩展的特点http:/ 新一代单片机技术的显著
2、特点之一就是串行扩展总线和接口的推出。常用的串行扩展总线和接口有I2C总线、SPI总线、Microware总线、1-wire总线和CAN总线等。 (1)UART串行扩展接口 (Universal Asynchronous Receiver/Transmitter) UART通用异步收发器,既能同步又能异步通信的硬件电路称为UART。UART是用于控制计算机与串行设备的芯片,它提供了RS232C数据终端设备接口,这样计算机就可以和调制解调器或其它使用RS232C接口的串行设备通信了。 http:/ Integrated Circuit)串行扩展总线 I2C总线是Philip公司推出的芯片间串行传
3、输总线。它用两根线实现了完善的全双工同步数据传送,可以极为方便地构成多机系统和外围器件扩展系统。(3)SPI(Serial Peripheral Interface) 串行扩展接口 SPI总线是Motorola公司提出的一种同步串行外设接口。允许MCU与各种外围设备以同步串行方式进行通信。其外围设备种类繁多,从最简单的TTL移位寄存器到复杂的LCD显示驱动器、网络控制器等,可谓应有尽有。 http:/ Microware总线是NS公司提出的串行同步双工通信接口,用于8位COP800系列单片机和16位HPC系列单片机。(5)单总线(1-wire)串行扩展总线 1-wire总线是Dallas公司研
4、制开发的一种协议,用于便携式仪表和现场监控系统。(6)USB(Universal Serial BUS)串行扩展总线 USB总线是Compaq、Intel、Microsoft、NEC等公司联合制定的一种计算机串行通信协议。 http:/ Area Network)串行扩展总线 CAN总线是德国Bosch公司最先提出的多主机局域网,是国际上应用最广泛的现场总线之一。最初,CAN被设计作为汽车环境中的微控制器通信,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。比如:发动机管理系统、变速箱控制器、仪表装备。 http:/ 串行扩展总线技术是新一代单片机技术发展的一个显著特点。与并行扩
5、展总线相比,串行扩展总线有电路结构简单,程序编写方便,易于实现用户系统软硬件的模块化、标准化等优点。 常用串行扩展总线和接口的特点简要说明如下: (1)UART串行扩展接口 UART接口是二线制,8051单片机的UART既能作通用异步接收和发送器,又能作同步移位寄存器。它可以实现8051单片机系统之间点对点的单机通信或多机通信,也可以实现扩展I/O口。 http:/ I2C总线是二线制,采用器件地址的硬件设置方法,通过软件寻址完全避免了器件的片选线寻址方法,从而使硬件系统具有简单灵活的扩展方法。I2C总线简单,结构紧凑,易于实现模块化和标准化。(3)SPI串行扩展接口 SPI总线是三线制,可直
6、接与多种标准外围器件直接接口,在SPI从设备较少而没有总线扩展能力的单片机系统中使用特别方便。即使在有总线扩展能力的系统中采用SPI设备也可以简化电路设计,省掉很多常规电路中的接口器件,从而提高了设计的可靠性。 http:/ Microware总线是三线制,由一根数据输出(SO)线、一根数据输入(SI)线和一根时钟(SK)线组成。所有从器件的时钟线连接到同一根SK线上,主器件向SK线发送时钟脉冲信号,从器件在时钟信号的同步沿输出/输入数据。主器件的数据输出线SO和所有从器件的数据输入线相接,从器件的数据输出线都接到主器件的数据输入线SI上。(5)1-wire总线 1-wire总线是利用一根线实
7、现双向通信,由一个总线主节点、一个或多个从节点组成系统,通过一根信号线对从芯片进行数据的读取。每一个符合1-wire协议的从芯片都有一个唯一的地址,包括8位分类码、48位的序列号和8位CRC代码。主芯片对各个从芯片的寻找依据这64位的不同来进行。单总线节省I/O引脚资源、结构简单、成本低廉、便于总线扩展和维护。 http:/ USB比较于其他传统接口的一个优势是即插即用的实现,即插即用(Plug-and-Play)也称为热插拔(Hot Plugging)。数据传输速度快,USB1.1接口的最高传输率可达12 Mb/s;USB2.0接口的最高传输率可达480 Mb/s。扩展方便,使用USB Hu
8、b扩展,可以连接127个USB设备,连接的方式十分灵活。(7)CAN总线 在由CAN 总线构成的单一网络中,理论上可以挂接无数个节点。实际应用中,节点数目受网络硬件的电气特性所限制。CAN 可提供高达1Mbit/s的数据传输速率,这使实时控制变得非常容易。另外,硬件的错误检定特性也增强了CAN的抗电磁干扰能力。当信号传输距离达到10km时,CAN 仍可提供高达50Kbit/s的数据传输速率。 http:/ 9.2.1 串行口工作方式串行口工作方式 n9.2.2 UART9.2.2 UART串行扩展应用实例串行扩展应用实例 http:/ 是一个双列直插式8位串入/并出移位寄存器,其引脚如下图所示
9、。其引脚定义如下:lA:同步串行数据输入端lB:同步串行数据输入端lQ0Q7:8位并行数据输出端lCK:时钟脉冲输入端lCLR:数据清除端(清除输出数据,通常用在移位完成时)lGND:接地端lVCC:电源端http:/ 是一个双列直插式8位并入/串出移位寄存器,其引脚如下图所示。其引脚定义如下:lLD:重新装载数据端(通常用在数据完全移出后)lCK:内部数据移位时钟脉冲输入端lD0D7:并行数据输入端lQ11:取反串行输出端lGND:接地端lQ11:串行输出端lSE:用于填充数据移出后的空位的逻辑电平信号lCOK:和CK联合控制数据移动lVCC:电源端http:/ 1 2 3 4 5 6 7
10、10 9 8 11 12 13 14 A B Q7 GND CK CLR VCC Q6 Q5 Q4 Q3 Q2 Q1 Q0 12 13 14 15 16 SE D7 VCC D6 D5 D4 COK Q11 1 2 3 4 5 6 7 LD CK D3 Q11 D2 D1 D0 GND 9 11 10 8 74LS164引脚图 74LS165引脚图 http:/ 利用74LS164串行输入并行输出芯片作一个简单的电子钟,要求四个数码管显示时钟;其中LED1显示小时的十位,LED2显示小时的个位,LED3显示分钟的十位,LED4显示分钟的个位。解:解:原理图如下图,采用单片机的串行口输出字形码,
11、用74LS164和74LS138作为扩展芯片。 74LS164的功能是将AT89C2051串行通信口输出的串行数据译码并在其并口线上输出,从而驱动LED数码管。 74LS138是一个3线-8线译码器,它将单片机输出的地址信号译码后动态驱动相应的LED。因74LS138电流驱动能力较小,故用末级驱动三极管9013作为地址驱动。将4只LED的字段位都连在一起,它们的公共端则由74LS138分时选通,这样任何一个时刻,都只有一位LED在点亮,也即动态扫描显示方式,其优点使用串行口进行LED通信程序编写相当简单,用户只需将需显示的数据直接送串口发送缓冲器,等待串行中断即可。 http:/ P3.2P3
12、.3TXRXhttp:/ 0000HLJMP MAINORG 0040HMAIN:MOV SCON,#00H;初始化串口为方式0MOV R3,#00HLOOP:MOV R4,#0E8HDELAY:LCALL DISPLAY;动态扫描显示DJNZ R4,DELAYINC R3;显示数字增1CJNE R3,#0AH,LOOP;不等于10转移LJMP MAIN 下面是一个简单的动态扫描程序,如果再利用上第六章的定时器就可做成一个完整的电子钟,四个数码管显示为00:00这种形式。在本例中冒号就不显示出来了,分别用20H、21H、22H、23H地址存放时间的时钟的十位、时钟的个位、分钟的十位、分钟的个位
13、。用中断方式做一个不带时钟芯片的电子钟,请读者自己完成。 http:/ P3.2;显示LED1CLR P3.3LCALL DISPLCALL DELAY1SETB P3.3;显示LED2LCALL DISPLCALL DELAY1SETB P3.3;显示LED3CLR P3.2LCALL DISPLCALL DELAY1SETB P3.2;显示LED4SETB P3.3LCALL DISPLCALL DELAY1RET参考程序:http:/ A,R3;将字形码送串口MOV DPTR,#TABLEMOVC A,A+DPTRMOV SBUF,AWAIT:JNB TI,WAIT;等待串口传送CLR
14、TIRETDELAY1:MOV R6,#10H;动态扫描的时间LOOP1:MOV R7,#38H;间隔DJNZ R7,$DJNZ R6,LOOP1RETTABLE:DB 3FH, 06H,,5BH;09的字形码DB 4FH, 66H, 6DHDB 7DH, 07H,,7FH,,6FH参考程序:http:/ I9.3.1 I2 2C C总线的结构原理总线的结构原理 n9.3.2 I9.3.2 I2 2C C总线的软件模拟总线的软件模拟 n9.3.3 I9.3.3 I2 2C C串行扩展应用实例串行扩展应用实例 http:/ http:/ #1 #2 #3 #4 VDD SDA SCL RP RP
15、 SDA SDA SDA SDA SCL SCL SCL SCL I2C总线接口电路结构 http:/ http:/ 和SCL 都是双向线路,都通过一个电流源或上拉电阻连接到正的电源电压;当总线空闲时,这两条线路都是高电平;连接到总线的器件输出级必须是漏极开路或集电极开路才能执行线与的功能。nI2C 总线上数据的传输速率l在标准模式下可达100kbit/s。l在快速模式下可达400kbit/s。 l在高速模式下可达3.4Mbit/s 。n连接到总线的接口数量只由总线电容是400pF 的限制决定关于高速模式主机器件的信息。 http:/ 这些基本时序包括:启动、写字节、读字节、应答位、停止信号,
16、并可以组合成两个子程序:读N字节子程序、写N字节子程序。 http:/ lI2C总线有严格的规范,如接口的电气特性、信号时序、信号传输的定义、总线状态设置、总线管理规则及总线状态处理等。l在I2C总线规范中,总线上的器件节点的电气特性及地址给定都具有较强的独立性,而且各节点上的器件、模块都有相对独立的地址编号。l严格、完善的规范,并将这些规范的应用尽可能“傻瓜”化,除了有充分的硬件支持外,在软件方面,Philips公司为用户提供了一套完善的总线状态处理软件包,以致于用户可以不去熟悉I2C总线的规范,不去理睬总线的管理方法,只要掌握I2C总线的应用程序设计方法就可方便地使用I2C总线,并且能很快
17、地掌握I2C总线系统的软、硬件设计方法。 http:/ I2C总线的起始和停止条件如下图所示。 分别用P1.0和P1.1模拟I2C总线的时钟线和数据线,则可给时钟线SCL和数据线SDA赋值。程序如下: SDA SCL 起始条件 停止条件 SDL EQU P1.0SCA EQU P1.1http:/ 当时钟SCL为高电平时,数据线SDA从高电平向低电平切换表示起始条件,即启动I2C总线数据传送。模拟时序产生时钟SCL和SDA发送的起始条件子程序如下: 使用不同频率的晶体振荡器,则要相应增删程序段中NOP指令的条数,以满足时序的要求。 START:SETB SDASETB SCLNOP;NOP的数
18、目根据时钟频率确定NOP;此处用NOP来延时CLR SDANOPNOPCLR SCLREThttp:/ 当时钟SCL为高电平时,数据线SDA由低电平向高电平切换表示停止条件,即停止I2C总线数据传送。模拟时序产生时钟SCL和SDA发送的停止条件子程序如下: 使用不同频率的晶体振荡器,则要相应增删程序段中NOP指令的条数,以满足时序的要求。 STOP:CLR SDASETB SCLNOP;NOP的数目根据时钟频率确定NOP;此处用NOP来延时SETB SDANOPNOPCLR SDACLR SCLREThttp:/ I2C总线的应答位和非应答位如下图所示。发送ACK和ACK子程序如下。 发送 A
19、CK 发送 ACK SDASCLhttp:/ 发送应答位ACK 由上图可知,当发送应答位ACK时,只需将SDA设为低电平、SCL设为高电平,其区间的长短根据晶振的频率确定,即改变下列子程序中的NOP数即可达到要求,发送ACK子程序如下: YACK:CLR SDASETB SCLNOP;NOP的数目根据时钟频率确定NOP;此处用NOP来延时CLR SCLSETB SDAREThttp:/ 发送非应答位 由上图可知,当发送非应答位ACK时,只需将SDA设为高电平、SCL设为高电平,其区间的长短根据晶振的频率确定,即改变下列子程序中的NOP数即可达到要求,发送ACK子程序如下: YNACK:SETB
20、 SDASETB SCLNOP;NOP的数目根据时钟频率确定NOP;此处用NOP来延时CLR SCLCLR SDAREThttp:/ TACK:SETB SDA;设置SDA为输入方式SETB SCL;产生第9个时钟脉冲NOP;NOP的数目根据时钟频率确定NOP;此处用NOP来延时CLR 30HMOV C,SDAJNC TEND;若正常应答,则转移SETB 30HTEND:CLR SCLREThttp:/ SCL SDA 起始 停止 1 ACK 2 http:/ R4,#08H;要发送的数据长度为8位LOOP2:RLC A;将待发送的位送入位CY中JC LOOP1;CY位为1转到LOOP1CLR
21、 SDA;置为低电平,发送0SETB SCL;时钟高电平数据保持数据稳定NOP;调节NOP的个数,使延时4.7u sNOPCLR SCL;时钟脉冲变为低电平,准备改变数据DJNZ R4,LOOP2;若8位未发送完,转LOOP2继续RET;8位发送完成返回LOOP1:SETB SDA;置为高电平,发送1SETB SCL;时钟为高电平保持数据稳定NOP;调节NOP的个数,使延时4.7u sNOPCLR SCL;时钟脉冲变为低电平,准备改变数据CLR SDA;将数据改为低电平DJNZ R4,LOOP2;若8位未发送完,转LOOP2继续RET;8位发送完成返回字节数据发送子程序http:/ ACK 起
22、始字节 SCL SDA 起始 停止 1 ACK 2 7 8 9 http:/ R4,#08H;要接收的数据长度为8位LOOP3:SETB SDA;设置SDA为输入方式SETB SCL;SDA上数据有效MOV C,SDA;读入SDA引脚状态MOV A,R5;将存放结果送入A中RLC A;将读出的1位移入A中MOV R5,ACLR SCL;一个脉冲结束,SDA上数据无效DJNZ R4,LOOP3;未读完8位,转到LOOP3RET;读完返回http:/ 在完成上述模拟子程序后,根据I2C总线协议,可编写多个字节数据发送子程序。要发送的字节数存放在R5中,要发送的数据块的第一个数据的地址为40H,外围
23、器件的地址存放在60H中,参考程序如下: WDBYT:LCALL START;起始WLP1:MOV A,60H;设60H为存放的控制字LCALL WOBYT;发送读控制字节LCALL TACK;检查应答位JB 30H,WLP1;无应答位,重发MOV R0,#40H;40H为第一个数据的首地址WLP2:MOV A, R0;读一个字节数据LCALL WOBYT;发送LCALL TACK;检查应答位JB 30H,WLP1;无应答位,重发INC R0;指向下一个要发送的数据DJNZ R5,WLP2;要发送数据未发完,再发送LCALL STOP;全部数据发完,停止RET;返回http:/ 根据I2C总线
24、协议,同样可编写多个字节数据接收子程序。要接收的字节数存放在R5中,要接收的数据块存放的首地址为50H,外围器件的地址存放在60H中,参考程序如下: RDBYT:LCALL START;起始RLP1:MOV A,60H;设60H为存放的控制字LCALL WOBYT;发送读控制字节LCALL TACK;检查应答位JB 30H,RLP1;无应答位,重发MOV R0,#50H;50H为第一个数据的首地址RLP2:LCALL ROBYT;读入一个字节MOV R0,ADJNZ R5,RLP3;要接收数据未读完,再读入LCALL YNACK;发送非应答位LCALL STOP;全部数据发完,停止RET;返回
25、RLP3:LCALL YACK;发送应答位INC R0;指向下一个要存放数据的地址SJMP RLP2;调节NOP的个数,使延时4.7u shttp:/ 将AT89C2051片内RAM40H47H单元中的八个8位数据通过I2C总线接口传送到存储器AT24C01的50H57H单元中。解:AT24C01是Atmel公司生产的具有I2C总线接口的E2PROM,是目前应用较多的AT24C系列存储器中的一种,芯片存储容量为1Kb(1288位)。AT24C01引脚如下图所示。其引脚定义如下: lSCL:串行时钟端。lSDA:串行数据端,漏极开路, 需接上拉电阻到VCC。lWP:写保护, 当WP为高电平时存储
26、器只读; 当WP为低电平时存储器可读可写。lA2A0:芯片地址。 1 2 3 4 5 6 7 8 A0 A1 VSS VCC A2 SCA SCL WP http:/ AT89C2051与AT24C01通过串行总线接口传送数据的接线如下图所示。因AT89C2051没有I2C总线接口,可用软件的办法来模拟I2C总线操作。P1.0模拟I2C总线的时钟线SCL,P1.1模拟I2C总线的数据线SDA。 AT89C2051 P1.0 P1.1 AT24C01 SCL SCA VCC 10k2 AT89C2051与AT24C01的接口接线http:/ AT24C01的读写操作有多种形式,写操作有两种类型:
27、字节写和页面写;读操作有三种类型:读当前地址内容、读随机地址内容和读顺序地址内容。 AT24C01写N个字节数据的操作时序如下图所示, AT24C01读N个字节数据的操作时序如下图所示。 http:/ 器件地址码的第74位从器件地址位,用于确认器件的类型。 AT24C01的器件地址码为1010,1010 表示从器件为串行E2PROM。 器件地址码的第31位18片的片选或存储器内的页面地址选择位。此三个控制位用于选片或者内部页面选择。 如在存储容量8Kb(10248位)的AT24C08内部,存储矩阵分为4个页面,每一页面有256个字节。通过器件地址码的第2位和第1位,可以选择数据读写的页面。 器
28、件地址码的第0位读、写(R/W)操作控制码。若此位为1,下一字节进行读操作(R);此位为0,下一字节进行写操作(W)。 http:/ l程序中用到的子程序均为9.3.2节所编写的模拟I2C总线的子程序。 http:/ START;发送起始信号ICWLP1:MOV A,0A0H;#10100000B器件地址码,LCALL WOBYT;发送器件地址LCALL TACK;检查应答位JB 30H,ICWLP1;无应答位,重发ICWLP2:MOV A,50H;50H为待写存储单元首地址LCALL WOBYT;发送待写存储单元地址LCALL TACK;检查应答位JB 30H,ICWLP1;无应答位,重发M
29、OV R5,#8;待发送数据块的长度MOV R0,#40H;40H为第一个数据的首地址ICWLP3:MOV A, R0;读一个字节数据LCALL WOBYT;发送LCALL TACK;检查应答位JB 30H,ICWLP1;无应答位,重发INC R0;指向下一个要发送的数据DJNZ R5,WLP2;要发送数据未发完,再发送LCALL STOP;全部数据发完,停止LCALL DELAY;延时,等待AT24C01内部写操作RET;返回http:/ SPI9.4.1 SPI总线的结构原理总线的结构原理 n9.4.2 SPI9.4.2 SPI总线的软件模拟总线的软件模拟 n9.4.3 SPI9.4.3
30、SPI串行扩展应用实例串行扩展应用实例 http:/ http:/ SCK MOSI MISO MCU MISO MOSI SCK 器件 1 SS SCK MOSI MISO MISO MOSI SCK 器件 2 SS MISO MOSI SCK 器件 3 SS SPI总线接口电路结构 http:/ http:/ http:/ 图中,P1.0模拟SPI的数据输出端(MOSI),P1.1模拟SPI的SCK输出端,P1.2模拟SPI的从机选择端(SS),P1.3模拟SPI的数据输入端(MISO)。下面给出模拟SPI串行输入、串行输出和串行输入/输出的3个子程序。 8051 P1.0 P1.1 P1
31、.2 P1.3 AT25010 SI SCK CS SO http:/ MCU串行输入子程序SPIIN 从AT25040的SO端接收8位数据并放入寄存器R0中。参考程序如下: SPIIN:SETB P1.1 ;使P1.1(时钟)输出为1 CLR P1.2 ;选择从机 MOV R1,#08H ;置循环次数 SPIIN1:CLR P1.1 ;使P1.1(时钟)输出为0 NOP ;延时 NOP MOV C,P1.3 ;从机输出送进位C RLC A ;左移至累加器A SETB P1.1 ;使P1.0(时钟)输出为1 DJNZ R1,SPIIN1 ;判断是否循环8次 (8位数据) MOV R0,A ;8
32、位数据送R0 REThttp:/ MCU串行输出子程序SPIOUT 将MCS51单片机中R0寄存器的内容传送到AT25040的SI端。参考程序如下: SPIOUT:SETB P1.1 ;使P1.1(时钟)输出为1 CLR P1.2 ;选择从机 MOV R1,#08H ;置循环次数 MOV A,R0 ;8位数据送累加器ASPIOUT1:CLR P1.1 ;使P1.1(时钟)输出为0 NOP ;延时 NOP RLC A ;左移至累加器A最高位至C MOV P1.0,C ;进位C送从机输入 SETB P1.1 ;使P1.1(时钟)输出为1 DJNZ R1,SPIOUT1 ;判是否循环8次(8位数据)
33、 REThttp:/ MCU串行输入/输出子程序SPIIO 将MCS51单片机R0寄存器的内容传送到AT25040的SI端,同时从AT25040的SO端接收8位数据。参考程序如下: SPIIO:SETB P1.1 ;使P1.1(时钟)输出为1 CLR P1.2 ;选择从机 MOV R1,#08H ;置循环次数 MOV A,R0 ;8位数据送累加器A SPIIO1:CLR P1.1 ;使P1.1(时钟)输出为0 NOP ;延时 NOP MOV C,P1.3 ;从机输出送进位C RLC A ;左移至累加器A最高位至C MOV P1.0,C ;进位C送从机输入 SETB P1.1 ;使P1.1(时钟
34、)输出为1 DJNZ R1,SPIIO1 ;判断是否循环8次(8位数据) REThttp:/ http:/ 将AT89C2051片内RAM30H、31H单元中的16位数据通过SPI总线接口传送到数/模转换器TLC5615。解:TLC5615是3线串行总线接口10位电压输出数/模转换器,它既可与单片机的SPI总线接口相连接,又可与单片机的Microwire总线接口相连接。TLC5615内部结构如下图所示。 http:/ TLC5615内部结构 http:/ VO=2REFCODE/1024 其中,CMOD是通过串行总线接口输入的待转换的数据;REF是基准电压。lTLC5615最大的串行时钟速率不
35、超过14MHz,10位DAC的建立时间为12.5s,通常更新速率限制至80kHz以内。lTLC5615的16位移位寄存器在SCLK的控制下从DIN引脚输入数据,高位在前,低位在后。16位移位寄存器中间的10位数据在上升沿的作用下输入10位的D/A寄存器供给D/A转换。 http:/ AT89C2051 P1.1 P1.2 P1.3 TLC5615 DIN SCLK CS http:/ AT89C2051将片内RAM30H、31H单元中的16位数据传送到TLC5615的参考程序如下:DIN BIT P1.1 ;定义I/O口SCLK BIT P1.2CS5615 BIT P1.3DataH EQU
36、 30HDataL EQU 31HTLC5615:CLR SCLK ;准备操作TLC5615 CLR CS5615 ;选中TLC5615 MOV R7,#08H MOV A, DataH ;装入高8位数据LPH: LCALL DELAY ;延时 RLC A ;最高位移向TLC5615 MOV DIN,C SETB SCLK ;产生上升沿,移入1位数据 LCALL DELAY CLR SCLK DJNZ R7,LPHhttp:/ MOV R7,#08H MOV A,DataL ;装入低8位数据LPL:LCALL DELAY ;延时 RLC A ;最高位移向TLC5615 MOV DIN, C SETB SCLK ;产生上升沿,移入1位数据 LCALL DELAY CLR SCLK DJNZ R7,LPL SETB CS5615 ;结束TLC5615的操作,同时将转换数据代码存入10位DA寄存器,启动新一轮的DA转换RETDELAY:(略) RET 参考程序http:/ http:/ 串行扩展与并行扩展相比的主要优点是什么?2. 简述I2C总线的数据传输方法。3. 常用模拟I2C总线的应用子程序有哪些? 4. 简述SPI总线的数据传输方法。5. 常用模拟SPI总线的应用子程序有哪些?http:/