CoolRunner-Ⅱ器件实现SPI主控制器
发布时间:2008/9/19 0:00:00 访问次数:496
spi串行外设接口是一个全双工、同步及串行数据通信接口,已经被广泛应用于微处理器、微控制器和外设中,它允许在处理器与外设或处理器之间进行通信。spi系统很灵活,可以与许多通用外设接口。本节描述的是在coolrunner-ii cpld中实现一个spi主控制器,通过它可以为不具有spi主控制器的处理器(如8051)增加一个spi接口,以方便连接其他spi设备。如图1所示为此设计的顶层框图。此控制器中的微控制器选用了一款被广泛应用,却不具有spi接口的8051。此设计经过修改,可以应用于其他处理器中。
如图1 spi主设备顶层框图
spi包括4根线,分别是串行时钟sck、主出从入线mosi、主入从出线miso和从片选线ss n。sck线由主spi驱动,并控制数据位流。主spi可以以多种波特率发送数据,在sck线边沿,数据发送一位。可以是在sck上升沿,也可以是在sck下降沿。sck有4种频率,用一个边沿发送数据,用另一个边沿接收数据。所有spi设备的sck、mosi和miso都被连接在一起,但仅有一个被配置为主spi,其他设备都为从spi。
ss_n控制线片选从spi,没有被选中的从spi设备会忽略sck信号,并且驱动miso为高阻状态。连接到主spi的ss_in_n线,为spi总线争夺标志线。它有效时,表明有其他spi设备申请总线控制。sck的相位和极性可以配置,cpol为时钟极性选择信号,当cpol=“0”,idle状态时sck=“0”;当cpol=“1”,idle状态时sck=“1”。cpha为时钟相位选择信号,当cpha=“0”,数据在第1个sck边沿有效;当cpha=“1”,数据在第2个sck边沿有效,时钟极性和相位对于主从spi来说应该保持一致。
以主spi为例,当主从spi进行数据传输时,一个8位数据mosi引脚移位输出。同时,另一个不同的8位数据在m[so引脚移入。相当于主spi有一个8位的移位寄存器,从spi也有一个8位的移位寄存器,这两个寄存器连接在一起形成一个环形16位移位寄存器。对于一次完整的通信,16位移位寄存器移8个位置。这样一来,主从spi的8位数据完成一次交换,即完成一次通信。
spi协议描述了spi总线上的字节传输时序和波形,但是并没有规定数据通信协议,如未指定第1个字节包含地址或读/写命令。如此一来,在具体的应用中要清楚数据手册规定的通信协议。在本设计中,cpld实现的主spi设备,也没有规定具体的通信协议,这个协议可以通过8051微控制器中的软件解决。
如图2和如图3所示分别为spi数据传输时序,图中的ss_n在传输过程中保持有效。
如图2 cpha=0时spi总线上数据传输时序
如图3 cpha=1时spi总线上数据传输时序
欢迎转载,信息来自维库电子市场网(www.dzsc.com)
spi串行外设接口是一个全双工、同步及串行数据通信接口,已经被广泛应用于微处理器、微控制器和外设中,它允许在处理器与外设或处理器之间进行通信。spi系统很灵活,可以与许多通用外设接口。本节描述的是在coolrunner-ii cpld中实现一个spi主控制器,通过它可以为不具有spi主控制器的处理器(如8051)增加一个spi接口,以方便连接其他spi设备。如图1所示为此设计的顶层框图。此控制器中的微控制器选用了一款被广泛应用,却不具有spi接口的8051。此设计经过修改,可以应用于其他处理器中。
如图1 spi主设备顶层框图
spi包括4根线,分别是串行时钟sck、主出从入线mosi、主入从出线miso和从片选线ss n。sck线由主spi驱动,并控制数据位流。主spi可以以多种波特率发送数据,在sck线边沿,数据发送一位。可以是在sck上升沿,也可以是在sck下降沿。sck有4种频率,用一个边沿发送数据,用另一个边沿接收数据。所有spi设备的sck、mosi和miso都被连接在一起,但仅有一个被配置为主spi,其他设备都为从spi。
ss_n控制线片选从spi,没有被选中的从spi设备会忽略sck信号,并且驱动miso为高阻状态。连接到主spi的ss_in_n线,为spi总线争夺标志线。它有效时,表明有其他spi设备申请总线控制。sck的相位和极性可以配置,cpol为时钟极性选择信号,当cpol=“0”,idle状态时sck=“0”;当cpol=“1”,idle状态时sck=“1”。cpha为时钟相位选择信号,当cpha=“0”,数据在第1个sck边沿有效;当cpha=“1”,数据在第2个sck边沿有效,时钟极性和相位对于主从spi来说应该保持一致。
以主spi为例,当主从spi进行数据传输时,一个8位数据mosi引脚移位输出。同时,另一个不同的8位数据在m[so引脚移入。相当于主spi有一个8位的移位寄存器,从spi也有一个8位的移位寄存器,这两个寄存器连接在一起形成一个环形16位移位寄存器。对于一次完整的通信,16位移位寄存器移8个位置。这样一来,主从spi的8位数据完成一次交换,即完成一次通信。
spi协议描述了spi总线上的字节传输时序和波形,但是并没有规定数据通信协议,如未指定第1个字节包含地址或读/写命令。如此一来,在具体的应用中要清楚数据手册规定的通信协议。在本设计中,cpld实现的主spi设备,也没有规定具体的通信协议,这个协议可以通过8051微控制器中的软件解决。
如图2和如图3所示分别为spi数据传输时序,图中的ss_n在传输过程中保持有效。
如图2 cpha=0时spi总线上数据传输时序
如图3 cpha=1时spi总线上数据传输时序
欢迎转载,信息来自维库电子市场网(www.dzsc.com)