如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第十章SPI与模拟量转换10.1SPI的基本工作原理10.1.2SPI的数据传输利用SPI进行MCU之间的数据传输时,主机的程序控制着数据传输,从机的程序配合主机工作,完成传输过程。图10-1是SPI的主-从连接示意图。具体工作过程:从主机CPU发出启动传输信号开始,此时要传送的数据装入8位移位寄存器,同时产生8个时钟信号从SPSCK引脚依次送出;在SPSCK信号的控制下,主机中8位移位寄存器中的数据依次从MOSI引脚送出,到从机的MOSI引脚送入它的8位移位寄存器;在此过程中,从机的数据也通过MISO引脚到主机中。10.1.3SPI模块的时序SPI是在同步信号SPSCK的控制下完成数据的传输,根据控制位CPHA和CPOL的不同,数据线和时钟线产生4种可能的时序。图10-2、图10-3、图10-4和图10-5给出了数据线与SPSCK之间的关系。图10-2CPHA=0,CPOL=0时的数据/时钟时序图10.1.3SPI模块的时序图10-3CPHA=0,CPOL=1时的数据/时钟时序图10.1.3SPI模块的时序图10-4CPHA=1,CPOL=0时的数据/时钟时序图10.1.3SPI模块的时序图10-5CPHA=1,CPOL=1时的数据/时钟时序图10.2GP32的SPI模块编程基础10.2.2SPI模块的寄存器SPI模块有3个寄存器:数据寄存器SPDR,控制寄存器SPCR,状态和控制寄存器SPSCR。(1)数据寄存器SPDR(SPIDataRegister)SPDR由两个独立的数据寄存器组成:只能写入的发送数据寄存器和只能读出的接收数据寄存器,它们共用一个地址$0012。写入时,为要发送的8位数据,记为:T7~T0;读出时,为接收的8位数据,记为:R7~R0。(2)控制寄存器SPCR(SPIControlRegister)SPCR复位时写一次,以后不再对其写入,不再更改对SPI的设置,地址是$0010,各位定义:3.SPI状态和控制寄存器SPSCR(SPIStatusandControlRegister)SPSCR的地址:$0011,定义为:SPI的波特率=CGMOUT/(2xBD)。上式中:CGMOUT为时钟产生模块CGM的基准时钟输出。BD是分频系数,由SPR1、SPR0位决定:SPR1、SPR0=00011011BD=283212810.2.3SPI编程基本方法(1)SPI初始化第一步:写控制字到SPCR,确定是否允许SPI接收中断、SPI的工作方式、时钟极性、时钟相位、是否允许SPI等。第二步:写控制字到SPSCR,确定SPI的波特率。(2)发送一个数据与接收一个数据通过SPI发送一个数据,同时通过SPI接收一个数据,作为主机方,只要将数据送入SPDR,然后检查SPSCR的SPTE位(位3),若该位为1,表示数据已送出。若同时接收对方送来的数据,则接着检查SPSCR的SPRF位(位7),若该位为1,表示要接收的数据已进入数据寄存器,可以取出。10.3A/D和D/A转换的基本问题2D/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.4MC908GP32内部A/D转换模块10.4.1GP32A/D转换模块寄存器2.A/D转换数据寄存器ADR(Analog-to-DigitalDataRegister)ADR存放A/D转换的8位结果,每次A/D转换结束更新该寄存器。编程从该寄存器读取A/D转换结果。该寄存器地址为:$003D,为只读寄存器,复位时为$00。10.4.1GP32A/D转换模块寄存器3.A/D转换输入时钟寄存器ADCLK(Analog-to-DigitalInputCloc