C8051第8章幻灯

上传人:壹****1 文档编号:567636042 上传时间:2024-07-21 格式:PPT 页数:46 大小:211.02KB
返回 下载 相关 举报
C8051第8章幻灯_第1页
第1页 / 共46页
C8051第8章幻灯_第2页
第2页 / 共46页
C8051第8章幻灯_第3页
第3页 / 共46页
C8051第8章幻灯_第4页
第4页 / 共46页
C8051第8章幻灯_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《C8051第8章幻灯》由会员分享,可在线阅读,更多相关《C8051第8章幻灯(46页珍藏版)》请在金锄头文库上搜索。

1、第第8章章 C8051F330单片机的通信接口单片机的通信接口8.1 串行外设接口(串行外设接口(SPI0) C8051F330单片机的串行外设接口(SPI0)原理框图 (1)主输出、从输入信号MOSI主出从入(MOSI)信号用于从主器件到从器件的串行数据传输。(2)主输入、从输出信号MISO主入从出(MISO)信号用于从从器件到主器件的串行数据传输。当SPI0作为主器件时,该信号是输入;当SPI0作为从器件时,该信号是输出。数据传输时高位在先。当SPI禁止或工作在4线从方式而未选中时,MISO引脚处于高阻态。(3)串行时钟信号SCK串行时钟(SCK)信号是主器件的输出和从器件的输入,用于同步

2、主器件和从器件之间在MOSI和MISO线上的串行数据传输。(4)从器件选择信号NSSNSS信号的功能取决于SPI0CN寄存器中NSSMD1和NSSMD0位的设置。有3种可能的方式:1)禁止NSS方式:当作为从器件工作在3线方式时,总是选择SPI0。2)4线从方式或多主方式:SPI0工作在4线方式,NSS作为输入。当作为从器件时,NSS选择从SPI0器件。当作为主器件时,NSS信号的负跳变禁止SPI0的主器件功能,3)4线主方式:SPI0工作在4线方式,NSS作为输出。NSSMD0的值决定NSS引脚的输出电平。这种配置只能在SPI0作为主器件时使用。NSSMD(NSSMD1和NSSMD0)位的设

3、置影响器件的引脚分配。当工作在3线主或从方式时,NSS不连接引脚。在所有其他方式,必须使NSS连接引脚。1. SPI0主方式通过主允许标志(MSTEN,SPI0CFG.6)置1可将SPI0置于主方式。只有SPI主器件能启动数据传输。在主方式,向SPI0数据寄存器(SPI0DAT)写入一个字节,数据将写入发送缓冲器;如果SPI移位寄存器为空,发送缓冲器中的字节数据传送到移位寄存器,数据传输开始;SPI0主器件通过MOSI线上的引脚串行移出数据,同时在SCK引脚上输出串行时钟;在传输结束后SPIF(SPI0CN.7)标志置为逻辑1;如果允许中断,将产生一个中断请求。在全双工操作中,当SPI主器件在

4、MOSI线上的引脚向从器件发送数据时,SPI从器件同时通过MISO线上的引脚向主器件发送其移位寄存器中的内容。因此SPIF标志既是发送完成标志,又是接收数据准备好标志。CPU读SPI0DAT获取数据字节。当配置为主器件时,SPI0的工作方式为:多主方式、3线单主方式或4线单主方式。 2. SPI0从方式当SPI0使能,但未配置成主器件时,SPI0作为SPI从器件工作。作为从器件,由主器件控制串行时钟(SCK),从MOSI移入数据,从MISO引脚移出数据。从器件不能启动数据传送,需要写SPI0DAT来预先准备要发送给主器件的数据。当配置为从器件时,SPI0可以工作4线或3线方式。在4线方式,NS

5、S配置为数字输入。当NSS为逻辑0时,SPI0使能;当NSS为逻辑1时,禁止SPI0。位计数器在NSS的下降沿复位。对应每次字节传输,在第一个有效SCK边沿到来之前,NSS信号必须驱动到低电平至少两个系统时钟周期。在3线从方式,如果不使用NSS。这时SPI0必须是唯一的从器件。由于在3线从方式下没有外部手段对位计数器复位以判断是否收到一个完整的字节。只能通过用SPIEN位禁止并重新使能SPI0来复位位计数器。3. SPI0的中断源如果允许SPI0中断,下面所述的标志位置1并产生中断,这些标志位都需要用软件清0。(1)在每次字节传输结束,SPI中断标志位SPIF(SPI0CN.7)置1。该标志适

