书签 分享 收藏 举报 版权申诉 / 97
上传文档赚钱

类型第二章串行通信课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:4907643
  • 上传时间:2023-01-24
  • 格式:PPT
  • 页数:97
  • 大小:1.65MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《第二章串行通信课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    第二 串行 通信 课件
    资源描述:

    1、第二章 串行通信一、通信概念介绍二、简单的单工串行通信举例三、UART异步串行接口应用 四、SPI串行接口应用 五、I2C串行总线应用六、附录-RS-232标准和RS-485标准一、通信的基本概念 n微处理器与外设交换数据的过程中可选择以下两种方式:并行通信并行通信:数据的各个数位同时传送;传输速度快,信息率高;占用的引脚资源多,需要的电缆多,成本高;远距离通信时数据的可靠性和抗干扰性下降。串行通信串行通信:数据按照位顺序一位一位传送。传输距离长,抗干扰性强;占用的引脚资源少,成本低。1.1 串行通信方式n通信双方只要约定好通信格式和通信速度即可通信。n串行通信方式可分为两类:异步通信:异步通

    2、信:在异步串行通信中没有同步时钟信号。同步通信:同步通信:在同步串行通信中数据传送受到同步时钟的控制。1.2 异步通信n异步通信中,微处理器与外设之间必须有两项规定。n第一项规定第一项规定:双方通信时采用怎样的数据格式。例如UART串行通信双方规定:用ASCII编码,字符为7位,加一个偶校验位、一个起始位以及一个停止位,则一个字符总共由10位组成,形成的数据格式如图所示。n第二项规定第二项规定:即双方通信过程中每发送一个数位需要多长的时间。在有些场合也称之为波特率波特率,即每秒钟传送的二进制位数(bps)。n数据传送的速率为120字符/秒,每一个字符是10位,则波特率为1200bps。nPC串

    3、口:115200bps 921600bpsnModem:19200bpsn工业场合:4800bpsnUART和1-Wire通信标准就是常见的异步通信。在异步通信中发送器和接收器不必用同一个时钟,只要求各局部时钟同一标称频率(波特率)。1.3 同步通信n在大量数据传送时,采用通信双方(发送器、接收器)在同一个时钟控制下传输数据的同步通信同步通信。n同步通信是先将许多的字符聚集成一字符块,再将每块信息(常称为信息帧)之前加上12个同步字符,接着再加适当的错误检测数据到字符块,最后才传送出去。注意:在同步通信时,数据上没有字符传输时,必须发送专用的空闲字符或是同步字符。n冗余:把传输的数据位当做被除

    4、数,发送器本身产生一个固定的除数,前者除以后者得到的余数即为冗余字符。1.4 串行通信制式n在单工制式下,数据只能从发送站向接收站传送。如图:n在半双工制式下,数据能双向传送,但是不能同时在两个方向上传送。如图:n全双工制式下,接收数据和发送数据占用不同的线路。全双工通信可以同时发送和接收。如图:在串行通信中数据是在两个站之间进行传送的,按照数据传送方向,串行通信可分为单工、半双工和全双工3种制式。1.5 串行通信分类n串行通信标准有许多,下面仅对部分常见的串行通信标准进行简单介绍。串行通信标准引脚引脚说明通信方式通信制式UARTTXD、RXD、GND(三线)TXD:发送端RXD:接收端异步全

    5、双工1-WireDQ (一线)DQ:发送/接收端异步半双工SPISCK、MISO、MOSI(三线)SCK:同步时钟MISO:主机输入,从机输出MOSI:主机输出,从机输入同步全双工I2CSCL、SDA(二线)SCL:同步时钟 SDA:数据输入/输出端同步半双工二、二、最简单的单工串行通信举例n与外设串行通信过程中,数据是一位一位依次顺序传送的;而在微处理器内部,数据是并行处理和传送的。n当微处理器发送数据到外设时,必须要先把并行的数据转换为串行数据再传送;当微处理器接收来自外设的数据时,必须要先把接收到的串行数据转换为并行数据才能处理。n这种并/串之间的转换既可用硬件实现也可用软件实现。n本小

    6、节以74LS164芯片为例,介绍如何用软件方法实现数据的串并转换。(ARM与74LS164之间的串行通信)1.1 实验目的与内容n实验目的实验目的:学会用软件方法模拟串行通信的时序,完成串行通信;深刻理解串行通信的原理,掌握时序分析的基本方法。n实验内容实验内容:完成ARM芯片与74LS164芯片之间的串行通信,利用LED灯显示传输的数据;在完成基本通信的实验基础上,实现流水灯效果。1.2.1 实验原理分析nA、B:串行数据输入端。nClock:时钟输入端。nClear:清零端。低电平有效。nQAQH:数据输出引脚。ClearClock74LS 164238745691011121314ABQ

    7、AVCCQBQCQDGNDQHQGQFQE11.2.2 74LS164真值表输入输入 输出输出 Clear ClockA BQA QB QHLXX X LLL HLX X H H H HHH H L X LLL H X L LLL n74LS164的时钟是由ARM处理器产生,每来1个上升沿74LS164就接收1位数据。n假设要使QAQH=10110011,则ARM要发送一串数据10110011给A、B输入端,并产生相应的时钟信号。如下图:1.3 电路原理图#define LS164_DATA (125)/LS164_DATA=0 x0200 0000#define LS164_CLK(129)

    8、/LS164_CLK=0 x2000 0000#define LS164_CLR (117)/LS164_CLR=0 x0002 0000n74LS164通过ARM的3个I/O脚:P1.17、P3.29、P0.25,分别控制74LS164芯片的清零端口(CLR)、时钟端口(CLK)和数据端口(DATA),引脚定义如下:1.4.1程序清单-初始化子程序/*名称:void LS164_Init(void)*功能:初始化子程序。*入口参数:无*出口参数:无*/void LS164_Init(void)PINSEL1=PINSEL1&0 xfff3ffff;/设置Ls164引脚LS164_DATA(P

    9、0.25)为GPIOPINSEL2=PINSEL2&0 xffffffb7;/设置Ls164引脚LS164_CLK(P3.29)为GPIO /设置Ls164引脚LS164_CLR(P1.17)为GPIO/-设置各引脚输出方向都为输出-IO0DIR=IO0DIR|LS164_DATA;/设置P0.25为输出IO3DIR=IO3DIR|LS164_CLK;/设置P3.29为输出IO1DIR=IO1DIR|LS164_CLR;/设置P1.17为输出1.4.2 程序清单-发送数据子程序void LS164_SendData(uint8 data)uint8 j;/定义一个8位无符号整型变量jIO1CL

    10、R=LS164_CLR;/74LS164输出清零IO1SET=LS164_CLR;/-模拟时钟信号,循环8次完成数据传送-for(j=0;j=1;/data右移一位IO3SET=LS164_CLK;/向74LS164发送一个高电平时钟信号IO3CLR=LS164_CLK;1.4.3程序清单-主程序uint8 const LS164_TAB32=0 x00,0 x01,0 x03,0 x07,0 x0F,0 x1F,0 x3F,0 x7F,0 xFF,0 x7F,0 x3F,0 x1F,0 x0F,0 x07,0 x03,0 x01,0 x00,0 x81,0 x42,0 x24,0 x18,0

    11、 x3c,0 x7e,0 xff,0 x00,0 xff,0 x00,0 x55,0 xaa,0 x55,0 xaa,0 x00;/*名称:main()*功能:通过64LS164控制LED灯,实现流水灯*/int main(void)uint8 i;LS164_Init();/引脚初始化 while(1)/-发送数据-for(i=1;i32;i+)LS164_SendData(LS164_TABi);DelayMS(100);/大约延时100毫秒,详见第一章蜂鸣器控制程序 return(0);1.5 实验结果n观看实验板,每次由ARM处理器向74LS164芯片发送一个8位数据,LED的开关会发

    12、生相应的变化。当程序连续运行时,实验板上会出现各种灯闪烁的效果。三、UART异步串行接口应用nUART通信标准就有专门的硬件UART,即异步接收发送器。nUART有2个对外连接的引脚:RxD、TxD:RxD是输入引脚,用于串行数据接收;TxD是输出引脚,用于串行数据发送。1.1 硬件UART的结构框图 nUART数据的接收过程示意图nUART数据的发送过程示意图1.2 UART的功能1传输转换功能传输转换功能 UART既能发送,把并行数据转换成串行数据输出;又能接收,把接收的串行数据转换成并行数据输入。2奇偶校验功能奇偶校验功能 UART在发送时,检查每个要传送的字符中的“1”的个数,自动在奇

    13、偶校验位上添“l”或“0”,使之满足要求;UART在接收时,检查每个字符的各位及奇偶校验位,“1”的个数是否满足要求。3出错标识功能出错标识功能常用的有以下三种:l奇偶错误l帧错误l溢出错误1.3 UART通信协议nUART异步串行通信协议需要定义以下5个内容:1起始位起始位 2数据位数据位3奇偶校验位奇偶校验位 4停止位停止位5波特率设置波特率设置n 范例如图:1.4 UART的应用nUART一般可以应用到如下一些场合:1.芯片间的近距离通信 2.与PC机之间的通信 3.模块之间的远距离通信1、芯片间的近距离通信n同一块板卡上的芯片需要通信时,我们可以采用UART异步串行通信。n连接示意图

    14、如下:2、与PC机的通信nRS-232-C接口是PC机目前最常用的一种串行通讯接口。芯片利用UART可以与PC机进行通讯,由于接口不同从而电流不同,需要使用RS232转换器对通讯信号进行转换 芯片接RS232转换器与PC机通讯图 3、模块之间的远距离通信nRS-485接口的最大传输距离可达 3000米,最高传输速率10Mbps,且抗噪声干扰性好。n RS-485的电气特性:逻辑“1”以两线间的电压差为+2V +6V表示;逻辑“0”以两线间的电压差为-2V -6V表示。接口信号电平比RS-232-C降低了,该电平与TTL电平兼容,可方便与TTL 电路连接。RS-485通信电路示意图n RS-48

    15、5接口具有多站能力,能够实现多机间远距离通信。下图是基于RS-485的多机通信系统:1.5 LPC2220内部UART模块nUART0具有16字节发送FIFO和16字节接收FIFO。nUART0内置了波特率发生器。nUART0主要包括3个模块:UART0接收器模块接收器模块(U0Rx)UART0发送器模块发送器模块(U0Tx)UART0波特率发生器模块波特率发生器模块(U0RBG)nUART0波特率发生器模块(U0RBG),产生UART0所使用的定时,U0BRG模块时钟源为VPB时钟(pclk),它保存了VPB时钟(pclk)的分频值。n时钟源(pclk)与除数锁存LSB寄存器(U0DLL)和

    16、除数锁存MSB寄存器(U0DLM)所定义的除数相除得到UART0模块所使用的时钟,该时钟必须为波特率的16倍。n波特率计算如下:分频后的时钟分频后的时钟=pclk/(U0DLM*256+U0DLL)波特率波特率=分频后的时钟/16问题:系统时钟(pclk)为64MHz,UART0串行通信所需要的波特率为115200bps,如何设置U0DLL和U0DLM?除数=64MHz/(16*115200)U0DLM=除数/256=0U0DLL=除数%256=36n注意:当U0DLM和UODLL中的值为0 x0000时,系统默认为0 x0001。1.6 寄存器介绍nUART0包含10个8位位寄存器。U0RB

    17、R、U0THR、U0SCR、U0DLL、U0DLM、U0IER、U0FCR、U0LCR、U0IIR、U0LSR。名称描述访问权限地址复位值U0RBR接收缓冲寄存器只读0 xE000 C000未定义U0THR发送缓冲寄存器只写0 xE000 C000未定义U0IER中断使能寄存器读/写 0 xE000 C0040U0IIR中断标识寄存器只读0 xE000 C0080 x01UOFCRFIFO控制寄存器只写0 xE000 C0080U0LCR线控制寄存器读/写0 xE000 C00C0UOLSR线状态寄存器只读0 xE000 C0140 x60U0SCR高速缓存寄存器读/写0 xE000 C01C

    18、0U0DLL除数锁存(低8位)寄存器读/写0 xE000 C0000 x01UODLM除数锁存(高8位)寄存器读/写0 xE000 C0040除数锁存访问位DLAB=1时可以设置波特率U0LCR线控制寄存器 U0LCR决定发送和接收数据字符的格式。U0LCR功能描述复位值1:0字长度选择00:5位字符长度 01:6位字符长度10:7位字符长度 11:8位字符长度02停止位0:1个停止位1:2个停止位03奇偶使能0:禁止奇偶产生和校验1:使能奇偶产生和校验05:4奇偶选择00:奇数 01:偶数10:强制为1 11:强制为006间隔控制0:禁止间隔发送1:使能间隔发送当该位为1时,输出引脚UART

    19、0 TxD强制为逻辑007除数锁存访问位DLAB0:禁止访问除数锁存寄存器1:使能访问除数锁存寄存器0U0LSR线状态寄存器 U0LSR为只读寄存器,它提供UART0的接收和发送模块的当前状态信息。U0LSR功能描述复位值0接收数据就绪(RDR)0:U0RBR为空1:U0RBR包含有效数据01溢出错误(OE)0:溢出错误状态未激活1:溢出错误状态激活02奇偶错误(PE)0:奇偶错误状态未激活1:奇偶错误状态激活03帧错误(FE)0:帧错误状态未激活1:帧错误状态激活04间隔中断(BI)0:间隔中断状态未激活1:间隔中断状态激活05发送保持寄存器(THRE)0:U0THR包含有效数据1:U0TH

    20、R为空16发送器(THRE)0:U0THR/U0TSR包含有效数据1:U0THR/U0TSR为空17Rx FIFO错误(RXFE)0:U0RBR中没有UART Rx错误,或U0FCR的bit0为01:U0RBR中有UART Rx错误(至少有一个错误)0UART0的初始化设置程序*名称:UART0_Init(unit32 UART_BPS)*功能:初始化串口0,设置波特率,数据位长度,停止位长度,奇偶校验类型 默认设置为8位数据位,1位停止位,无奇偶校验*入口参数:UART_BPS*出口参数:无*Void UART0_Init(uinit32 UART_BPS)unit16 Fdiv;PINSE

    21、L0=0 x00000005;/设置P0.0(Txd)和P0.1(Rxd)连接到UART0 /*设置波特率*/U0LCR=0 x83;/DLAB=1,可设置波特率 Fdiv=(Fpclk/16)/UART_BPS;/计算分频值 U0DLM=Fdiv/256;U0DLL=Fdiv%256;/*设置数据格式/*U0LCR=0 x03;/8位数据长度、1个停止位、禁止奇偶校验位 UART0初始化包括三项内容:1引脚连接功能的设置 2波特率的设置 3通信数据格式的设置 1.7 实验目的与内容n实验目的:掌握LPC2220的UART模块中各个控制寄存器的设置,并能使用UART 通信标准与PC机或其他板块

    22、进行通信。n实验内容1:使用UART0通过RS-232接口向PC机发送数据,并在PC机的超级终端上显示。n实验内容2:使用UART1通过RS485接口与另一个板块进行通信,通信数据通过8个LED灯显示。实验1nPC机一般都会配有12个RS232串行通信接口(简称COM口),利用COM口PC机可以与外部设备实现通信连接。n本实验中,我们用ARM实验平台连接PC机。/*名称:UART0_SendByte(uint8 data)*功能:向串口发送一个字节数据,并等待发送完毕。*入口参数:data要发送的字节数据*/void UART0_SendByte(uint8 data)U0THR=data;/

    23、发送数据 while(U0LSR&0 x40)=0);/等待数据发送完毕/*名称:uint8 UART0_RcvByte()*功能:接收一个字节数据。*出口参数:接收到的数据*/uint8 UART0_RcvByte()uint8 rcv_data;while(U0LSR&0 x01)=0);/当U0RBR中没有数据就一直等待rcv_data=U0RBR;return(rcv_data);实验1 程序清单 实验1 程序清单 uint8 const UART0_SEND_TAB=Oh,Succeed!n;/*名称:main()*功能:向串口UART0发送字符串 Oh,Succeed!*/int

    24、main(void)uint8*str,data;UART0_Init(115200);while(1)str=UART0_SEND_TAB;while(*str!=0)UART0_SendByte(*str+);/向PC机发送数据data=UART0_RcvByte();/等待PC发送数据 return(0);实验1结果在AXD调试软件中全速运行程序,串口调试助手,将会显示一串字符“Oh,Succeed!”。当PC台式机向实验板发送任何字符后,串口调试助手的接收窗口会再多一串字符“Oh,Succeed!”。实验2n当设备间需要远距离通信时可以考虑采用RS485通信。Max483是一款半双工的

    25、芯片板卡1用于数据发送(客户端)板卡2用于数据接收(服务器端)实验2 程序清单-服务端程序#define DERE (110)/连接 P0.10/*名称:UART1_Init(uint32 UART_BPS)*功能:ARM处理器UART1相关引脚与功能模块的初始化*入口参数:UART_BPS 串口的波特率*/void UART1_Init(uint32 UART_BPS)uint16 Fdiv;PINSEL0=(PINSEL0&0 xfff0ffff)|(0 x05 16);/将 p0.8 P0.9设置为TxD1 RxD1功能 IO0DIR=IO0DIR|DERE;/将连接 DE/RE 引脚的

    26、GPIO设置为输出 /-设置波特率-U1LCR=0 x83;/DLAB=1,可设置波特率 Fdiv=(Fpclk/16)/UART_BPS;/设置波特率 U1DLM=Fdiv/256;U1DLL=Fdiv%256;/-设置数据格式-U1LCR=0 x03;/8位字符长度、1个停止位、禁止奇偶效验/*名称:uint8 UART1_RcvByte(void)*功能:通过RS-485接收一字节数据。*出口参数:data接收到的数据*/uint8 UART1_RcvByte(void)uint8rcv_data;IO0CLR=DERE;/RE引脚置低,使其处于接收状态while(U1LSR&0 x01

    27、)=0);/当U0RBR中没有数据就一直等待rcv_data=U1RBR;return(rcv_data);/*名称:main()*功能:接收RS485发送过来的数据,根据接收的数据控制LED灯的显示*/int main(void)uint8 data;UART1_Init(115200);while(1)data=UART1_RcvByte();/接收一字节数据,没有接收则等待 LS164_SendData(data);/控制LED灯显示 return(0);实验2 参考程序清单-客户端程序void UART1_SendData(uint8 data)IO0SET=DERE;/DE引脚置高,

    28、使Max483处于发送状态 U1THR=data;/发送数据 while(U1LSR&0 x40)=0);/等待数据发送完毕 uint8 const UART1_SEND_TAB=1,2,3,4,5,6,7,8,7,6,5,4,3,2,1;int main(void)uint8 i;UART1_Init(115200);for(i=0;i15;i+)UART1_SendData(UART1_SEND_TABi);/发送一字节数据 DelayMS(2000);/软件延时 return(0);四、SPI串行接口应用nSPI是由Motorola公司提出的一种同步串行外围接口。它在速度要求不高、低功耗

    29、、需保存少量参数的智能化传感系统中得到了广泛应用。nSPI是一个全双工的同步串行接口。在数据传输过程中,总线上只能是一个主机和一个从机进行通信。n在数据传输中,主机总是向从机发送1字节的数据(MOSI),同时从机向主机发送1字节的数据(MISO)。1.1 SPI接口的信号描述n1MISO(Master In Slave Out)主机输入、从机输出信号。n2MOSI(Master Out Slave In)主机输出、从机输入信号。n3SCK(Serial Clock)串行时钟信号。n4SS(Slave Select)从机选择信号。低电平有效。注意:1、主设备必须为微处理器,从设 备可以是微处理器

    30、也可以是其他带有SPI接口的芯片。2、主设备的SS应接高电平。3、先发送MSB,在发送LSB。4、SCK由主设备产生。主设备和从设备必须在相同的时序下工作。1.2 基于SPI接口的系统组成nSPI总线可在软件的控制下构成各种简单或复杂的系统。SPI总线与多从机连接示意图 1.3 SPI接口的工作原理nSPI的基本结构相当于两个8位移位寄存器的首尾相接,构成16位的环形移位寄存器。从而实现了主机与从机的数据交换。SPI接口的基本结构图 1.4 LPC2220内部SPI模块nLPC2220中具有两个完全独立的SPI控制器:SPI0和SPI1。其中SPI0模块有4个引脚:SCK0、SSEL0、MIS

    31、O0、MOSI0,其功能如下:引脚名称引脚名称类型类型描述描述SCK0,SCK1输入/输出串行时钟:用于同步SPI接口间数据传输的时钟信号。该时钟信号总是由主机输出。时钟可编程为高有效或低有效。只有在数据传输时才被激活,其它任何时候都处于非激活状态或三态。SSEL0,SSEL1输入从机选择:用于指示被选择参与数据传输的从机。低电平有效。在数据处理前必须为低电平并在数据传输时保持低电平。如果SSEL在数据传输过程中变为高电平,传输将被中止,并将接收到的数据丢弃。从机返回到空闲状态。配置LPC2220的SPI为主机必须选择相应的脚用作SSEL功能并保持高电平,这样才能执行主机的功能。MISO0,M

    32、ISO1输入/输出主入从出:数据由从机传输到主机,单向信号。MOSI0,MOSI1输入/输出主出从入:数据由主机传输到从机,单向信号。n一个SPI总线可以连接多个主机和多个从机,但是在同一时刻只允许有一个主机操作总线。可通过SSEL引脚设置LPC222为SPI主机或从机。1.5 SPI数据传输nSPI接口可由CPOL和CPHA设定4种不同传输格式的时序。nCPOL决定时钟脉冲SCK的有效脉冲方式(正脉冲、负脉冲)。CPHA决定数据线MOSI什么时候输出数据或采集数据。n根据CPOL和CPHA的组合数目,一共有4种设置情况。n4种时序下的数据传输,其中“第一位数据的输出”和“其他位数据的输出”栏

    33、是表示数据在什么时候更新输出。还需注意数据采样是上升沿还是下降沿有效。n数据与时钟的相位关系如图:CPOL/CPHACPOL/CPHA的设定的设定第一位数据的输出第一位数据的输出其它位的输出其它位的输出数据采样数据采样CPOL=0,CPHA=0在第一个SCK上升沿之前SCK下降沿SCK上升沿CPOL=1,CPHA=1第一个SCK下降沿SCK下降沿SCK上升沿CPOL=1,CPHA=0在第一个SCK下降沿之前SCK上升沿SCK下降沿CPOL=0,CPHA=1第一个SCK上升沿SCK上升沿SCK下降沿1.6 SPI寄存器nLPC的SPI内部结构框图如表所示。SPI内部包括控制寄存器、数据寄存器、状

    34、态寄存器、时钟计数寄存器、中断标志寄存器。具体描述见表:名称名称描述描述复位值复位值SPCRSPI控制寄存器,该寄存器控制SPI的操作模式0SPSRSPI状态寄存器,反映SPI模块的当前状态0SPDRSPI数据寄存器,保存发送和接收的数据0SPCCRSPI时钟计数寄存器,用于设置SPI时钟分频值0SPINTSPI中断标志寄存器,保存SPI的中断标志0SPI控制寄存器(SPCR)名称名称功能功能描述复位复位值值2:0保留不能写入1NA3CPHA1:数据在第二个时钟沿采样,传输从第一个时钟终开始在最后一个时钟结束0:数据在第一个时钟沿采样,传输从SSEL激活开始,在SSEL无效后结束04CPOL1

    35、:SCK低有效0:SCK高有效05MSTR1:主模式0:从模式06LSBF1:数据传输低位在先0:数据传输高位在先07SPIE1:每次SPIF或 MODF置位时产生硬件中断0:SPI被禁止SPI状态寄存器(SPSR)名称名称功能功能描述复位复位值值2:0保留不能写入1NA3ABRT1:从机终止,读取该位则清零04MODF1:模式错误,读取该位可清零MODF,再写SPI控制寄存器05ROVR1:读溢出,读取该位则清零06WCOL1:写冲突,读取该位则清零,在防伪SPI数据寄存器07SPIE1:每次SPIF或 MODF置位时产生硬件中断0:SPI被禁止SPI数据寄存器(SPDR)SPDR功能功能描

    36、述复位值复位值7:0数据SPI双向数据0SPI时钟寄存器(SPCCR)SPCCR功能功能描述复位值复位值0计数值SPI时钟计数值设定0SPI中断标志寄存器(SPINT)SPCCR功能功能描述复位值复位值0SPI中断SPI时钟计数值设定07:1保留不能写入1NA1.7 SPI的使用1主机操作主机操作SSEL0引脚接高电平,数据传输步骤为:设置S0PCCR寄存器,确定分频值。设置S0PCR寄存器,控制SPI0为主机。当有多个从机情况下,控制片选信号,选择要通信的从机。将要发送的数据写入S0PDR寄存器,即启动SPI传输。读取S0PSR寄存器,等待SPIF位置位。从SPI数据寄存器中读出接收到的数据

    37、(可选)。如果还有数据要传送,则重复第46步骤,否则取消对从机选择。第46步骤。通过SSEL引脚的电平可以配置LPC2220为SPI主机或为SPI从机,LPC2220内部SPI支持主机操作和从机操作。下面以SPI0模块为例分别介绍。1.7 SPI的使用2从机操作从机操作SSEL0引脚接低电平,数据传输步骤为:设置S0PCR寄存器,控制SPI0为从机。不需要设置S0PCCR寄存器。将要发送的数据写入S0PDR(可选)。读取S0PSR寄存器,等待SPIF位置位。从SPI数据寄存器中读出接收到的数据(可选)。如果还有数据要传送,则跳到第2步。74HC595芯片介绍n当SCLR为低电平时,输出端Q清零

    38、;n当SCLR=1,SCK出现上升沿时,内部寄存器移位并接收SER端发来的数据;n当RCK出现上升沿时,74HC595内部寄存器的数据输出到QAQH。n74HC595在SCK上升沿进行数据采样,因此CPOL=0,CPHA=0。真值表 74HC595引脚图 1.8 电路原理图分析n74HC595的控制端口和SPI串行通信端口连接LPC2220的相关引脚。n并行输出端口QAQH连接到数码管上,数码管输出显示的内容完全取决于SPI0模块所传输的内容。1.9 程序清单/*名称:SPI0_SendData()*功能:向SPI总线发送数据,并接收从机发回的数据。*入口参数:data 待发送的数据*出口参数

    39、:返回值为接收到的数据*/uint8 SPI0_SendData(uint8 data)S0PDR=data;while(0=(S0PSR&0 x80);/等待SPIF置位,即等待数据发送完毕 return(S0PDR);/*名称:void HC595_Init(void)*功能:初始化引脚与SPI0模块。*入口参数:无*出口参数:无*/void HC595_Init(void)/-引脚初始化-PINSEL0=(PINSEL0&0 xffff00ff)|0 x00005500;/设置P0.4,P0.5,P0.6为SPI0引脚PINSEL2=PINSEL2&0 xffffff7f;/设置HC59

    40、5_nCS为GPIO口PINSEL2=PINSEL2&0 xfffffff7;/设置HC595_RCK为GPIOIO3DIR=IO3DIR|(128);IO1DIR=IO1DIR|(116);IO3CLR=(128);/选中HC595/-SPI寄存器初始化-S0PCCR=0 x52;/设置SPI时钟分频S0PCR=0 x30;/设置SPI接口模式,MSTR=1,主模式/CPOL=0,CPHA=0,LSBF=1,LSB在前#define smgA1 (122)/p2.22连接数码管的第一个位选端uint8 const TAB10=0 xC0,0 xF9,0 xA4,0 xB0,0 x99,0 x

    41、92,0 x82,0 xF8,0 x80,0 x98;/-int main(void)uint8 i;HC595_Init();/HC595初始化/-打开数码管-IO2DIR=IO2DIR|smgA1;IO2CLR=smgA1;while(1)/-向74HC595发送数据-for(i=0;i 400000)F_I2C=40000;I2SCLH=(Fpclk/F_I2C+1)/2;/设置I2C时钟为F_I2CI2SCLL=(Fpclk/F_I2C)/2;I2CONCLR=Ox2C;I2CONSET=Ox40;/使能主I2C主模式下的数据发送n主模式I2C的数据发送格式见图所示,起始信号S和停止信

    42、号P用于指示串行传输的起始和结束。数据的发送每次为8位,即一字节,每发送完一个字节,主机都接收到一个应答位(是由从机回发的)。操作步骤如下:1、置位STA进入I2C主发送模式,I2C逻辑在总线空闲后,立即发送一个起始条件;2、当发送起始条件后,等待SI置位(只有当SI=1时,I2DAT才能访问并保持稳定状态),此时I2STAT的状态为08H;3、把从地址和读写操作位装入I2DAT,清零SI位,开始发送从地址和读写操作位;4、当把从地址和读写操作位已发送并且接受到从机应答位后,SI位再次置位,现在的状态码可能为18H、20H、38H;5、如果状态码为18H,表明主机已经接收到应答位,则可以将数据

    43、装入I2DAT寄存器,然后清零SI位,开始发送数据;6、正确发送数据后,SI位再次置位,可能的状态码为28H,30H,此时可以根据状态码进行下一个操作。主模式下的数据发送/*名称:I2C_Send()*功能:主发送模式,与从器件进行数据交互。*入口参数:SlaveAddr从器件地址pSendData待发送的数据指针Num发送的数据长度*出口参数:1 代表发送成功;0 代表发送失败*/uint8 I2C_Send(unit8 SlaveAddr,uint8 *pSendData,uint32 Num)uint32 i;I2CONSET=0 x20;/发送起始位while(I2CONSET&0 x

    44、08)=0);/等待SI置位/*发送从器件地址和读写位*/I2CONCLR=0 x08;/SI位清零I2DAT=SlaveAddr1&0 xFE;while(I2CONSET&0 x08)=0);/等待SI置位if(I2STAT!=0 x18)/未接收到应答,则发送停止位,数据传输中止。I2CONSET=0 x10;return 0;/*发送Num个字节数据数据*/for(i=0;iNum;i+)I2CONCLR=0 x08;/SI位清零I2DAT=*(pSendData+i);while(I2CONSET&0 x08)=0);/等待SI置位if(I2STAT =0 x30)/接收非应答位,则

    45、中断数据传输I2CONSET=0 x10;return 0;return 1;主模式下的数据接收n主机所接收的数据字节来自从发送器(即从机),起始和停止条件用于指示串行传输的起始和结束。第一个发送的数据包含接收器件的从地址(7位)和读写操作位(1位)。操作步骤如下:1、置位STA进入I2C主接收模式,I2C逻辑在总线空闲后,立即发送一个起始条件;2、当发送起始条件后,等待SI置位(只有当SI=1时,I2DAT才能访问并 保持稳定状态),此时I2STAT的状态为08H;3、清零SI位,把从地址和读写操作位装入I2DAT,开始发送从地址和读写操作位;4、当把从地址和读写操作位已发送并且接受到从机应

    46、答位后,SI位再次置位,现在的状态码可能为38H、40H、48H;5、如果状态码为40H,表明主机已经接收到应答位,设置AA位,用来控制接收数据后产生应答位还是非应答位,然后清零SI位,开始接收数据;6、正确发送数据后,SI位再次置位,可能的状态码为50H、58H,此时可以根据状态码进行下一个操作。从模式下的初始化操作nLPC2220系列器件配置为I2C从机时,I2C主机可以对它进行读/写操作。要初始化从接收模式,并向I2CONSET写入0 x44实现I2C使能和AA位置1,向I2CONCLR写入0 x28清零起始位和中断标识,即可等待主机访问。n通常初始化程序中加入了中断的初始化。I2C总线

    47、时钟信号是由主机产生,所以从机不用初始化I2SCLH和I2SCLL寄存器。I2C从模式初始化设置/*名称:I2C_SlaveInit()*功能:从模式I2C初始化,包括初始化其中断为向量IRQ中断。*入口参数:adr 本从机地址*出口参数:无*/void I2C_Slavlnit(uit8 adr)PINSELO=(PINSELO&OxFFFFFFOF)|Ox50;/设置I2C控制口有效I2ADR=adr&OxFE;/设置从机地址I2CONCLR=0 x28;I2CONSET=Ox44;/I2C配置为从机模式/*设置I2C中断允许*/VICIntselect=OxOOOOOOOO;/设置所有通

    48、道为IRQ中断VICVectCntl0=Ox29;/I2C通道分配到IRQ slot 0,即优先级最高VICVectAddr0=(int)IRQ_I2C;/设置I2C中断向量地址VICIntEnale=Ox0200;/使能I2C中断从模式下的数据发送n当主机访问从机时,若读写操作位为1(读操作),则从机进入从发送模式,向主机发送数据,并等待主机的应答信号。从模式下的数据接收n当主机访问从机时,若读写操作位为0(写操作),则从机进入从接收模式,接收主机发送 过来的数据,并产生应答信号。六、附录-RS-232标准nRS-232标准(协议)的全称是EIA-RS-232标准。它是一个全双工的通信标准。

    49、这些标准都是在RS-232标准的基础上经过改进而形成的。nRS-323C标准是美国EIA(电子工业联合会)与BELL等公司一起开发的1969年公布的通信协议。它适合于数据传输速率在020000b/s范围内的通信。这个标准对串行通信接口的有关问题都作了明确规定。nRS-232C标准它早期被应用在计算机与调制解调器(MODEM)的连接控制,MODEM再通过电话线进行远距离数据传输。但是严格来讲,RS232接口是DTE与DCE之间的接口。nRS-232C标准对电器特性、逻辑电平和各种接口信号及功能都作了规定,下面分别进行讲述。1.1 RS-232标准中定义的信号线nRS-232C规标准接口有25条信

    50、号线,但常用的只有9根,它们是2个数据信号,1个信号地线,6个控制信号。如表所示:DB-9型 RS-232的接口示意图 nRS-485与RS-232不一样,数据信号采用差分传输方式,也称作平衡传输,它使用一对双绞线,将其中一线定义为A,另一线定义为B,另有一个信号地C,在某些情况下是可以不用的。六、附录-RS-485标准 RS-485标准中的信号 1.1 RS-485网络安装注意要点nRS-485支持32个节点,因此多节点构成网络。在构建网络时,应注意如下几点:n1)采用一条双绞线电缆作总线,将各个节点串接起来,从总线到每个节点的引出线长度应尽量短,以便使引出线中的反射信号对总线信号的影响最低

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第二章串行通信课件.ppt
    链接地址:https://www.163wenku.com/p-4907643.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库