SPI与模拟量转换

上传人:wuli****0220 文档编号:244804931 上传时间:2024-10-06 格式:PPT 页数:41 大小:408KB
返回 下载 相关 举报
SPI与模拟量转换_第1页
第1页 / 共41页
SPI与模拟量转换_第2页
第2页 / 共41页
SPI与模拟量转换_第3页
第3页 / 共41页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,嵌入式技术基础与实践,第十章 SPI与模拟量转换,主要内容,SPI,的基本工作原理,GP32,的,SPI,模块编程基础,A/D,和,D/A,转换的基本问题,MC908GP32,内部,A/D,转换模块,GP32 MCU A/D,转换编程实例,*利用,SPI,进行高位扩,A/D,展接口,*利用,SPI,进行高位扩,D/A,展接口,*扩展实现,D/A,转换,*常用传感器及采样电路简介,嵌入式技术基础与实践,10.1 SPI的基本工作原理,10.1.1 SPI的主要特性,全双工。,主、从工作方式。,发送和接收的数据寄存器相互独立从而实现双缓存操作。,主机可以设定4种工作频率(最大可达总线频率的二分之一)。,从机最大工作频率等于总线频率。,发送结束、接收结束、工作方式错误和溢出错误四种中断标志。,一个主控MCU和几个从控MCU相互连接。,几个MCU相互连接构成一个多主机系统。,一个主控MCU和一个或多个从属外设相互连接。,10.1.2 SPI,的数据传输,利用SPI进行MCU之间的数据传输时,主机的程序控制着数据传输,从机的程序配合主机工作,完成传输过程。图10-1是SPI的主-从连接示意图。具体,工作过程:,从主机CPU发出启动传输信号开始,此时要传送的数据装入8位移位寄存器,同时产生8个时钟信号从SPSCK引脚,依次送出;,在SPSCK信号的控制下,主机中8位移位寄存器中的数据依次从MOSI引脚送出,到从机的MOSI引脚送入它的,8位移位寄存器;,在此过程中,从机的数据也通过MISO引脚到主机中。,图10-1 SPI全双工主-从连接,移位寄存器,移位寄存器,MISO MISO,主,MCU,MOSI,MOSI,波特率发生器,从,MCU,SPSCK SPSCK,10.1.3 SPI模块的时序,SPI是在同步信号SPSCK的控制下完成数据的传输,根据控制位CPHA和CPOL的不同,数据线和时钟线产生4种可能的时序。图10-2、图10-3、图10-4和图10-5给出了数据线与SPSCK之间的关系。,图10-2 CPHA=0,CPOL=0时的数据/时钟时序图,SPSCK周期,CPOL=0,MOSI,FROM MASTER,MISO,FROM SLAVE,信号捕捉点,10.1.3 SPI模块的时序,图10-3 CPHA=0,CPOL=1时的数据/时钟时序图,SPSCK周期,CPOL=1,MOSI,FROM MASTER,MISO,FROM SLAVE,信号捕捉点,10.1.3 SPI模块的时序,图10-4 CPHA=1,CPOL=0时的数据/时钟时序图,SPSCK周期,CPOL=0,MOSI,FROM MASTER,MISO,FROM SLAVE,信号捕捉点,10.1.3 SPI模块的时序,图10-5 CPHA=1,CPOL=1时的数据/时钟时序图,SPSCK周期,CPOL=1,MOSI,FROM ASTER,MISO,FROM SLAVE,信号捕捉点,10.2 GP32的SPI模块编程基础,10.2.1 SPI模块的引脚,SPI模块通常引出4个引脚,分别为:SS、MISO、MOSI、SPSCK。,(1)从机选择引脚SS(Slave select),若SPI工作于主机方式,置SS为高电平;若SPI工作于从机方式,当SS=0时,表示主机选中了该从机,反之则未选中该从机。,(2)主出从入引脚MOSI(Master out/slave in),MOSI是主机输出、从机输入数据线。,(3)主入从出引脚MISO(Master in/slave out),MISO是主机输入、从机输出数据线。,(4)SPI串行时钟引脚SPSCK(SPI serial clock),SPSCK用于控制主机与从机之间的数据传输,。,10.2.2 SPI模块的寄存器,SPI模块有3个寄存器:数据寄存器SPDR,控制寄存器SPCR,状态和控制寄存器SPSCR。,(1)数据寄存器SPDR(SPI Data Register),SPDR由两个独立的数据寄存器组成:只能写入的发送数据寄存器和只能读出的接收数据寄存器,它们共用一个地址$0012。,写入时,为要发送的8位数据,记为:T7T0;,读出时,为接收的8位数据,记为:R7R0。,(2)控制寄存器SPCR(SPI Control Register),SPCR复位时写一次,以后不再对其写入,不再更改对SPI的设置,地址是$0010,各位定义:,SPI接收中断允许位,DMA选择位,SPI发送中断允许位,SPI允许位,SPI线或模式位,时钟相位位,时钟极性选择位,SPI主机位,数据位,D7 D6 D5 D4 D3 D2 D1 D0,定义,SPRIE DMAS SPMSTR CPOL CPHA SPWOM SPE SPTIE,复位,0 0 1 0 1 0 0 0,3SPI状态和控制寄存器SPSCR(SPI Status and Control Register),SPSCR的地址:$0011,定义为:,SPI的波特率=CGMOUT/(2,x,BD)。上式中:CGMOUT为时钟产生模块CGM的基准时钟输出。BD是分频系数,由SPR1、SPR0位决定:,SPR1、SPR0=00 01 10 11,BD=2 8 32 128,SPI接收器满标志位,错误中断允许位,SPI波特率选择位,模式错误标志允许位,SPI发送器空标志位,模式错误标志位,溢出标志位,数据位,D7 D6 D5 D4 D3 D2 D1 D0,定义,SPRF ERRIE OVRF MODF SPTE MODFEN SPR1 SPR0,复位,0 0 0 0 1 0 0 0,10.2.3 SPI编程基本方法,(1)SPI初始化,第一步:写控制字到SPCR,确定是否允许SPI接收中断、SPI的工作方式、时钟极性、时钟相位、是否允许SPI等。,第二步:写控制字到SPSCR,确定SPI的波特率。,(2)发送一个数据与接收一个数据,通过SPI发送一个数据,同时通过SPI接收一个数据,作为主机方,只要将数据送入SPDR,然后检查SPSCR的SPTE位(位3),若该位为1,表示数据已送出。若同时接收对方送来的数据,则接着检查SPSCR的SPRF位(位7),若该位为1,表示要接收的数据已进入数据寄存器,可以取出。,10.3 A/D和D/A转换的基本问题,1 A/D转换,A/D转换模块(Analog To Digital Convert Module),即模数转换,是将电压信号转换为对应的数字信号。,进行A/D转换的基本问题:,(1)采样精度 数字量变化一个最小量时模拟信号的变化量,即采样位数。,(2)采样速率 完成一次A/D采样所要花费的时间。,(3)滤波 对采样的数据进行筛选去掉误差较大的毛刺。,(4)物理量回归 把A/D采样值与实际物理量对应起来。,2 D/A转换,(1)D/A转换器的转换精度有两种衡量方法,分辨率:D/A转换器在理论上可达到的精度。其定义,电路所能分辨的最小输出电压VLSB(输入的n位数字代码最低有效位LSB为1,其余都为0)与最大输出电压Vm(此时输入数字代码所有各位全为1)之比。,转换误差:D/A转换器实际上能达到的转换精度。转换误差可用输出电压满度值的百分数表示,也可以用LSB的倍数来表示。,(2)D/A转换器的转换速度有两种衡量方法,建立时间tset是在输入数字量各位由全0变为全1或由全1变为全0时,输出电压达到某一规定值(例如取1/2LSB或满度值的0.01%)所需要的时间。,转换速率SR是在大信号工作时,即输入数字量的各位由全0变为全1或由全1变为0时,输出电压uo的变化率。D/A转换器完成一次转换所需的时间应包括建立时间tset和输出电压uo的上升或下降时间,即最大转换时间为:,TTRmax=tset+Vomax/SR,上式中Vomax是输出模拟电压的最大值。,10.4 MC908GP32内部A/D转换模块,10.4.1 GP32 A/D转换模块寄存器,1,A/D转换状态和控制寄存器ADSCR(Analog-to-Digital Status and Control Register),ADSCR主要功能是:选取要转换的通道、决定转换结束数据获取的方式、设置是连续转换还是一次转换。ADSCR的地址是:$003C,定义为:,数据位,D7 D6 D5 D4 D3 D2 D1 D0,定义,COCO AIEN ADCO ADCH4 ADCH3 ADCH2 ADCH1 ADCH0,复位,0 0 0 1 1 1 1 1,转换完成标志位,A/D转换中断允许标志位,连续转换控制位,通道选择,10.4.1 GP32 A/D转换模块寄存器,2 A/D转换数据寄存器ADR(Analog-to-Digital Data Register),ADR存放A/D转换的8位结果,每次A/D转换结束更新该寄存器。编程从该寄存器读取A/D转换结果。该寄存器地址为:$003D,为只读寄存器,复位时为$00。,10.4.1 GP32 A/D转换模块寄存器,3 A/D转换输入时钟寄存器ADCLK(Analog-to-Digital Input Clock Register),该寄存器决定A/D转换的时钟频率来源、分频系数值,芯片内的A/D转换器要求ADC时钟频率为1MHz左右。ADCLK 的地址是:$003E.定义为:,ADC时钟分频系数选择位,ADC输入时钟源选择位,未用,数据位,D7 D6 D5 D4 D3 D2 D1 D0,定义,ADIV2 ADIV1 ADIV0 ADICLK -,复位,0 0 0 1 1 1 1 1,10.4.2 A/D转换模块的基本编程方法,(1)A/D转换初始化,对ADCLK写入控制字节,决定时钟输入源是内部总线还是外部晶振,决定分频系数等。,(2)启动A/D转换,对ADSCR写入控制字节,选取要转换的通道、决定转换结束数据获取的方式、设置是连续转换还是一次转换等。,(3)获A/D转换结果,若是中断方式,在A/D中断程序中取得,若是查询方式,通过ADSCR的第7位(COCO位)取得,当COCO=1时可从ADR中取数。,10.5 GP32 MCU A/D转换编程实例,10.5.1 A/D转换08C语言编程实例,(1)A/D转换有关C语言子函数,10.5.1 A/D转换08C语言编程实例,(1)A/D转换有关C语言子函数,(1)A/D转换有关C语言子函数,(1)A/D转换有关C语言子函数,(2)A/D转换08C测试实例主函数,10.5.2 A/D转换汇编语言编程实例,(1)A/D转换有关子程序,(2)A/D转换测试程序汇编主程序,*10.6 高位A/D转换接口,A/D芯片TCL2543概述,1TLC2543的引脚说明,图10-8 TLC2543的封装管脚,引脚类别,引脚名及引脚号,中文含义,简要说明,电源类,Vcc(20)、GND(10),REF+(14)、REF-(13),电源、地,参考电压,一般使用5V,一般使用5V,控制类,CS(15),EOC(19),I/O CLOCK(18),片选端,转换结束端,时钟输入,由高到低有效,由外部输入,转换结束时,向外部输出高,控制I/O的时钟,由外部输入,模拟输入,AIN0AIN10,(19、11、12),模拟输入端,输入范围:0.3VVcc+0.3V,控制输入,DATA INPUT(17),控制字输入端,选择通道及输出数据格式的控制字由此输入,数据输出,DATA OUT(16),转换结果输出,A/D转换结果输出的3态串行输出端,TLC2543,的编程要点,(1),控制字的格式,控制字为从,DATA INPUT,端串行输入,TLC2543,芯片内部的,8,位数,据,它告诉,TLC2543,要转换的模拟量通道、转换后的输出数据长度、输,出数据的格式。,(2),TLC2543,的内部寄存器,输入数据寄存器存放从,DATA INPUT,端移入的
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!