6、用于所有SPI方式。(2)如果发送缓冲器的数据未发送完毕时写SPI0DAT,写冲突标志WCOL(SPI0CN.6)置1,这时忽略写SPI0DAT的操作,不会对发送缓冲器写入。该标志适用于所有SPI方式。(3)当SPI0配置为多主方式的主器件,而NSS为低电平时,方式错误标志MODF(SPI0CN.5)置1。当发生这种错误时,SPI0CN中的MSTEN和SPIEN位清0,以禁止SPI0并允许另一个主器件访问总线。(4)当SPI0配置为从器件并且一次传输结束,而接收缓冲器中还保持着上一次传输的数据未读取时,接收溢出标志RXOVRN(SPI0CN.4)置1。新接收的字节将不传送到接收缓冲器,允许CP

7、U读取前面接收的字节,新接收的数据字节丢失。 4. 串行时钟时序使用SPI0配置寄存器(SPI0CFG)中的时钟控制选择位可以在串行时钟相位和极性的4种组合中选择其一。CKPHA位(SPI0CFG.5)选择两种时钟相位(锁存数据所用的边沿)中的一种。CKPOL位(SPI0CFG.4)在高电平有效和低电平有效的时钟之间选择。主器件和从器件必须使用相同的时钟相位和极性。注意:当两个C8051F330单片机之间通信时,不论工作在主方式还是从方式,CKPHA必须置0。SPI0时钟频率寄存器(SPI0CKR)设置主方式的串行时钟频率。当SPI0配置为主器件时,最大数据传输率(位/秒)是系统时钟频率的二分

8、之一或12.5MHz(取较低的频率)。当SPI0配置为从器件时,若是主器件发出SCK、NSS(在4线从方式)和串行输入数据与从器件系统时钟同步,则全双工操作的最大数据传输率(位/秒)是系统时钟频率的十分之一,如果主器件发出的SCK、NSS及串行输入数据不同步,则最大数据传输率(位/秒)必须小于系统时钟频率的十分之一。图8-2 主方式数据/时钟时序图 图8-3 从方式数据/时钟时序图(CKPHA = 0) 图8-4 从方式数据/时钟时序图(CKPHA = 1) 5. SPI接口相关的特殊功能寄存器SPI0配置寄存器SPI0CFG(复位值0000 0111,SFR地址0xA1): RR/WR/WR

9、/WRRRRD7D6D5D4D3D2D1D0SPIBSYMSTENCKPHACKPOLSLVSELNSSINSRMTRXBMT(位7) SPIBSY:SPI忙标志(只读)当一次SPI传输正在进行时(主或从方式),该位置1。(位6) MSTEN:主方式允许位。0:禁止主方式,工作在从方式。1:允许主方式,工作在主器件方式。(位5) CKPHA:该位控制SPI0时钟的相位。0:在SCK周期的第一个边沿采样数据.。1:在SCK周期的第二个边沿采样数据.。(位4) CKPOL:该位控制SPI0时钟的极性。0:SCK 在空闲状态时处于低电平。1:SCK 在空闲状态时处于高电平。(位3) SLVSEL:从

10、选择标志位(只读)。0:当NSS引脚为高电平时(未选中为从器件)该位清0。1:当NSS引脚为低电平时该位置1,表示SPI0是选中的从器件。 (位2) NSSIN:读该寄存器时,该位指示NSS引脚的即时值。该信号未去噪。(位1) SRMT:从方式时,移位寄存器空标志位。当所有数据都移入/移出移位寄存器,并且没有新数据可以从发送缓冲器读出或向接收缓冲器写入时,该位置1。当数据字节从发送缓冲器传送到移位寄存器或SCK发生变化时,该位清0。在主方式时SRMT = 1。(位0) RXBMT:从方式时,接收缓冲器空标志位。当接收缓冲器读取数据后,且没有新数据时,该位置1。如果在接收缓冲器中有新数据未读取,

