版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章STM8SMCU串行通信
8.1串行通信的概念
8.2UART串行通信接口
8.3RS232C串行接口标准及应用
8.4RS422/RS485总线8.5串行外设总线接口(SPI)
8.1串行通信的概念
CPU与外设之间信息交换的过程称为通信。根据CPU与外设之间数据线连接、数据发送方式的不同,可将通信分为并行通信和串行通信两种基本方式。在并行通信方式中,数据各位同时传送,如图8-1(a)所示。并行通信的特点是速度快,但需要的传输线多,多用于同一个设备内不同器件或模块之间的数据传输,不适合作长距离数据传输。在串行通信方式中,借助串行移位寄存器将多位数据按位逐一传送,如图8-1(b)所示。串行通信的优点是所需传输线少,适合远距离传输;缺点是速度慢。假设并行传送8位二进制数所需时间为T,在发送速率相同的情况下,串行传输时间至少需要8T。而在实用的串行通信系统中,还需要在数据位前、后分别插入起始位和停止位,以保证数据可靠地接收,因此实际的传输时间大于8T。图8-1基本通信方式8.1.1串行通信的种类根据数据传输方式的不同,可将串行通信分为两种:同步通信和异步通信。同步通信是一种数据连续传输的串行通信方式。同步通信时,发送方把需要发送的多个字节数据、校验信息连接起来,形成数据块。发送方发送时只需在数据块前插入1~2个特殊的同步字符,然后按特定速率逐位输出(发送)数据块内的每一个数据位。接收方在接收到特定的同步字符后,也按相同速率接收数据块内的各位数据。显然,在这种通信方式中,数据块内各字节数据之间没有间隙,传输效率高,但发送、接收双方必须保持同步(使用同一个时钟信号实现)。因此,同步通信设备复杂(发送方能自动插入同步字符,接收方能自动检测出同步字符,且发送、接收时钟相同,即除了数据线、地线外,还需要时钟信号线),成本较高,多用在高速数字通信系统中。典型的同步通信数据帧格式如图8-2所示。图8-2同步通信数据帧格式异步通信的特点是每次只传送一个字符,每个字符由起始位(规定为0电平)、数据位、奇偶校验位、停止位(规定为1电平)组成。典型的异步通信数据帧格式如图8-3所示。图8-3异步通信数据帧格式可见,异步通信与同步通信并没有本质上的区别,只是在异步通信中数据块的长度短(一般为一个字节),收发双方容易实现同步,但各数据块之间不连续(即插入了起始位、停止止位),因此效率低,传输速度较慢。异步通信过程可概述如下:对于异步通信的发送方来说,发送时先输出低电平的起始位,然后按特定速率发送数据位(包括奇偶校验位),当最后一位数据(采用奇偶校验的异步通信,最后一个数据位往往是奇偶校验位)发送完毕后,发送一个高电平的停止位,这样就完成了一帧数据的发送过程。如果发送方不再需要发送新数据或尚未准备好下一帧数据时,就将数据线置为高电平状态。异步通信的接收方往往以16倍的发送速率检测传输线上的电平状态,当发现传输线电平由高变低时(起始位标志),就认为有数据传入,进入接收状态,然后以相同速率不断地检测传输线的电平状态,接收随后送来的数据位、奇偶校验位和停止位。为提高通信的可靠性,在异步串行通信中,接收方多采用“3中取2”方式确认收到的信息位是“0”码还是“1”码。也就是说,在异步通信方式中,发送方通过控制数据线的电平状态来完成数据的发送;接收方通过检测数据线上的电平状态确认是否有数据传入以及接收到的数据位是0还是1,只要发送速率和接收检测速率相同,就能准确接收,发送、接收设备可使用各自的时钟源完成数据的发送和接收,无须使用同一个时钟信号。因此,异步串行通信所需传输线最少,一根数据线和一根地线,就能实现数据发送与接收,在单片机控制系统中得到了广泛应用。8.1.2波特率在串行通信系统中常用波特率来衡量通信的快慢,其含义是每秒中传送的二进制数码的位数,单位是位/秒(b/s或Kb/s),简称“波特”。例如,两个异步串行通信设备之间每秒钟传送的信息量是240字节,如果一帧数据包含10位(1个起始位、8个数据位和1个停止位),则发送、接收波特率为240 × 10 = 2400(b/s) = 2400(波特)一般异步通信波特率为110~9600波特,而同步通信波特率在56K波特以上。在选择通信波特率时,不要盲目追高,以满足数据传输要求为原则,原因是波特率越高,对发送、接收时钟信号频率的一致性要求就越高。8.1.3串行通信数据传输方向根据串行通信数据传输方向,可将串行通信系统分为单工方式、半双工方式和全双工方式,如图8-4所示。图8-4数据传输方式两个串行通信设备之间只有一根数据线,一方发送,另一方接收,就形成了“单工”通信方式,即数据只能由发送设备单向传输到接收设备,如图8-4(a)所示。如果两个串行通信设备之间依靠一根数据线分时收、发数据(即发送时,不接收;接收时,不发送),就构成了“半双工”通信方式。在这种方式中,在同一传输线上要完成数据的双向传输,因此通信双方不可能同时既发送,又接收,任何时候只能是一方发送,另一方接收,如图8-4(b)所示。如果两个串行通信设备之间能同时接收和发送,就构成了“全双工”通信方式。由于允许两个通信设备同时发送、接收,就需要两根数据线:A设备的发送端接B设备的接收端;B设备的发送端接A设备的接收端,如图8-4(c)所示。8.1.4串行通信接口的种类根据串行通信格式及约定(如同步方式、通信速率、信号电平等)不同,派生出不同的串行通信接口标准,如常见的RS232、RS422、RS485、IEEE1394、I2C、SPI(同步通信)、USB(通用串行总线接口)、CAN总线接口等。下面将详细介绍STM8S芯片UART接口的功能及基本使用规则。8.2UART串行通信接口
STM8S提供了3个通用异步串行通信接口UART(UniversalAsynchronousReceiverTransmitter),分别编号为UART1、UART2、UART3,各UART接口功能略有差异,如表8-1所示。该系列MCU并非所有的型号都具有UART1~UART3串行接口,实际上STM8S207、STM8S208芯片有UART1及UART3两个串行接口,STM8S105芯片仅有UART2串行接口,而STM8S103芯片仅有UART1串行接口。表8-1STM8S系列MCU芯片UART的功能由于UART1、UART2、UART3的功能不同,因此其内部结构也就略有区别,其中UART1内部结构如图8-5所示;UART3的内部结构如图8-6所示。在全双工通信系统中,数据寄存器UART_DR往往对应物理上完全独立的发送数据寄存器TDR(只写)与接收寄存器RDR(只读)。对UART_DR寄存器进行写操作时,数据写入TDR寄存器;对UART_DR寄存器进行读操作时,数据来源是RDR寄存器。图8-5UART1接口内部结构图8-6UART3的内部结构8.2.1UART串行通信波特率设置在异步串行通信方式中,为保证收、发双方通信的可靠性,发送波特率与接收波特率应严格相同,否则会因收发不同步造成接收不正确。不过,在异步串行通信方式中,信息帧长度较短(10位或11位),只要收发双方波特率误差不大,接收方依然能正确接收发送方发送的信息。实验表明,波特率越高,收发双方波特率误差允许范围就越小。
STM8SMCU芯片UART接口部件的发送、接收波特率发生器由主时钟fMASTER经16位分频器UART_DIV分频后获得,波特率为(8-1)在使用过程中,可根据主时钟fMASTER(单位为Hz)、期望的波特率(b/s),通过式(8-1)计算出分频器UART_DIV的值。值得注意的是:
(1) STM8S要求UART_DIV的值不能小于16。
(2) UART_DIV寄存器由波特率寄存器UART_BRR1[11:4]、UART_BRR2[15:12;3:0] 组成,装入时必须先装入UART_BRR2,后装入UART_BRR1。例如,当主时钟频率为8 MHz,目标波特率为9600b/s时,得即UART_BRR1为34H,UART_BRR2为01H。可见,在STM8S应用系统中,当主时钟频率fMASTER为整数时,标准波特率(如4800b/s、9600b/s、19200b/s等)对应的分频值往往不是整数,即实际波特率与标准波特率存在一定的偏差。当波特率分频器分频值为833时,实际波特率为9603.8b/s,相对误差为当主时钟频率由频率精度高、稳定性好的HSE产生时,如果波特率不大于38.4Kb/s,则误差稍大一点也能正常通信;当主时钟频率由HSI产生时,则波特率误差要尽可能小一些,除非波特率很低,如不超过4800b/s,否则会影响通信的可靠性。
(3) UART_BRR1不能为00H,否则波特率时钟将被关闭而不能收发。因此,当选定的波特率对应的分频值刚好使UART_BRR1为0时,必须重新选定另一波特率(或更改主时钟fMASTER),使UART_BRR1 ≠ 0。8.2.2UART串行通信信息帧格式
UART串行通信信息帧格式如图8-7所示。对于9位字长数据帧(DataFrame)来说,由低电平的起始位(StartBit)、b0~b8(9个数据位)、高电平的停止位(StopBit)组成。而8位字长数据帧与9位字长数据帧相似,只是数据位长度为8位。在异步串行通信方式中,起始位(长度固定为1位)总是为低电平,接收方收到低电平的起始位后,立即复位接收波特率发生器,并按指定速率接收随后的数据位与停止位;停止位总是为高电平,停止位长度可编程选择(1位、1.5位或2位);数据位中的最高位(9位字长中的b8或8位字长中的b7)可能是奇偶校验位,在多机通信方式中也可能是地址/数据的标识位。空闲帧(IdleFrame)长度与数据帧的长度相同,只是全部为高电平(其起始位也是高电平)。断开帧(BreakFrame)长度也与数据帧的相同,只是全部为低电平(其停止位也是低电平)。当由断开帧转入数据帧,UART接口会自动插入一个附加的高电平停止位。图8-7STM8SUART接口帧的种类及格式8.2.3奇偶校验选择
STM8S串行接口支持奇偶校验功能,由AURT_CR1的PCEN(奇偶校验允许/禁止)、PS(奇/偶校验方式)选择位定义。发送数据时,UART自动算出待发送数据的奇偶性(数据位异或运算),并将奇偶标志填入发送数据的MSB位,即借用MSB位作为奇偶标志位,如表8-2所示。表8-2数据帧格式接收数据时,UART能自动判别奇偶校验是否正确,当奇偶校验错误时,状态寄存器UART_SR的PE位置1(表示奇偶错误),即STM8S串行接口能自动判别接收数据奇偶校验是否正确。8.2.4数据发送/接收过程
1.发送过程与发送中断控制当发送数据功能处于禁止状态时,TX引脚与UART口处于断开状态,引脚电平由相应的GPIO定义。在完成了UART口初始化后,将发送允许控制位TEN(UART_CR2[3])置1,UART接口发送功能即处于使能状态,TX引脚与UART接口部件连通,UART部件在UART_TX引脚输出空闲帧,对数据寄存器UART_DR进行写操作,将触发串行发送进程,发送结束后,TC(UART_SR[6])(发送结束)标志有效。不过,STM8S的UART接口具有1个字节的发送缓冲区,在当前字节发送结束前,如果TXE(UART_SR[7])(发送缓冲寄存器空闲)标志为1(空闲),也可以将新数据写入UART_DR。TC与TXE位指示发送缓冲器及发送状态如表8-3所示。表8-3TC/TXE位状态及含义当TC标志为1时,可通过下列方式之一进行清除:
(1)软件写“0”清除。如“BRESUART_SR,#6”指令。
(2)先读UART_SR寄存器,再对UART_DR寄存器写入。其操作指令如下:
BTJFUART_SR,#6,UART_TX_exit ; TC标志无效跳转
;发送结束标志TC有效
MOVUART_DR,A ;新数据写入UART_DR,自动清除TC标志UART_TX_exit:在理论上,可用软件查询方式判别TC、TXE标志的状态。不过UART发送速率不高,发送一个帧数据所需时间较长,例如当波特率为4800b/s时,对长度为10位的信息帧,发送时间约为2.08ms,建议用中断方式确定发送状态。STM8SUART接口发送中断逻辑如图8-8所示。图8-8STM8SUART接口发送中断逻辑图
2.接收过程与接收中断控制在完成了UART接口的初始化后,将REN位置1,UART接口部件便进入接收状态,以16倍波特率的采样速率不断检测UART_RX引脚的电平状态,以判断是否出现低电平的起始位。当一个信息帧完整地移到接收移位寄存器后,数据并行送入接收缓冲寄存器UART_DR,同时RXNE(接收有效)标志为1,表示UART_DR寄存器非空。此时,接收功能并没有停止。因此,必须在接收下一帧信息结束前,读出UART_DR寄存器中的信息(读UART_DR将自动清除RXNE标志),否则过载标志OR有效。当过载标志OR置1时,表示位于接收缓冲器UART_DR内的上一帧数据未取出,串行接收移位寄存器又接收了新信息帧。按下列顺序读数据不会造成数据的丢失,除非第3帧信息覆盖了位于串行接收移位寄存器内的第2帧信息。
MOVR10,#XXH ;预先在R10存储单元中放置一个接收数据中不可能出现的标
;志信息
BTJFUARTx_SR,#3,UART_RX_NEXT1;过载标志OR有效
LDA,UARTx_DR ;读出上一个帧数据,OR自动清除
BTJFUART_SRx,#5,UART_RX_NEXT1; RXNE标志有效,立即读取
MOVR10,UARTx_DR ;立即读当前帧数据,防止第3帧数据覆盖串行接收移位寄存
;器内的第2帧信息UART_RX_NEXT1:在数据接收过程中,如果线路噪声大,在“3中取2”发现采样数据不是111(接收1码时)或000(接收0码时),则噪声标志NF置1(与RXNE标志同时有效)。在噪声不是很大的情况下,NF置1,UART_DR寄存器内的信息可能还是真实的,只是线路存在噪声。读状态寄存器UART_SR与UART_DR寄存器将自动清除NF标志。在数据接收过程中,因噪声、线路故障或发送方意外瘫痪,造成在指定时间内未接收到有效停止位时,帧错误标志FE置1。此时,接收到的数据可靠性较低,一般要丢弃。在UART通信中,如果允许奇偶校验,在接收过程中发现奇偶校验错误,则PE标志置1。等待RXNE标志为1后,读状态寄存器UART_SR与UART_DR寄存器清除PE标志(奇偶错误属于严重错误,要丢弃接收数据)。一般采用中断方式判别UART接口接收数据是否有效。STM8SUART接口接收中断控制逻辑如图8-9所示。图8-9STM8SUART接口接收中断控制逻辑为提高UART接口接收数据的可靠性,在接收中断服务程序中,应优先判别是否出现了FE、PE等严重错误,再判别是否存在NF标志。接收中断服务程序的结构如下所示:interruptUARTx_RX_procUARTx_RX_proc.L; *******奇偶校验错误判别******(如果允许奇偶校验)MOVR12,UARTx_SR ;先读串行接口状态寄存器到RAM单元中(其中许多位
;具有读清除特性)BTJFR12,#0,UART_RX_NEXT1;奇偶标志PE为1,属严重错误UARTx_RX_NEXT11:BTJFUARTx_SR,#5,UART_RX_NEXT11 ;等待RXNE标志为1LDA,UARTx_DR ;读数据寄存器,清除PE标志JPFUART_RX_EEEOR ;丢弃接收数据,进入错误处理,如要求对方重发UART_RX_NEXT1.L; *******帧错误判别******(必须判别) BTJFR12,#1,UART_RX_NEXT2;帧错误标志FE为1,属严重错误LDA,UARTx_DR ;读数据寄存器,清除FE标志JPFUART_RX_EEEOR ;丢弃接收数据,进入错误处理,如要求对方重发UART_RX_NEXT2.L; *******过载(OR)判别******(接收中断优先级较低,且波特率较高时需要判别过载) MOVR11,#0AAH ;预先在R11存储单元中放置一个接收数据中不可能出现的标志信息
BTJFR12,#3,UART_RX_NEXT3;过载标志OR为1,要立即读取数据,避免出现覆盖丢失MOVR10,UARTx_DR ;读数据寄存器,清除OR标志
BTJFR12,#5,UART_RX_NEXT5 ; RXNE标志为1,应立即读取,避免数据覆盖
MOVR11,UARTx_DR ;读数据寄存器,清除RXNE标志JRTUART_RX_NEXT5UART_RX_NEXT3.L ; *******如果对可靠性要求很高,可噪声标志(NF)判别******BTJFR12,#2,UART_RX_NEXT4LDA,UARTx_DR ;读数据寄存器,清除NF标志JPFUART_RX_EEEOR ;如果对可靠性要求很高,就转入错误处理。UART_RX_NEXT4.L ;没有错误,读数据,清除RXNE标志
MOVR10,UARTx_DRUART_RX_NEXT5.L ;数据处理(略)
LDA,R11 CPA,#0AAH JREQUART_RX_EXIT1 ;不等,表明曾经出现过过载现象
MOVR10,R11 ;把数据放入R10中
MOVR11,#0AAH ;把标志置为无效
JPFUART_RX_NEXT5UART_RX_EXIT1.L ;在退出前,如果波特率较高,且接收中断优先级较低,可再判别一次接收结束标志
MOVR12,UARTx_SR BTJFR12,#5,UART_RX_EXIT2
;接收结束标志又有效,再处理
JPFUARTx_RX_procUART_RX_EXIT2.L IRET IRET IRET IRET IRET可以看出,充分利用奇偶校验、帧错误侦测等可靠性检测手段后,UART通信可靠性较高。在空闲期间RX引脚受到负脉冲干扰时,UART误判为起始位,将按指定波特率接收,但奇偶校验不可能通过。在正常接收期间受到干扰,奇偶校验不正确的可能性就更大。8.2.5多机通信在某些应用系统中,常需要多个单片机芯片协同工作,这就涉及多机通信问题。由STM8S构成的多机通信系统如图8-10所示。图8-10UART多机通信系统硬件连接示意图
STM8S系列MCU通用串行总线接口UART配置了支持多机通信功能的选择性接收控制,如表8-4所示表8-4选择性接收控制位在图8-8所示的多机通信系统中,由于各从机发送引脚TX通过“线与”方式与主机RX引脚相连,因此在多机通信系统中,从机TX引脚必须初始化为OD输出或带上拉输入方式,使从机TEN为0时(TX引脚与UART接口发送端断开),保证TX引脚“线与”功能。从机之间不能通信,而主机可与任意一个从机通信。为避免总线冲突,主机通过查询方式与从机通信,从机不能主动发送数据。在多从机通信系统中,各从机可同时处于接收状态,但任何时候最多只有一台从机处于发送状态。为减小功耗,在非查询期间,主机可进入禁用模式(即使UARTD位为1),而从机不能进入禁用模式。在STM8S多机通信系统中,可以选择8位数据(M=0),也可以选择9位数据(M=1)。不论信息帧长度是8位还是9位,在多机通信方式中,也可以选择奇偶校验功能,如表8-2所示。在多机通信方式中,主机与从机之间通信过程为:先发送目标从机地址(特征是数据最高位MSB为1),再发送数据信息(特征是数据最高位MSB为0)。
1.唤醒控制位WAKE为0时的多机通信系统
STM8S提供了总线空闲检测功能。当WAKE为0时,可以利用RWU位完成多机通信控制,其过程如下:
(1)开始时从机的RWU位为0(处于正常接收状态)。
(2)每次通信前,主机先延迟一个空闲帧以上时间,使各从机被唤醒(当WAKE为0、RWU为1时,空闲帧可以唤醒处于静默状态的UART接收功能)。
(3)主机发送目标从机地址(在这种方式中,从机地址由用户设定,与UART_CR4位无关)。
(4)从机接收了从机地址信息后,核对是否属于本机地址。不是本机地址,则将RWU位置1,强迫从机进入静默状态(收到空闲帧,即总线空闲时被唤醒);是本机地址则接收、处理地址帧,令TEN为1,允许发送,向主机发送应答信号(目的是使主机确认该从机是否存在),从机地址接收有效标志置1,接收主机随后送来的数据信息。当从机接收了最后一个数据信息帧后,清除从机地址接收有效标志;发送结束后,清除TEN位。
由于空闲帧可以唤醒处于静默状态的UART串行接口,主机发送两信息帧的间隔可能会超出一帧间隔,即两信息帧之间从机可能被唤醒,因此在从机中必须设置从机地址接收有效标志位。在唤醒后接收到数据信息时,先检查地址接收有效标志是否存在,否则不处理,并进入静默状态。
2.唤醒控制位WAKE为1时的多机通信系统通过AURT_CR4寄存器设置从机地址(最多支持16个从机),将从机WAKE置1,使从机具有选择性接收——仅接收与自己地址编码相同的地址信息(数据最高位为1)。
1)从机个数在16以内的多机通信系统开始时主机发送目标从机地址信息(无奇偶校验时,MSB位为1;有奇偶校验时,MSB-1位为1),此时所有从机均自动接收并与自己的地址比较。匹配时,UART退出静默模式,自动清除RWU位,接收有效标志RXNE(事先清除了RWU位)置1(注意目标从机接收了地址信息帧,需要处理),从机可以接收随后送来的数据信息(无奇偶校验时,MSB = 0;有奇偶校验时,MSB - 1 = 0)。通信结束后,通过手工方式将从机的RWU(接收器接收控制)位置1,强迫对应从机进入静默模式。不匹配时,对应从机的RWU(接收器接收控制)位被强迫置1,从机进入静默模式,不接收任何信息。在16从机模式下,唤醒控制位WAKE为1时的从机UART接收流程如图8-11所示。
2)从机个数在16以上的多机通信系统
UART_CR4寄存器的从机地址AD[3:0] 只有4位,最多可以选择16个从机。当从机个数在16个以上时,可以将从机分组,每组最多从机数由M(字长)、PCEN(奇偶校验允许)位定义,如表8-5所示。表8-5每组从机数及信息帧格式
其中,x为奇偶校验信息;低4位(a3~a0)为组编号;nn(b5~b4)、nnn(b6~b4)、nnnn(b7~b4)为组内从机编号。当接收到地址信息时,同一组内的所有从机(低4位b3~b0相同)均被唤醒(RWU自动清0,并接收地址信息),然后通过手工方式将接收到的地址信息与本机地址比较,若不同就强制将RWU位置1。接收流程与图8-11类似,仅需增加地址信息判别与RWU置1两条指令。这种分组方式还可以实现主机以广播方式与同组内的多个从机同时通信。图8-11WAKE = 1时UART串行接口接收流程8.2.6UART同步模式
STM8S的UART1、UART2支持同步模式,即提供了同步串行时钟输出信号SCK,其目的是为了在异步通信方式中兼容串入并出的输出设备。在同步模式下,下列控制位必须清0:UART_CR3寄存器的LINEN(禁止LIN模式),UART_CR5寄存器的SCEN(禁止LIN模式下的时钟输出)、HDSEL(禁止半双工模式)、IREN(禁止红外模式)。在同步模式下,UART部件相当于SPI总线主设备,TX相当于MOSI引脚(输出)、RX相当于MISO引脚(输入),SCK输出同步时钟,可用这种方式将UART接口与SPI总线从设备相连,如图8-12所示。图8-12UART以同步方式与SPI总线从设备的连接在同步模式下,时钟极性、相位由UART_CR3寄存器的CPOL、CPHA位控制,发送最后一位时是否产生时钟由LBCL位控制,操作时序如图8-13所示。图8-13同步模式传输时序可见,同步模式依然会出现起始位、停止位,只是在起始位、停止位期间不输出时钟,相当于忽略了这个标志位的存在。为了与SPI总线协议保持一致,最后一位通常要输出时钟。在一般情况下,令LBCL为1,否则将出现传输开始前与结束后SCK时钟电平不一致的现象。例如,在CPOL、CPHA = 00情况下,空闲状态时,SCK时钟应为低电平;而当LBCL为0时,因最后一位不发送时钟,其结果是最后一位传输结束后SCK为高电平——这不符合SPI协议规定。在同步模式中选择波特率时,尽可能地使UART_DIV[3:0] 为0,使数据建立与保持时间为1/16位的发送时间;此外,尽可能地用一条指令使TEN、REN位同时为1(原因是在同步方式中,TEN为1,立即启动传输),否则接收数据可能不可靠。在同步模式中,对发送来说,TC、TXE标志依然有效;对接收来说,仅RXNE标志有效,而PE、NE、FE等标志无效。8.2.7UART串行通信的初始化步骤
1.发送器初始化
(1)UART发送功能未被激活时,UART_TX引脚电平的状态由GPIO寄存器定义。为避免接收错误或总线瘫痪,最好将UART_TX引脚初始化为高电平的互补推挽方式或OD方式(点对点通信)、OD方式或不带中断的上拉输入方式(多机通信)。
(2)初始化UART控制寄存器UART_CR1的M位,选择数据帧的长度。
(3)初始化UART控制寄存器UART_CR3的STOP位,选择停止位长度。
(4)初始化外设时钟门控寄存器(CLK_PCKENR1)的PCKEN13(控制UART2/UART3)、PCKEN12(控制UART1),将波特率发生器的输入端连接到主时钟fMASTER。
(5)按顺序初始化波特率分频器UART_BRR2、UART_BRR1。
(6)初始化UART控制寄存器UART_CR2内相关的中断控制位。理论上,既可以用查询方式感知发送结束,也可以用中断方式确定发送是否结束。不过,STM8内核CPU工作速度快,而串行发送数据的速率低,因此,最好采用中断方式。
(7)初始化UART接口的中断优先级别。
(8)将UART控制寄存器UART_CR2的TEN位置1,使能发送器。
(9)将待发送数据送数据寄存器UART_DR(对数据寄存器UART_DR进行写入时,状态寄存器UART_SR的TXE位被清0,表示数据尚未送到串行输出寄存器中,此时不能对UART_DR寄存器写入),触发发送过程。
2.接收器初始化
(1) UART_RX引脚初始化为不带中断的上拉输入方式。按发送器初始化过程(2)~(7),选择数据帧长度、停止位长度、接收波特率、中断控制位及接收中断优先级。由于接收方无法确定发送方什么时候将数据送出,因此只能用中断方式确定接收是否有效。
(2)将UART控制寄存器UART_CR2的REN位置1,UART接口部件便进入接收状态,并以16倍波特率的采样速率不断地检测UART_RX引脚的电平状态,以确定是否出现低电平的起始位。8.3RS232C串行接口标准及应用8.3.1RS232C的引脚功能完整的RS232C接口由主信道、辅助信道共22根连线组成。不过该标准对引脚的机械特性并未做出严格规定,一般采用标准的25芯D型插座(通过25芯D型插头连接),各引脚信号含义如图8-14(a)所示。
图8-14RS232C接口插座尽管辅助信道也可用于串行通信,但其速率较低很少使用。此外,当两个设备以异步方式通信时,也无须使用主信道中所有的联络信号,因此RS232C接口也可以用9芯D型插座(如微机系统中的串行接口),其各引脚信号含义如图8-14(b)所示。8.3.2RS232C串行接口标准中主信道重要信号的含义
RS232C串行接口中,标准主信道重要信号的含义如下:
(1) TXD:串行数据发送引脚,输出。
(2) RXD:串行数据接收引脚,输入。
(3) DSR:数据设备(DCE)准备就绪信号,输入,主要用于接收联络。当DSR信号有效时,表明本地的数据设备(DCE)处于就绪状态。
(4) DTR:数据终端(DTE)就绪信号,输出,用于DTE向DCE发送联络。当DTR有效时,表示DTE可以接收来自DCE的数据。
(5) RTS:发送请求,输出。当DTE需要向DCE发送数据时,向接收方(DCE)输出RTS信号。
(6) CTS:发送允许或清除发送,输入。它作为“清除发送”信号使用时,由DCE输出,当CTS有效时,DTE将终止发送(如DCE忙或有重要数据要回送DTE);而作为“允许发送”信号使用时,情况刚好相反:当接收方接收到RTS信号后进入接收状态,就绪后向请求发送方回送CTS信号,发送方检测到CTS有效后,启动发送过程。8.3.3电平转换为保证数据可靠传送,RS232C标准规定发送数据线TXD和接收数据线RXD均采用EIA电平,即传送数字“1”时,传输线上的电平在 -3~-15 V之间;传送数字“0”时,传输线上的电平在 +3~+15V之间。单片机串行接口采用正逻辑的TTL电平,这样就存在TTL电平与EIA电平之间的转换问题。例如,当单片机与PC机进行串行通信时,PC机COM1或COM2口发送引脚TXD信号是EIA电平,不能直接与单片机串行接口接收端RXD引脚相连;同样,单片机串行接口发送端TXD引脚输出信号采用正逻辑的TTL电平,也不能直接与PC机串行口COM1或COM2的RXD端相连。
RS232C与TTL之间进行电平转换的芯片主要有:传输线发送器MC1488(把TTL电平转成EIA电平)、传输线接收器MC1489(把EIA电平转成TTL电平)、MAX232以及Sipex202/232系列RS232电平转换专用芯片。传输线发送器MC1488含有4个门电路发送器,TTL电平输入,EIA电平输出;而传输线接收器MC1489也含有4个接收器,EIA电平输入,TTL电平输出。但是,由MC1488和MC1489构成的EIA与TTL电平转换器需要 ±12V双电源,而单片机应用系统中一般只有 +5 V电源,如果仅为了实现电平转换增加 ±12V电源,会使系统体积大、成本高。
MAX232以及Sipex202/232系列芯片集成度高,单 +5V电源(内置了电压倍增电路及负电源电路)工作,只需外接5个容量为0.1~1μF的小电容就可以完成两路RS232与TTL电平之间的转换,是单片机应用系统中最常用的RS232电平转换芯片,其内部结构及典型应用电路如图8-15所示。图8-15MAX232电平转换芯片内部结构及应用8.3.4RS232C的连接
RS232C接口联络信号没有严格的定义,通过RS232C接口标准通信的两个设备可能只使用其中的一部分联络信号,在极端情况下可能不用联络信号,只通过TXD、RXD和GND三根连线实现串行通信。此外,联络信号的含义和连接方式也可能因设备种类的不同而有差异。正因如此,通过RS232C接口通信的设备可能遇到不兼容的问题。下面是常见的RS232C连接方式。
(1)两个设备通过RS232C标准连接时,可能只需“发送请求”信号RTS和“发送允许”信号CTS作联络信号,实现串行通信,如图8-16所示。图8-16只有RTS、CTS联络信号的串行通信
(2)没有联络信号的串行通信。如果通信双方“协议”好了收发条件(如通信数据量、格式等),且在规定时间内准备就绪,则可以不用任何联络信号实现串行通信,如图8-17所示。图8-17没有联络信号的串行通信在图8-17中,如果通信双方距离很近,如同一个设备内的不同模块或同一个电路板上的两个CPU,就无须使用电平转换芯片,将对应引脚直接相连即可。8.3.5通信协议及约定在单片机应用系统中,由于通信双方彼此之间需要传输的数据量少,常使用没有联络信号的串行通信,只需明确如下的收发条件即可:
(1)波特率(CPS)。发送、接收双方的波特率必须相同,误差不得超过一定的范围,否则不能正确接收。
(2)数据位长度(8位或9位)。
(3)以二进制代码发送还是ASCII码形式发送。对于单片机与单片机之间的串行通信来说,以二进制代码发送还是ASCII码发送问题都不大。但当单片机与PC机串行通信时,以ASCII码发送可能更有利于PC控件的检测。
(4)校验有无及校验方式。在串行通信中,除了使用奇偶校验、帧错误侦测等帧内检测方式外,还可能使用其他的检验方式—和校验(往往仅保留和的低8位或低7位,甚至低4位)、某个特征数码的倍数等。有时可能同时使用两种校验方式,以保证通信的可靠性。
(5)信息帧格式。信息帧包括信息帧起始标志、结束标志、信息帧长度、校验方式及校验信息位置等。通常使用发送信息(命令、数据)中不可能出现的状态编码作为信息帧的起始和结束标志,它也常作为发送信息类别—是数据,还是命令的识别码。
(6)字节与字节之间的等待时间。在接收方接收了一个字节信息后,往往需要对信息进行判别、存储等初步处理。在没有联络信号的情况下,当通信波特率较高时,发送了一个字节,必须等待特定时间后,才能发送下一个字节,等待时间应略大于接收方处理一个字节所需的最长时间。因此,为提高通信速度,接收中断服务程序执行时间应尽可能短。当然,通过联络信号检测接收设备是否就绪将缩短发送等待时间。例如,在图8-16所示串行通信线路中,接收中断有效,将RTS置为低电平表示接收方忙,在完成数据处理后,清除RTS“忙”状态,这样发送方只要检测到接收方非忙就发送。
(7)正确接收后的确认信号及时间,即发送了数据信息后,必须明确在多长时间内收到应答信号,否则就认为失败。
(8)出错处理方式。对发送方来说,最常用的出错处理方式是重新发送,即明确发送失败后是否重发以及重发次数等;对接收方来说,常用的出错处理方式包括接收异常后是否要求发送方重发,在什么时候、用什么代码通知发送方等。
(9)串行中断优先级。例如,A机向B机发送的信息帧中字节数变化大,如命令信息只有一个字节,而数据信息可能含有多个字节,且长度不确定。为简化B机接收程序,可使用命令、数据信息中不可能出现的数码作为信息帧的起始标志和结束标志。这样接收方只要收到帧起始标志字节,即认为是一帧信息的开始;收到结束标志,则认为已完整地接收了一帧信息。当然,如果发送的信息量少,信息帧长度变化不大,也可不设结束标志,而采用每次固定发送若干字节方式。这样接收方收到帧起始标志后开始计数,当收了指定字节后,就认为已完整地接收了一帧信息。例如,A机仅需向B机发送少量信息,如一个字节的命令信息或一到两个字节的数据信息,且命令或数据信息中不含0A2H、0A6H。为简化B机接收程序,可协议如下:每次固定发送4个字节。其中,第一个字节为A2H,是信息帧的起始标志,这样B机收到A2H时,即认为是信息帧的开始;第二、三个字节为发送的命令或数据;第四个字节高位为0,低7位为第二、三字节之和的低7位。对于长度为一个字节的命令或数据,可用无用信息A6H或其他信息填充。
对于B机来说,如果收到的内容为A2H,则认为是一帧信息的开始,复位接收计数器。当接收了4个字节后,就认为已完整地接收了一帧信息,校验正确后发特征字,如发送A5H给A机,表明正确接收了A机发来的信息。下面是串行通信中常用的信息帧格式:8.4RS422/RS485总线
8.4.1RS422接口标准
RS422接口标准的发送器将TTL电平的发送信号DI转换为差分(DifferentialDriverMode)形式的A、B两路信号输出,即A路信号与B路信号极性相反。当RS422接口标准发送器输出信号电位差电平UAB在 +1.5~+6V之间时,定义为逻辑“1”;当输出信号电位差电平UAB在 -6~-1.5V之间时,定义为逻辑“0”。相应地,RS422标准接口的接收器,将接收到的A、B两路差分输入信号还原为TTL电平输出信号RO。对于接收器来说,当输入差分信号电平UAB≥+200mV时,输出信号RO为高电平(逻辑“1”);差分信号电平UAB≤-200mV时,输出信号RO为低电平(逻辑“0”)。可见,RS422标准是一种采用平衡(差分)传输方式、单机发送多机接收的单向串行通信接口,如图8-18(a)所示。为了能够实现收发全双工通信方式,需要4根传输线形成两对差分信号线,即采用RS422接口标准实现甲乙两设备之间数据接收与发送时,至少需要5根线(其中4根信号线和1根地线),如图8-18(b)所示。图8-18RS422接口标准串行通信示意图发送器A、B两输出端电压差电平UAB的范围,以及接收器A、B两输入端电压差电平UAB的范围如图8-19所示。发送器输出信号经双绞线传输到接收器A、B两输入端后,将会有不同程度的衰减。衰减幅度与传输线长度、线径(即直流电阻大小)等因素有关,当输入的差分信号UAB小于接收器最小输入电压(200mV)时,接收器就无法识别。因此,尽管RS422接口标准最高传输率可达10Mb/s,但这时传输线长度就迅速锐减到1m以下。实践表明,当传输线为1000m时,传输率不超过20kb/s。图8-19差分输出/输入信号电平范围8.4.2RS485标准采用RS422标准实现数据双向传输时,两设备之间至少需要5条传输线,这在远距离通信中,成本较高。为此,EIA于1983年在RS422基础上制定了RS485接口标准,主要增加了多点、双向通信功能,即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护功能,并扩展了总线的共模电压范围,后命名为TIA/EIA-485-A标准(简称RS485标准)。它实际上是RS422接口标准的发送器和接收器借助同一对差分信号线分时发送、接收数据,属典型的半双工通信方式。在RS485接口标准中,由于收、发分时使用同一对数据线,因此必须给发送器增加使能控制信号DE(高电平有效)。当发送控制信号DE无效(低电平状态)时,发送器不工作,发送器两差分输出信号线A、B处于高阻态。相应地,为减小功耗,一般也给接收器增设使能控制信号(低电平有效)。当接收控制信号无效时,接收器不工作,输出信号RO为高阻态,如图8-20所示。8.4.3RS422/RS485标准性能指标为便于比较,表8-6列出了RS232、RS422、RS485三种接口标准的主要性能指标。表8-6RS232、RS422、RS485接口标准的主要性能指标8.4.4RS485/RS422标准接口芯片简介采用RS485/RS422接口标准通信时,发送方需要通过专用的接口器件,将待发送的TTL电平兼容信号转换为两路差分信号输出;接收方也需要通过专用的接口器件,将差分形式输入的信号转换为TTL电平信号。目前RS485、RS422电平转换器件生产厂家很多,均采用单一 +5.0V(或 +3.3V)电源供电,同一种类型接口器件的引脚大多相互兼容(即一般可相互替换),差别仅限于ESD(人体放电保护)功能的有无与强弱、发送器负载能力的大小、最大传输率、电源电压的高低、功耗的大小等参数。图8-21给出了Sipex公司的SP485E接口器件的内部框图及引脚排列顺序(与工业标准485总线接口芯片75176兼容)。图8-21RS485总线接口器件
RS422接口器件生产厂家很多,对于没有收发使能控制端的RS422总线接口芯片(如Sipex公司的SP490E芯片),一般采用DIP-8或SOP-8封装方式,如图8-22(a)所示;对于带有收发使能控制的RS422总线接口芯片(如Sipex公司的SP491E芯片),一般采用DIP-14或SOP-14封装方式,如图8-22(b)所示。在图8-22中,A为接收器同相信号输入端,B为接收器反相信号输入端;Z为发送器同相信号输出端,Y为发送器反相信号输出端。图8-22RS422总线接口器件在低速长距离的串行通信系统中,一般应优先使用RS485总线构成半双工通信方式,原因是它仅需要三根连线,一方面布线容易(可利用地线隔离),可靠性高;另一方面,线材消耗小,成本低。只有在高速短距离通信中,才考虑使用RS422总线。8.4.5RS485/RS422通信接口实际电路由RS485接口标准器件组成的基本串行通信电路如图8-23所示。图8-23RS485通信接口基本电路在图8-23中,发送器输入端T(即Di)可与MCU,如STM8SUART接口的串行数据发送端TXD相连,接收器的输出端可与MCUUART接口的串行数据输入端RXD相连。由于发送器使能端DE与接收器使能端一般连在一起,由MCU的另一个I/O引脚控制,当控制信号为高电平时,接收器输出端处于高阻态,因此,对于没有上拉输入的RXD引脚,则必须通过10kΩ电阻接电源VCC,以保证接收器输出为高阻态时,MCU串行输入引脚电平处于确定的高电平状态。
R3为终端匹配电阻,其大小原则上与传输线特性阻抗相同。由于双绞线特性阻抗大致为120Ω,因此R3一般取值为120Ω。不过,当通信距离小于300m或通信速率较低(小于20kb/s)时,可以不接R3(其好处是可以减小芯片的功耗)。电阻R1、R2是为了保证在RS485总线处于悬空(没有连接)状态时,使A、B差分线处于确定的高、低电平状态,避免RS485网络瘫痪。电容C1、C2,电阻R4、R5是为了减小RS485总线工作的EMI(电磁辐射干扰)而设置的,它能有效地减小信号传输过程中的波形上冲、下冲。在EMI要求严格时,最好用100~220μH电感代替电阻R4、R5,而在EMI要求不高的应用场合,可以省去电容C1、C2。
ZD1、ZD2是TVS管。尽管RS485总线内部具有一定的过压保护功能,但为了保证接口电路的安全,外接TVS管还是必要的。
R6是上拉电阻,对于可编程为上拉输入方式的MCU引脚,可省略。当RS485总线通信速率较低且MCUI/O资源不够用时,也可以使用一只PNP三极管构成简易的收发自动切换电路,如图8-24所示。图8-24简易收发自动切换电路当发送端TXD为低电平时,T管饱和,收发控制信号为高电平,发送器处于发送状态;当发送端TXD为高电平时,T管截止,收发控制信号为低电平,发送器内部输出信号处于高阻态,此时连接在A引脚的上拉电阻R1使差分输出线A为高电平、连载在B引脚的下拉电阻R2使差分输出线B为低电平,完成了逻辑电平“1”的发送。当收发控制信号为低电平时,接收器工作,接收器在TXD引脚发送逻辑电平“1”期间输出高电平。不过,由于在自动切换过程中,控制管T的开和关需要一定的时间,因此该简易自动切换电路不适合用于传输率大于20kb/s的串行通信系统中。8.4.6避免总线冲突方式
RS485总线属于“一主多从”半双工通信方式,任何时候系统中最多允许一个总线接口芯片处于发送状态,因此在正常状态下,多采用主机轮流查询方式与各从机通信,避免总线冲突。当RS485网络中同时存在两个或以上接口芯片处于发送状态时,网络会面临瘫痪,甚至烧毁RS485接口芯片的危险。在由RS485构成的多机通信系统中,应根据MCU复位期间及复位后I/O引脚电平的状态,保证从机上电复位期间及上电复位后处于接收状态(注:可不必关心主机的状态)。
RS485总线接口从机实用的上电抑制电路如图8-25所示。图中,上电复位期间,由R1、C1构成的RC充电电路将与非门输入端钳位在低电平状态,使施密特输入与非门A输出高电平,经与非门B反相后,收发控制端为低电平,保证了RS485总线接口芯片处于接收状态,只要时间常数R1C1大于MCU上电复位时间即可。图8-25中的与非门可以是74HC132芯片,也可以是CD4093芯片。对于上电复位期间和复位后处于高阻输入状态的MCU引脚,R2不宜省略,以避免复位期间以及复位后与非门输入引脚处于悬空状态。图8-25从机上电抑制电路上电抑制电路形式还很多,例如,对于上电复位期间和复位后处于高电平状态的MCU引脚(如MCS-51芯片),也可使用图8-26(a)、(b)构成简单的上电抑制电路。图8-26适用于MCS-51芯片控制的上电抑制电路对于上电复位期间和复位后处于高电平状态的MCU引脚,如果MCU采用高电平复位方式,如MCS-51,采用图8-26(c)或(d)所示复位抑制电路更加可靠。对于复位期间与复位后引脚为高阻输入状态的MCU(如STM8、LPC900系列),可采用图8-27所示的复位抑制电路。图8-27复位期间与复位后MCU引脚处于高阻输入状态的复位抑制电路8.5串行外设总线接口(SPI)
STM8S系列MCU内置了串行外设总线接口SPI(SerialPeripheralInterface)部件。SPI是一种高速的串行外设总线接口,采用全双工、同步串行通信方式,其通信协议简单,是单片机应用系统常用的一种串行通信方式之一。
SPI总线有主、从两种工作模式,使用MOSI(MasterOut/SalveIn)引脚、MISO(MasterIn/SalveOut)引脚、输入/输出同步时钟信号SCK、从设备选择信号,来完成两个SPI接口设备之间的数据传输。
SPI总线通信过程总是由SPI主设备启动与控制,主设备提供了用于串行数据输入/输出的同步时钟信号SCK,因此对主设备来说,SCK是输出引脚;对从设备来说,SCK是输入引脚。当SPI主设备通过MOSI引脚把数据串行传输到从设备,同时从设备通过MISO引脚将数据回送到主设备。显然,MOSI引脚对主设备是输出,对从设备是输入;而MISO引脚对主设备是输入,对从设备是输出。根据SPI总线传输协议,对主设备来说,MISO引脚总是处于高阻输入状态。当SPI总线处于激活状态时,MOSI、SCK引脚处于互补推挽输出状态;当SPI总线空闲时,MOSI、SCK引脚处于高阻态,防止争夺SPI总线。对于从设备来说,MOSI、SCK引脚总是处于高阻输入状态。当SPI总线处于选中(片选信号输入端为低电平时)状态时,MISO引脚处于互补推挽输出状态;当SPI总线处于非选中(片选信号输入端为高电平时)状态,MISO引脚处于高阻态,防止争夺总线。为保证通信的可靠性,当SPI时钟SCK频率较高时,输出引脚必须初始化为快速输出模式。在“单主机多从机”SPI通信系统中,SPI总线主设备通过控制从机片选信号输入端的电平,选中指定的从设备。8.5.1STM8S系列芯片SPI接口部件结构
STM8S系列MCUSPI总线接口部件的结构如图8-28所示。它包括移位寄存器(SHIFTREGISTER)、波特率产生器(BAUDRATEGENERATOR)、主设备控制逻辑(MASTERCONTROLLOGIC)等部分。图8-28SPI总线结构
STM8S系列MCUSPI总线接口部件功能很强,除了支持主从设备、时钟速率、时钟极性、时钟相位等方式编程选择外,还具有如下功能:
(1)主从设备可软件选择。在这种情况下,从设备选择端(PE5)可作为GPIO引脚使用。
(2)单一数据线的半双工模式与接收模式。
(3) CRC校验。8.5.2STM8S系列芯片SPI接口部件功能
1.数据传输时序数据传输时序由数据传输顺序(LSBFIRST)、时钟极性(CPOL)、时钟相位(CPHA)确定,如图8-29所示。在图8-29中,时钟极性CPOL确定了SPI总线空闲状态下时钟引脚SCK的电平状态,当CPOL为0时,在空闲状态下,SCK引脚处于低电平;当CPOL为1时,在空闲状态下,SCK引脚处于高电平。时钟相位CPHA确定了数据传送发生在时钟SCK的前沿还是后沿,具体情况如表8-7所示。表8-7CPHA与CPOL不同组合对数据传输时序的影响数据传输顺序(LSBFIRST)确定了是先输出低位(LSB)还是高位(MSB)。当LSBFIRST位为0时,先输出MSB,如图8-29所示;当LSBFIRST位为1时,先输出LSB。图8-29SPI总线传输时序为保证数据顺利传输,主从SPI设备的数据传输顺序(LSBFIRST)、时钟极性(CPOL)、相位(CPHA)必须一致。由于SPI通信过程由主设备控制,串行移位时钟SCK由主设备提供,因此对从设备来说,SPI_CR1寄存器中的波特率位没有意义。对从设备来说,必须保证SPI总线在空闲状态下SCK引脚电平状态与CPOL位保持一致。从图8-29所示的SPI总线数据传输时序可以看出,SPI总线抗干扰能力比UART串行总线低。若时钟极性CPOL定义为1(即总线空闲时SCK为高电平),则在总线空闲期间,当从设备、SCK引脚同时受到负脉冲干扰时,从设备会出现误动作——串行移位寄存器通过MISO引脚输出一位;而在数据传输(从设备片选信号有效)期间,如果SCK引脚受到正、负窄脉冲干扰,串行移位寄存器也会多移出一位。因此,SPI总线仅适用于干扰不严重的高速近距离通信。此外,尽可能地将时钟极性(CPOL)定义为0(使空闲时SCK引脚为低电平),原因是总线空闲时,从设备选通信号为高电平,可有效地避免共模干扰造成从设备误动作。
2.从设备选通信号的硬件/软件选择
STM8SMCU的SPI总线从设备选通信号具有硬件、软件两种选择方式,如图8-30所示。图8-30从设备选通信号控制当SPI_CR2的SSM位为0时,SPI总线从设备选择信号来自PE5引脚,即采用硬件选通方式;当SPI_CR2的SSM为1时,SPI总线从设备选择信号由SPI_CR2的SSI位控制,此时PE5引脚可作为GPIO引脚使用,具体情况如表8-8所示。在STM8S系统中,若内部无效(高电平),则无论是主设备还是从设备,SPI总线均处于禁用状态,输出引脚电平由GPIO寄存器定义。表8-8从设备选通信号在STM8S系统中,采用硬件方式产生主从设备选通信号时,SPI总线在数据传送过程中,主设备的引脚必须处于高电平状态,因此,作为主设备的SPI总线的引脚一般不能作为GPIO引脚使用。此外,当STM8内核MCU为主设备时,考虑到STM8MCU复位前后I/O引脚处于悬空输入状态,为防止从设备误传送,需在主设备的SCK引脚外接下拉(时钟相位CPOL为0时)或上拉电阻R1(时钟相位CPOL为1时);当从设备采用硬件选通方式,出于同样的理由,也需在作为从设备选通信号的I/O引脚外接上拉电阻R2,以确保STM8内核MCU复位时从设备的SCK、两输入信号处于期望的电平状态,如图8-31所示。图8-31硬件从机选通方式的SPI通信系统从图8-31可以看出,在SPI通信系统中,主设备与从设备串行移位寄存器通过MOSI、MISO引脚首尾相连。在由STM8内核MCU内嵌SPI接口部件构成的“一主单从”或“一主多从”的SPI通信系统中,主设备、从设备均可选择软件从片选通方式,这样可将主、从机的引脚均作为GPIO引脚使用。在“一主多从”的SPI通信系统中,如果从机采用硬件选通方式,如图8-31(c)所示,依靠从设备引脚选定指定从机,任何时候最多只有一个从设备选通信号为低电平;如果采用软件选通方式,可利用RXONLY控制位,使未选中的从设备仅接收而不发送。
3.数据传输模式
STM8系列MCUSPI总线数据传输模式,由控制寄存器SPI_CR2的BDM(单/双向数据传输模式)、BDOE(双向数据传输模式下输入/输出选择)、RXONLY(输出禁止)三个控制位来控制,如表8-9所示。表8-9数据传输模式注:O表示输出(发送);I表示输入(接收)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版防火门产品安全认证与标准制定合同3篇
- 2025版购房合同字体大小标准化与法律效力确认3篇
- 2024年预埋件绿色建材认证采购合同3篇
- 2024年股权激励计划代持协议
- 2024年环保电器维修与技术服务合同3篇
- 2024年酒类买卖合同
- 2025版绿色建筑股权质押担保合作开发合同3篇
- 2024年货物配送员岗位协议
- 2025年度快递驿站快递代理业务租赁合同样本3篇
- 2025年度精密仪器搬厂与安装一体化合同3篇
- 道路运输企业安全生产管理人员安全考核试题题库与答案
- 护理质控输液查对制度
- 年终抖音运营述职报告
- 期末教师会议德育副校长讲话:德育需要奉献
- 脑梗死患者的护理常规
- 2024年人教版初二地理上册期末考试卷(附答案)
- 儿童文学解读导论智慧树知到期末考试答案章节答案2024年嘉兴大学
- AQ6111-2023个体防护装备安全管理规范
- 江苏小高考计算机考试题目及答案
- 2023版押品考试题库必考点含答案
- 2023版押品考试题库必考点含答案
评论
0/150
提交评论