我所知道的EC====>SPI
生活智斗:朋友问我:‘你知道鱼的记忆只有三秒吗?’我说:‘知道啊,所以才适合吃鱼。’ #生活乐趣# #日常生活趣事# #日常生活笑话# #幽默故事推荐#
我所知道的EC====>SPI
1.Introduction
SPI 全称为Serial Peripheral Interface Bus即串行外围总线。它是由Motorola制定的四线式全双工的同步串行数据通信标准。spi允许mcu和各种外围设备进行全双工的串行通信。常见的spi device有flash rom,触摸屏,LCD等。它有比较高的传输速率,传输速度通常可以达到几Mbps。spi采用主从模式。通常master只有一个,但是可以有多个slave,多个slave通过片选定址。
2.Hardware Interface
Spi接口如下图 1 所示,通常就四根pin,EC Chip有按照Motorola的经典命名方式将这四根pin分别称为MISO、MOSI、SPICLK、SPICS#。不同的IC厂商pin命名的方式可能会有不同,比如有些也会命名为SCK、SDO、SDI、CS#等。
其中SPICLK提供通信所需要的clock,clock太重要了,没有了它,那就全乱套了,什么时候开始、结束,何时是有效数据,何时为跳变都无法分辨,由此可见SPICLK是非常重要的同步时钟信号。SPICS#是片选信号,如果要使用某一个slave device首要做的就是先片选该设备,也就是将该SPICS# pin pull low。MISO master input slave output反过来读就是output slave input master,正反读都讲的通,MOSI也同解Motorola真是太牛了!名字取得这么好。当master向slave发送信息时,mater将数据送到MOSI上,slave从MOSI上读走该信息,如果slave要回信息给master,slave就会将数据送到MISO,master从MISO上获得信息。spi支持单master单slave,单mater多slave模式,在NB上我们常用的就是将BIOS rom通过spi接在南桥,或者接在EC的spi接口,都是单master单slave的模式。因此我们只讨论这种模式。下图2是我手上的NB专案的线路,EC spi接口上接了一颗w25x80 flash rom,我们后续的讨论将基于这颗IC。
3.SPI Instructions
为了方便的操纵slave device,slave device定义一些instructions。这些instructions包括了操作device的基本操作如:读数据,写数据,擦除数据等等。W25x80这颗IC的spec中定义了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 register的block 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 register的block 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
网址:我所知道的EC====>SPI https://www.yuejiaxmz.com/news/view/318906
相关内容
spi 认知中国居然有73 个新能源汽车品牌,你知道哪几个吗?
你所不知道的创意小饰品
你所不知道的国外垃圾处理
儿童智能书包
你所不知道的生活中10个心理学小知识
你所知道的新能源有哪些?
道法七上所学法律知识点
环保冷知识,你所不知道的环保趣事!
基于STM32的家庭天气助手