首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

单片机 arm 常用的接口总结(2)

单片机 arm 常用的接口总结(2)

SPI的相位和极性】


CPOLCPHA,分别都可以是0或时1,对应的四种组合就是:


Mode 0CPOL=0, CPHA=0
Mode 1CPOL=0, CPHA=1
Mode 2CPOL=1, CPHA=0
Mode 3CPOL=1, CPHA=1

arm 常用的接口总结" width="371">  

   结合这个图已经很清楚的认识到,极性和相位主要是控制什么东东了.cpol等于0时,时钟的空闲电平就是0;cpol等于1时,空闲电平就是1;而cpha决定了数据采样的时刻,是第一个边沿的时候,还是第二个边沿的时候。

【如何看懂和记忆CPOLCPHA


所以,关于在其他地方介绍的,看似多么复杂难懂难记忆的CPOLCPHA,其实经过上面解释,就很容易看懂了:


去看时序图,如果起始的始终SCLK的电平是0,那么CPOL=0,如果是1,那么CPOL=1


然后看数据采样时刻,即时序图数据线上的数据那个矩形区域的中间所对应的位置,对应到上面SCLK时钟的位置,对应着是第一个边沿或是第二个边沿,即CPHA01。(对应的是上升沿还是还是下降沿,要根据对应的CPOL的值,才能确定)。



即:


1)如何判断CPOLSCLK的空闲时候的电压,是0还是1,决定了CPOL0还是1


2)如何判断CPHA:而数据采样时刻对应着的SCLK的电平,是第一个边沿还是第二个边沿,对应着CPHA0还是1



【软件中如何设置SPI的极性和相位】


SPI分主设备和从设备,两者通过SPI协议通讯。


而设置SPI的模式,是从设备的模式,决定了主设备的模式。


所以要先去搞懂从设备的SPI是何种模式,然后再将主设备的SPI的模式,设置和从设备相同的模式,即可正常通讯。


对于从设备的SPI是什么模式,有两种:



1)固定的,有SPI从设备硬件决定的


SPI从设备,具体是什么模式,相关的datasheet中会有描述,需要自己去datasheet中找到相关的描述,即:


关于SPI从设备,在空闲的时候,是高电平还是低电平,即决定了CPOL0还是1


然后再找到关于设备是在上升沿还是下降沿去采样数据,这样就是,在定了CPOL的值的前提下,对应着可以推算出CPHA0还是1了。



举例1


CC2500 - Low-Cost Low-Power 2.4 GHz RFTransceiverdatasheetSPI的时序图是:


arm 常用的接口总结" width="576">


从图中可以看到,最开始的SCLK和结束时候的SCLK,即空闲时刻的SCLK,是低电平,推导出CPOL=0,然后可以看到数据采样的时候,即数据最中间的那一点,对应的是SCLK的第一个边沿,所以CPHA=0(此时对应的是上升沿)。


举例2:


  SSD1289 - 240 RGB x 320 TFT LCDController Driverdatasheet中提到:


SDI is shifted into 8-bit shift register onevery rising edge of SCK in the order of data bit 7, data bit 6 ……data bit 0.


意思是,数据是在上升沿采样,所以可以断定是CPOL=0CPHA=0,或者CPOL=1CPHA=1的模式,但是至于是哪种模式


按理来说,接下来应该再去确定SCLK空闲时候是高电平还是低电平,用以确定CPOL0还是1,但是datasheet中没有提到这点。


所以,此处,目前不太确定,是两种模式都支持,还是需要额外找证据却确定CPOL0还是1.


   2)可配置的,由软件自己设定

从设备也是一个SPI控制器,4种模式都支持,此时只要自己设置为某种模式即可。


然后知道了从设备的模式后,再去将SPI主设备的模式,设置为和从设备模式一样,即可。


对于如何配置SPICPOLCPHA的话,不多细说,多数都是直接去写对应的SPI控制器中对应寄存器中的CPOLCPHA那两位,写0或写1即可。


举例:


   此处遇到的C8051F347中的SPI就是一个SPIcontroller控制器,即支持软件配置CPOLCPHA的值,四种模式都支持,此处C8051F347作为SPI从设备,设置了CPOL=1CPHA=0的模式,因此,此处对应主芯片BlackfinF537中的SPI控制器,作为Master主设备,其SPI的模式也要设置为CPOL=1CPHA=0  
继承事业,薪火相传
返回列表