我所知道的EC====>SPI

我所知道的EC====>SPI

 

1.Introduction

      SPI 全称为Serial Peripheral Interface Bus串行外围总线。它是由Motorola制定的四线式全双工的同步串行数据通信标准。spi允许mcu和各种外围设备进行全双工的串行通信。常见的spi deviceflash rom,触摸屏,LCD等。它有比较高的传输速率,传输速度通常可以达到几Mbpsspi采用主从模式。通常master只有一个,但是可以有多个slave,多个slave通过片选定址。

 

2.Hardware Interface

    Spi接口如下图 1 所示,通常就四根pinEC Chip有按照Motorola的经典命名方式将这四根pin分别称为MISOMOSISPICLKSPICS#。不同的IC厂商pin命名的方式可能会有不同,比如有些也会命名为SCKSDOSDICS#等。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

其中SPICLK提供通信所需要的clockclock太重要了,没有了它,那就全乱套了,什么时候开始、结束,何时是有效数据,何时为跳变都无法分辨,由此可见SPICLK是非常重要的同步时钟信号。SPICS#是片选信号,如果要使用某一个slave device首要做的就是先片选该设备,也就是将该SPICS# pin pull lowMISO master input slave output反过来读就是output slave input master,正反读都讲的通,MOSI也同解Motorola真是太牛了!名字取得这么好。当masterslave发送信息时,mater将数据送到MOSI上,slaveMOSI上读走该信息,如果slave要回信息给masterslave就会将数据送到MISOmasterMISO上获得信息。spi支持单masterslave,单materslave模式,在NB上我们常用的就是将BIOS rom通过spi接在南桥,或者接在ECspi接口,都是单masterslave的模式。因此我们只讨论这种模式。下图2是我手上的NB专案的线路,EC spi接口上接了一颗w25x80 flash rom,我们后续的讨论将基于这颗IC

 

 

 

3.SPI Instructions

 

        为了方便的操纵slave deviceslave device定义一些instructions。这些instructions包括了操作device的基本操作如:读数据,写数据,擦除数据等等。W25x80这颗ICspec中定义了1.write enable 2.write disable 3.read status register 4.write status register 5.read data 6.fast read 7.fast read dual 8.page program 9.sector erase 10. block erase 11.chip erase 12.power down 13.release power down 14.read manu/devid 15.read jedec id等具体可以参考w25x80 spec。对一颗flash rom我们常用的操作就是通过写里面的内容完成刷bios的功能,而刷bios之前spec 规定还需要做一个erase的动作,将rom中所有的内容清为“1。另外有时无法开机时,我们还需要读取flash rom的内容判断出错的原因。针对上述讨论我们只需要如下几个instructions即可完成任务。

 

v     Read data

Read data指令可以从flash rom中一次读取多个字节,执行该指令需要先片选SPICS#(将该pin pull low),然后送read data指令给spi flash rom,随后将24位的地址按照MSB格式分成三个字节A2,A1,A0,然后分别送给spi flash rom,然后就可以从SPIDAT中读取其中该地址上的数据了,地址会自动累加,该指令会一直读下去直到将SPICS# pull high。时序如下图3所示:


 

 

v     Sector erase

Sector erase 指令将flash rom的指定的4kBytes内容全部清为‘1。执行该指令之前要先发write enable 指令而且status registerblock protect bits必须要清‘0,否则sector erase指令将不会执行,做完上述准备工作以后,仍然要做的是片选SPICS#,然后送sector erase指令给spi flash rom,随后按照MSB格式送24位地址A2,A1,A0。要注意的是判断sector erase指令是否完成要使用read status register指令检查BUSY位,一次指令完成要将SPICS# pull high。时序如下图4所示:

 

 

v     Page program

Page program指令允许一次写特定地址开始的256个字节,前提是该区域必须被清为‘1’,所以要先发sector erase指令将flash rom清为‘1’然后才能执行page program。执行page program之前要先送write enable指令而且status registerblock protect bits必须要清‘0’,接下来送page program指令并给出MSB格式的24位地址A2,A1,A0,后续将数据送到spi bus上,如果数据小于256bytes,则只修改特定的字节数,如果大于256bytes,写的内容就会回绕到开始地址的头部。可以通过read status register指令检查BUSY位确定指令是否执行完毕,一次指令完成要将SPICS# pull high。时序如下图5所示:

    

4.BIOS Flash Tool

   看完上述instructions

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值