11、则该位清0。在主方式时,RXBMT=1。SPI0控制寄存器 SPI0CN(复位值0000 0110,SFR地址0xF8,可位寻址): R/WR/WR/WR/WR/WR/WRR/WD7D6D5D4D3D2D1D0SPIFWCOLMODFRXOVRNNSSMD1NSSMD0TXBMTSPIEN(位7) SPIF:SPI0中断标志位。该位在数据传输结束后置为逻辑1,如果允许中断,会使CPU运行SPI0中断处理服务程序。该位不能自动清0,必须用软件清0。(位6) WCOL:写冲突标志位。该位由硬件置1(并产生一个SPI0中断),表示数据传送期间对SPI0数据寄存器进行了写操作。该位必须用软件清0。(位

12、5)MODF:方式错误标志位。当检测到主方式冲突(NSS为低电平,MSTEN1,NSSMD1:0 = 01)时,该位由硬件置为1(并产生一个SPI0中断)。该位不能自动清0,必须用软件清0。(位4) RXOVRN:从方式下,接收溢出标志位。当前传输的最后一位已经移入SPI0移位寄存器,而接收缓冲器中仍保存着前一次传输中未读取的数据时,该位由硬件置为1(并产生一个SPI0中断)。该位不会自动清0,必须用软件清0。(位3-2)NSSMD1-NSSMD0:从方式选择位,选择NSS工作方式:00:3线从方式或3线主方式,NSS 信号不连到端口引脚。01:4线从方式或多主方式(默认值),NSS总是器件的

13、输入。1x:4线单主方式,NSS分配一个输出引脚并输出NSSMD0的值。(位1)TXBMT:发送缓冲器空标志位当新数据写入发送缓冲器时,该位清0。当发送缓冲器中的数据传送到SPI移位寄存器时,该位置1,表示可以向发送缓冲器写新数据。(位0) SPIEN:SPI0使能位,该位使能禁止SPI0。1:使能SPI00:禁止SPI0SPI0时钟速率寄存器 SPI0CKR(复位值0000 0000,SFR地址0xA2): R/WR/WR/WR/WR/WR/WRR/WD7D6D5D4D3D2D1D0SCR7SCR6SCR5SCR4SCR3SCR2SCR1SCR0(位7-0) SCR7-SCR0:SPI0时钟

14、频率。当SPI0模块配置为主方式时,这些位决定SCK输出的频率。SCK时钟频率是从系统时钟分频得到的,公式如下: 其中:SYSCLK是系统时钟频率,SPI0CKR是SPI0CKR寄存器中的8位值(最大255)。例如:如果SYSCLK = 1MHz,SPI0CKR = 0x04,则 fSCK=1000000/(2 x (4+1)=100kHzSPI0数据寄存器SPI0DAT:(复位值0000 0000,SFR地址0xA3):(位7-0)SPI0DAT:SPI0DAT寄存器用于发送和接收SPI0数据。在主方式下,向SPI0DAT写入数据时,数据放到发送缓冲器并启动发送。读SPI0DAT得到接收缓冲

15、器的内容。例题8-1 硬件模块实现SPI。引脚设置为P0.0=SCK、P0.2=MOSI、P0.3=RCK,驱动74HC595使4位共阳数码管显示。#include #define uchar unsigned charunsigned char code smyin = 0xFC,0x60,0xDA, 0xF2, 0x66,0xB6,0xBD,0x70,0xFD,0xF6, 0xDD,0x3D,0x9C,0x7A,0x9D,0x8D; /共阴数码管译码数组 /先发送高位uchar code wei = 0x7F,0xBF,0xDF,0xEF; /低电平有效位扫描数组。先送高位sbit RCK

16、 = P03; uchar xs4; /数码管显示缓存数组/*void SPI_Write(uchar SPIdata) /SPI写函数 uchar j; for(j=0; j=250; j+) ;SPIF = 0; SPI0DAT = SPIdata; while (!SPIF); /等待数据发送完毕SPIF=0; /*void main (void) uchar i; /*PCA0MD &= 0x40; /禁止看门狗/*OSCICN = 0x81; /使用内部振荡器;4分频/*XBR0 = 0x02; /选择SPI XBR1 = 0x40; /使能交叉开关和弱上拉P0MDOUT = 0x0

17、D; /设P0.0=SCK、P0.2=MOSI、P0.3=RCK/*SPI0CFG = 0x70; /spI初始化 SPI0CN = 0x01;SPI0CKR = 0x0E;/*while(1)xs0=0; /数据缓冲区xs1=1;xs2=2;xs3=3;SPI_Write(weii) ; /调用SPI写函数发送位码SPI_Write(smyinxsi); /调用SPI写函数发送数据RCK= 0; /74HC595锁存数据RCK = 1;i+;if(i=4)i=0; 8.2 异步通信接口异步通信接口UART0UART0是一个异步、全双工串口,与51单片机串行口的方式1和方式3兼容。UART0具

18、有增强的波特率发生器电路,有多个时钟源可用于产生标准波特率。UART0有两个相关的特殊功能寄存器:串行控制寄存器(SCON0)和串行数据缓冲器(SBUF0)。如果允许UART0中断,则每次发送完成(SCON0中的TI0位置1)或接收到数据字节(SCON0中的RI0位置1)时将产生一个中断。中断标志必须用软件清除。 1. 波特率发生器 UART0波特率由定时器1工作在8位自动重装方式产生。定时器1应配置为方式2,即8位自动重装方式。定时器1的重装值应设置为使其溢出频率为所期望的波特率频率的两倍。定时器1的时钟可以在SYSCLK、SYSCLK/4、SYSCLK/12、SYSCLK/48、外部振荡器

19、时钟/8和外部输入T1中选择。UART0的波特率由下式确定: 这里T1CLK是定时器1的时钟频率,T1H是定时器1的高字节(重装值) 2 工作方式UART0的工作方式。可通过S0MODE位(SCON0.7)选择。3. 8位UART方式在8位UART方式,每个数据字节共使用10位:一个起始位、8个数据位(LSB在先)和一个停止位。在接收时,8个数据位存入SBUF0,停止位进入RB80(SCON0.2)。当软件向SBUF0寄存器写入一个字节时开始数据发送。在发送结束时(停止位开始)发送中断标志TI0(SCON0.1)置1。在接收允许位REN0(SCON0.4)置1后,数据接收可以在任何时刻开始。收

20、到停止位后,如果RI0为0,MCE0为1,停止位为1时,则8位数据字节将装入到接收寄存器SBUF0。停止位存入RB80,RI0标志置位。如果允许中断,在TI0或RI0置位时将产生一个中断。在发生接收数据溢出的情况下,先接收到的8位数据锁存到SBUF0,而丢弃后面的溢出数据。4. 9位UART方式在9位UART方式,每个数据字节共使用11位:一个起始位、8个数据位(LSB在先)、一个可编程的第九位和一个停止位。发送数据第九位由TB80(SCON0.3)中的值决定,由用户赋值,既可以赋值为PSW中的奇偶位P(用于错误检测),也可用于多处理器通信。在接收时,第九数据位进入RB80(SCON0.2),

21、忽略停止位。当执行一条向SBUF0寄存器写一个数据字节的指令时开始数据发送。在发送结束时(停止位开始)发送中断标志TI0置1。在接收允许位REN0置1后,数据接收可以在任何时刻开始。收到停止位后,如果RI0为0,MCE0为1,第九位为1(当MCE0为逻辑0时,第九位数据的状态并不重要)。则8位数据存入SBUF0,第九位存入RB80,RI0标志置位。如果允许中断,在TI0或RI0置位时将产生一个中断。5. 多机通信9位UART方式支持一主多从单片机之间的多机通信。当主机要发送数据给一个或多个从机时,主机先发送一个用于选择目标的地址字节。地址字节与数据字节的区别是:地址字节的第9位为1;数据字节的

22、第9位总是为0。如果从机的MCE0位(SCON.5)置1,则只有当UART接收到的第九位为1(RB80 = 1)并收到有效的停止位后UART才会产生中断。在UART的中断处理程序中,软件将接收到的地址与从机自身的8位地址进行比较。如果地址匹配,从机将清除它的MCE0位以允许后面接收数据字节时产生中断。未寻址的从机仍保持其MCE0位为1,在收到后续的数据字节时不产生中断,从而忽略收到的数据。一旦接收完整个消息,已寻址的从机将它的MCE0 位重新置1以忽略所有的数据传输,直到它收到下一个地址字节。还可以将多个地址分配给一个从机,或将一个地址分配给多个从机从而允许同时向多个从机“广播”发送。主机可以

23、配置为接收所有的传输数据,或通过实现某种协议使主/从角色能临时变换以允许原来的主机和从机之间进行半双工通信。 6. UART相关的特殊功能寄存器UART0控制寄存器 SCON0(复位值0100 0000,SFR地址0x98,可位寻址): R/WRR/WR/WR/WR/WR/WR/WD7D6D5D4D3D2D1D0S0MODE-MCE0REN0TB80RB80TI0RI0(位7) S0MODE:串行口工作方式选择位。0:方式0:波特率可编程的8位UART。1:方式1:波特率可编程的9位UART。(位6)未使用。读1,写忽略。(位5)MCE0:多处理器通信允许位。当S0MODE=0时,检查有效停止

24、位。0:忽略停止位的逻辑电平。1:只有当停止位为逻辑1时RI0激活。当S0MODE=1时,多处理器通信允许。0:忽略第9位。1:只有当第9位为逻辑1时RI0才置位并产生中断。(位4) REN0:接收允许位,该位允许/禁止UART接收器。0:UART0接收禁止。1:UART0接收允许。(位3) TB80:第9发送位,该位赋值给9位UART方式的第9位。在8位UART方式中未用。可置1或清0。(位2) RB80:第9接收位。在8位方式,RB80接收停止位的值。在9位方式,该位接收第9位的值。(位1) TI0:发送中断标志位。(位0) RI0:接收中断标志位。 当UART0接收到一个字节数据时该位硬

25、件置1(在停止位后)。当允许UART0中断时,置1该位将会使CPU运行UART0中断服务程序。该位用软件清0。 当UART0发送完一个字节数据后该位硬件置1。当允许UART0中断时,置1该位将导致CPU转到UART0中断服务程序。该位必须用软件清0。UART0串行数据缓冲寄存器SBUF0(复位值0000 0000,SFR地址0x99):(位7-0) SBUF0.7:0: UART0数据缓冲器位7-0(MSB-LSB)。具有相同地址的发送移位寄存器和接收锁存寄存器。写数据到SBUF0时,数据进入发送移位寄存器后启动发送过程。读SBUF0时返回接收寄存器的内容。 例题8-2 C8051F330的U

26、ART采用查询方式与PC机串口助手通信例。该例UART采用查询接收,连接在P1.0的按键设置发送数据。连接在P1.1的按键控制发送数字到PC机上运行的串口助手;PC机串口助手发送的数据被接收后,在数码管上显示。UART设置为8位方式,波特率为9600。该例源程序如下。#include #define uchar unsigned char#define SYSCLK 24500000 /系统时钟24.5MHz#define BAUDRATE 9600 /波特率unsigned char code smyin = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0

27、x7f,0x6f, 0x77,0x7c,0x39,0x5e,0x79,0x71,0x40; /共阴数码管译码数组uchar code wei = 0xfe,0xfd,0xfb,0xf7; /低电平有效位扫描数组sbit CLK = P15; /时钟信号sbit DOUT = P16; /串行数据输入sbit LATCH = P17; /74HC595的锁存信号uchar xs4; /显示缓存数组sbit key0 = P10; sbit key1 = P11; void LED(uchar X) /软件SPI发送函数uchar i;for(i=8;i=1;i-)if (X&0x01) DOUT

28、=1; else DOUT=0; X=1;CLK = 0;CLK = 1;void main (void) uchar i,n,rx;unsigned int m; PCA0MD &= 0x40; /禁止看门狗/*OSCICN = 0x83; /使用内部高频振荡器; /*XBR0 = 0x01; XBR1 = 0x40; /使能交叉开关和弱上拉/*P1MDOUT |= 0xE0; /设P1.5、P1.6、P1.7为输出端口P0MDOUT = 0x10;/*SCON0 = 0x10; / SCON0: 设置为8位方式,忽略停止位,RX使能,第9位是零,清除RI0和TI0/*if (SYSCLK/

29、BAUDRATE/2/256 1) /如下为时钟选择语句,用于设置波特率TH1 = -(SYSCLK/BAUDRATE/2);CKCON &= 0x0B; /设置定时器1使用系统时钟CKCON |= 0x08;else if (SYSCLK/BAUDRATE/2/256 4) TH1 = -(SYSCLK/BAUDRATE/2/4);CKCON &= 0x0B; /T1M = 0; SCA1:0 = 01,设置SYSCLK/4为定时器1时钟 CKCON |= 0x01;else if (SYSCLK/BAUDRATE/2/256 12)TH1 = -(SYSCLK/BAUDRATE/2/12)

30、;CKCON &= 0x0B; /T1M = 0; SCA1:0 = 00,设置SYSCLK/12为定时器1时钟else TH1 = -(SYSCLK/BAUDRATE/2/48);CKCON &= 0x0B; /T1M = 0; SCA1:0 = 10,设置SYSCLK/48为定时器1时钟CKCON |= 0x02;/*TL1 = TH1; /初始化定时器1TMOD &= 0xf0; /设置TMOD: 8位重装模式TMOD |= 0x20; TR1 = 1; /启动定时器1TI0 = 1; /准备好发送/*while(1)if(key0=0) for(m=0;m=16) n=0; while

31、(!key0); for(m=0;m3000;m+);if(key1=0) for(m=0;m3000;m+); if (key1=0) if(TI0=1) /如果TI0为1SBUF0=n; /发送数据nTI0=0; while(!key1); for(m=0;m3000;m+);if(RI0) /查询方式读取来自PC机的数据rx = SBUF0; RI0 = 0; /清除RI1标志位xs1=rx/10; xs0=rx%10;xs3=n/10;xs2=n%10;LED(weii); /发数码管位码LED(smyinxsi); /发数码管段码LATCH = 0;LATCH = 1;i+;if(i

32、=4)i=0;8.3 SMBus接口接口SMBus I/O接口是一个双线的双向串行总线,与I2C串行总线兼容。1. SMBus接口电路图8-8所示的是一个典型的SMBus接线图。2. SMBus操作(1)数据传输类型有两种数据传输类型:主发送器写数据到所寻址的从接收器,或是从已寻址的从发送器读数据。这两种数据传输都由主器件启动,主器件还在SCL上提供串行时钟。SMBus接口可以工作在主方式或从方式,总线上可以有多个主器件。SMBus不需要在指定某个器件作为主器件;任何一个发送起始条件(START)和从器件地址的器件就成为该次数据传输的主器件。(2)总线仲裁一个主器件只能在总线空闲时启动一次传输

33、。在一个停止条件之后或SCL和SDA保持高电平已经超过了指定时间,则认为总线是空闲的。两个或多个主器件可能在同一时刻产生起始条件与数据,直到其中一个主器件发送高电平而其它主器件发送低电平,由于总线是漏极开路的,因此SDA拉为低电平,发送高电平的主器件将检测到SDA上的低电平而放弃总线。获得总线的器件继续其数据传输过程,而未获得总线的器件成为从器件。该仲裁机制是非破坏性的:总会有一个器件获得总线,不会发生数据丢失。(3)时钟低电平扩展SMBus允许不同速度的器件共存于同一个总线上。低速从器件可以保持SCL为低电平以扩展时钟低电平时间,这实际上相当于降低了串行时钟频率。如果SCL线总线上的从器件保

34、持为低电平,则不能再进行通信,并且主器件也不能强制SCL为高电平来纠正这种错误情况。(4)SMBus空闲如果一个器件保持SCL和SDA线为高电平的时间超过50微秒,则总线处于空闲状态。当SMB0CF中的SMBFTE位置1时,如果SCL和SDA保持高电平的时间超过10个SMBus时钟周期,则视总线为空闲。3. SMBus的使用SMBus接口中硬件实现的操作如下。以字节为单位的串行数据传输;SCL时钟信号产生及SDA数据同步;超时/总线错误识别(在配置寄存器SMB0CF中定义);START/STOP定时、检测和产生;总线仲裁;中断产生;状态信息。每次数据字节或从地址传输都产生的SMBus中断。 4

35、. SMBus相关的特殊功能寄存器(1)SMBus配置寄存器SMBus配置寄存器 SMB0CF:(复位值0000 0000,SFR地址0xC1): R/WR/WRR/WR/WR/WR/WR/WD7D6D5D4D3D2D1D0ENSMBINHBUSYEXTHOLDSMBTOESMBFTESMBCS1SMBCS0(位7) ENSMB:SMBus使能位。当使能时,SMBus接口一直监视SDA和SCL引脚。0:禁止SMBus接口。1:使能SMBus接口。(位6) INH:SMBus从禁止位。当该位设置为逻辑1时,SMBus接口不产生从事件中断。这相当于将SMBus从器件移出总线。主方式中断不受影响。0

36、:SMBus 从方式使能。1:SMBus 从方式禁止。(位5) BUSY:SMBus忙状态标志位。当正在进行一次传输时,该位由硬件置1。当检测到停止条件或空闲超时,该位清0。(位4) EXTHOLD:SMBus 建立和保持时间扩展允许位。0:禁止SDA建立和保持时间扩展。1:允许SDA建立和保持时间扩展(位3) SMBTOE:SMBus SCL超时检测允许位。当该位置1时,SMBus接口在SCL为高电平时,强制重装定时器3,并允许定时器3在SCL为低电平时开始计数。应将定时器3编程为每25ms产生一次中断,并使用定时器 中断服务程序对SMBus复位。(位2) SMBFTE:SMBus 空闲超时

37、检测允许位。当该位置1时,如果SCL和SDA保持高电平的时间超过10个SMBus 时钟周期,将视总线为空闲。(位1-0) SMBCS1-SMBCS0:SMBus时钟源选择位。这两位选择用于产生SMBus位速率的时钟源。SMBCS1、SMBCS0位与时钟源之间的关系见表8-3。SMBCS1SMBCS0SMBus时钟源00定时器0溢出01定时器1溢出10定时器2高字节溢出11定时器2低字节溢出最小SCL时钟的高和低电平时间计算如下:这里THighMin为最小SCL高电平时间,TLowMin为最小SCL低电平时间,fClockSourceOverflow为时钟源的溢出频率。典型的SMBus位速率为f

38、ClockSourceOverflow/3。SMBus控制寄存器 SMB0CN(复位值0000 0000,SFR地址0xC0,可位寻址): RRRR/WRRR/WR/WD7D6D5D4D3D2D1D0MASTERTXMODESTASTOACKRQARBLOSTACKSI(位7) MASTER:SMBus 主/从标志位。该只读位指示SMBus是否工作在主方式。0:SMBus工作在从方式。1:SMBus工作在主方式。(位6) TXMODE:SMBus发送方式标志位。0:SMBus工作在接收器方式。1:SMBus工作在发送器方式。(位5) STA:SMBus起始标志当写入数据时:0:不产生起始条件。

39、1:当工作在主方式时,若总线空闭,则发送出一个起始条件(如果总线不空闲,在收到停止条件或检测到超时后再发送起始条件)。如果STA软件置1,在下一个ACK 周期之后将产生一个重复起始条件。当读出数据时:0:未检测到起始条件或重复起始条件。1:检测到起始条件或重复起始条件。(位4) STO:SMBus 停止标志当写入数据时:0:不发送停止条件。1:将STO置为逻辑1将导致发送一个停止条件(在下一个ACK 周期之后)。在产生停止条件之后,硬件将STO清为逻辑0。如果STA和STO都置1,则发送一个停止条件后再发送一个起始条件。当读出数据时:0:未检测到停止条件。1:检测到停止条件(在从方式)或挂起(

40、在主方式)。(3)数据寄存器SMBus数据寄存器SMB0DAT保存要发送或刚接收的串行数据字节。SMB0DAT中的数据总是先移出高位。SMBus数据寄存器 SMB0DAT(复位值0000 0000,SFR地址0xC2):(位7-0) SMB0DAT:SMBus数据位。SMB0DAT寄存器保存要发送到SMBus串行接口上的一个数据字节,或刚从SMBus串行接口接收到的一个字节。一旦SI串行中断标志位置1,CPU即可读或写该寄存器。4. SMBus传输方式SMBus接口将工作在下述4种方式之一:主发送器、主接收器、从发送器或从接收器。(1)主发送器方式在主发送器方式下,主机在SDA上发送串行数据,

41、在SCL上输出串行时钟,从机接收数据。(2)主接收器方式主机在SDA上接收串行数据,在SCL上输出串行时钟。从机发送数据。 (3)从接收器方式)从接收器方式从机在SDA上接收串行数据,在SCL上接收串行时钟,主机发送数据。 (4)从发送器方式从机在SDA上发送串行数据,在SCL上接收串行时钟,主机接收数据。 (位3) ACKRQ:SMBus确认请求位。当SMBus接收到一个字节并需要向ACK位写ACK响应值时,该只读位置1。(位2) ARBLOST:SMBus竞争失败标志位。当SMBus作为发送器在总线竞争中失败时该只读位置1。在从方式时,竞争失败表示发生了总线错误条件。(位1) ACK:SMBus确认标志位该位定义要发出的ACK电平和记录接收的ACK电平。应在每接收到一个字节后写ACK 位(当ACKRQ = 1时),或在发送一个字节后读ACK位。0:接收到“非确认”(在发送器方式)或将发出“非确认”(在接收器方式)。1:接收到“确认”(在发送器方式)或将发出“确认”(在接收器方式)。(位0) SI:SMBus中断标志位。SI只能用软件清除。当SI置1时,SCL保持为低电平,总线状态保持。

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

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

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