快速烧写两个以上spi设备的方法

文档序号:6598602阅读:471来源:国知局
专利名称:快速烧写两个以上spi设备的方法
技术领域
本发明涉及设备烧写领域,特别涉及一种快速烧写两个以上SPI设备的方法。
背景技术
SPI (Serial Peripheral interface)串行设备接口,SPI接口主要应用在EEI^ROM、FLASH、实时时钟、AD转换器、数字信号处理器和数字信号解码器之间,SPI总线系统是一种 同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息,其中 外围设备包括FLASHRAM、网络控制器、IXD显示驱动器、A/D转换器和MCU等。SPI设备上包含有多个管脚,如CS、SO、Si、WP、HOLD和SCK ;其中CS为片选管脚,当CS为低电平时,SPI设备被选中,当CS为高电平时,SPI设 备不被选中,并且在进行任何操作之前,需要先在CS上有一次由高电平至低电平的跳变;SO为数据输出管脚,在读操作的过程中,数据从SO管脚移位输出,在时钟的下降 沿时数据改变;SI为数据输入管脚,所要写入SPI设备的操作码,字节地址和数据都从该引脚输 入,在时钟的上升沿时数据被锁定;WP为输入写保护,当WP管脚为低电平时,芯片禁止写入,但是其他的功能正常, 当WP管脚为高电平时,所有的功能都正常,当CS为低电平时,WP变为低电平可以中断对芯 片的写操作,但是如果内部的写周期已经被初始化后,WP变为低电平不会对写操作造成影 响;HOLD为输入保持,HOLD引脚是当主机CPU因另一任务而中断存储操作时使用,当 /HOLD处于低电位时,当前操作被中止,设备忽略SCK和CS的任何变化,当SCK处于低电位 时,HOLD上的所有转变必须发生。SCK 串行时钟管脚,控制串行总线数据输入和输出的时序。但是,目前使用标准SPI对设备的读写都是单独对单个设备进行访问,这样在某 些场合就不太适用,如果对于多个同样的设备发送命令和数据时就会显得效率低下。

发明内容
为了解决现有技术中的不足,本发明提供了一种快速烧写两个以上SPI设备的方 法,微处理器与所述两个以上SPI设备建立连接之后,所述方法包括选中所有的所述SPI设备,向所有的所述SPI设备发送写数据指令,再释放所有的 所述SPI设备;查询所有的所述SPI设备的状态,设置标志位,并根据所述标志位判断是否所有 的所述SPI设备均正常,若否,提示相应的所述SPI设备不正常;若是,继续进行数据通讯;其中,所述查询所有的所述SPI设备的状态,设置标志位的操作具体为选中其中一个所述SPI设备,向所述SPI设备发送查询当前状态的指令,并接收所 述SPI设备返回的数据,再释放所述SPI设备,根据所述接收到的数据设置所述SPI设备对应的标志位,然后查询其他的所述SPI设备的当前状态,设置相应的标志位;或者,读取所有的所述SPI设备的数据输出管脚的电压值,并计算所有所述电压值并联得到的并联电压值,若得到的并联电压值为低电压或高电压时,则说明所有的所述SPI设 备均正常,若得到的并联电压值既不是低电压也不是高电压时,则说明不是所有的所述SPI 设备均正常,其中存在工作异常的SPI设备,然后分别查询每个SPI设备的当前状态,设置 相应的标志位。本发明的有益效果在于本发明提供了一种快速两个以上烧写SPI设备的方法, 通过本发明提供的方法可以对多个同样的设备进行数据传输时可以同时向设备发送命令 和数据,然后分别查询设备状态,可以提高SPI数据传输效率。


图1为本实施例提供的一种检测两个以上FLASH芯片的方法的流程图;图2为本实施例提供的一种快速烧写两个以上FLASH芯片的方法的流程图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方 式做进一步地详细描述。实施例1本实施例1以FLASH芯片这种较为典型的SPI设备作为该方法的执行主体进行说 明,但并不用以限制该方法的执行主体,本领域技术人员所熟知的设备均在本发明的保护 范围之内。在本实施例中,需要烧写的FLASH芯片至少是两个以上,因此微处理器与这些需 要烧写的FLASH芯片都建立连接,这些FLASH芯片与微处理器连接时均共用同一条时钟线、 输入和输出线,但是片选线不是共用的,微处理器上有对应的多个管脚,每个管脚通过片选 线CS与相应的FLASH芯片进行连接,管脚上对应着有相应的序号,则与序号为1的管脚相 连的FLASH芯片即可以称为第一个FLASH芯片,与序号为2的管脚相连的FLASH芯片即可 以称为第二个FLASH芯片,等等。参见图1,本实施例中,在微处理器与需要烧写的FLASH芯片建立连接之后,微处 理器开始对FLASH芯片进行烧写,具体地,一种快速烧写两个以上FLASH芯片的方法,实现 步骤如下步骤101 微处理器将所有的FLASH芯片的WP(写保护)和HOLD(保持)置为高 电平;步骤102 通过时钟线向所有的FLASH芯片发送时钟信号;步骤103 将所有的FLASH芯片的片选线置为低电平,选中所有的FLASH芯片;步骤104 向所有的FLASH芯片发送写数据指令;在本实施例中,写数据指令具体为0x02+三位地址+需要写入的数据,用于将该指 令中包含的需要写入的数据写入到该指令中所指定的地址中。步骤105 将所有的FLASH芯片的片选线置为高电平,释放所有的FLASH芯片;
步骤106 微处理器将第一个FLASH芯片的片选线置为低电平,选择该FLASH芯 片;步骤107 向该FLASH芯片发送读取状态寄存器的指令,并接收该FLASH芯片返回的数据;其中,读取状态寄存器的指令具体为0x05+数据,用于查询第一个FLASH芯片的状 态。步骤108 将该FLASH芯片的片选线置为高电平,释放该FLASH芯片;步骤109 根据步骤107中接收到的数据判断该FLASH芯片是否处于“忙”状态,即 判断数据中的WIP (Write-in-Progress)位是否为1,并相应地设置标志位;在本实施例中,WIP位用于表示该FLASH芯片是否处于“忙”状态,即是否在进行写 操作,当WIP为1时,则表示该FLASH芯片正在进行写操作,即该FLASH芯片处于“忙”状态, 当WIP为0时,则表示该FLASH芯片没有进行写操作,即该FLASH芯片不处于“忙”状态,处 于“空闲”状态;其中,标志位是指内存中开辟的一小块记录各个FLASH芯片的状态标志的空间, 每个FLASH芯片对应着相应的标志位,相应地设置标志位的操作具体为若该FLASH芯片处 于“BUSY”状态,则将该FLASH芯片对应的标志位置为0,若该FLASH芯片处于“空闲”状态, 则将该FLASH芯片对应的标志位置为1。在本实施例中,步骤106至步骤109描述了查询第一个FLASH芯片的状态,设置标 志位的方法。步骤110 微处理器判断是否已查询完所有的FLASH芯片的状态,若没有,则执行 步骤111,若是,则执行步骤112;步骤111 微处理器继续查询下一个FLASH芯片的状态,并在查询完成后返回到步 骤 110 ;在本实施例中,微处理器查询下一个FLASH芯片的状态的方法与查询第一个 FLASH芯片的状态的方法相同,即与步骤106至步骤109所描述的内容相同,在此不再重复。步骤112 根据标志位判断是否所有的FLASH芯片均正常,若否,则提示相应的 FLASH芯片不正常,否则执行步骤113 ;在本实施例步骤112中,根据标志位判断是否所有的FLASH芯片均正常的方法和 提示相应的FLASH芯片不正常的方法具体为判断是否所有的标志位均为1,若所有的标志位均被置为1,则表示所有的FLASH 芯片均正常,若有的标志位被置为0,则表示该标志位对应的FLASH芯片不正常;由于各个FLASH芯片对应的标志位是按照各个FLASH芯片连接的管脚的序号顺序 排列的,即第一个FLASH芯片对应的标志位的序号为1,第二个FLASH芯片对应的标志位的 序号为2,等等,因此,若当序号为3的标志位被置为0时,则提示与序号为3的管脚相连的 FLASH芯片不正常。在本实施例中,步骤106至步骤112描述了依次查询所有的FLASH芯片的状态,设 置标志位的方法,其中微处理器按照管脚顺序依次查询各个FLASH芯片的状态,先查询与 序号为1的管脚相连的FLASH芯片,即第一个FLASH芯片,再依次查询第二个FLASH芯片的 状态、第三个FLASH芯片的状态......,直到查询完所有的FLASH芯片;
步骤106至步骤112还可以为微处理器还可以随机对各个FLASH芯片的状态进 行查询,即先查询其中一个FLASH芯片的状态,设置标志位,再查询另一个FLASH芯片的状 态,并设置相应的标志位,直到查询完所有的FLASH芯片,其中查询各个FLASH芯片的状态, 并设置相应的标志位的方法与步骤106至步骤109中所说的查询第一个FLASH芯片的状 态,设置标志位的方法相同,并在查询完之后判断是否已查询完所有的FLASH芯片的状态;或者,读取所有的FLASH芯片的数据输出管脚SO的电压值,并计算所有电压值并 联得到的并联电压值,若得到的并联电压值小于0. 3V或大于3. 0V,则表示得到的并联电压 为低电压或高电压,说明所有的FLASH芯片均正常,若得到的并联电压值在0. 3V至3. OV之 间,则表示得到的并联电压既不是低电压也不是高电压,说明不是所有的FLASH芯片均正 常,其中存在有工作异常的FLASH芯片,然后分别查询每个FLASH芯片的当前状态,设置相 应的标志位,其中分别查询每个FLASH芯片的状态,并设置相应的标志位的方法与步骤106 至步骤109中所说的查询第一个FLASH芯片的状态,设置标志位的方法相同,并在查询完之 后判断是否已查询完所有的FLASH芯片的状态。在本实施例中,还可以预先设定FLASH芯片的最高出错次数,则步骤106至步骤 112还可以包括当查询得到某个FLASH芯片不正常时,则判断该FLASH芯片的不正常次数 是否已达到了预先设定的最高出错次数,若否,则将该FLASH芯片的不正常次数加1,并等 待再次查询该FLASH芯片,若是,则将该FLASH芯片设置为坏芯片,并不再查询该FLASH芯 片。步骤113 微处理器将第一个FLASH芯片的片选线置为低电平,选择该FLASH芯 片;步骤114 向该FLASH芯片发送读数据指令,并接收该FLASH芯片返回的数据;其中,读数据指令具体为0x03+三位地址,用于读取该指令中所说的地址中的数据。步骤115 将该FLASH芯片的片选线置为高电平,释放该FLASH芯片;步骤116 判断步骤114中接收到的数据是否出错,即判断接收到的数据与步骤 104中的写数据指令写入到该FLASH芯片中的数据是否相同,若判断得到数据不相同,则数 据出错,若相同,则数据正确,并根据数据的出错与否相应地设置标志位;其中,根据数据的出错与否相应地设置标志位的方法具体为若数据出错,则将该 FLASH芯片对应的标志位置为0,若数据正确,则将该FLASH芯片对应的标志位置为1 ;在本实施例中,步骤113至步骤116描述了读取第一个FLASH芯片中的数据的方 法。步骤117 微处理器上层应用判断是否已读取完所有的FLASH芯片中的数据,若没 有,则执行步骤118,若是,则执行步骤119 ;步骤118 微处理器上层应用继续读取下一个FLASH芯片中的数据,并在读取完成 后返回到步骤117;在本实施例中,微处理器上层应用读取下一个FLASH芯片中的数据的方法与读取 第一个FLASH芯片中的数据的方法相同,即与步骤113至步骤116所描述的内容相同,在此
不再重复。步骤119 根据标志位判断是否所有的FLASH芯片均正常,若否,则提示相应的FLASH芯片不正常,否则继续进行数据通讯。在本实施例步骤119中,根据标志位判断是否所有的FLASH芯片均正常的方法和 提示相应的FLASH芯片不正常的方法均与步骤112中所说的方法相同,在此不再重复。本实施例步骤113至步骤119描述了微处理器按照管脚顺序依 次读取各个FLASH 芯片中的数据,先读取与序号为1的管脚相连的FLASH芯片,即第一个FLASH芯片,再依次 读取第二个FLASH芯片的状态、第三个FLASH芯片的状态......,直到读取完所有的FLASH芯片;步骤113至步骤119还可以为微处理器还可以随机读取各个FLASH芯片中的数 据,即先读取其中一个FLASH芯片中的数据,设置标志位,再读取另一个FLASH芯片中的数 据,并设置相应的标志位,直到读取完所有的FLASH芯片,其中读取各个FLASH芯片中的数 据,并设置相应的标志位的方法与步骤113至步骤116中所说的读取第一个FLASH芯片中 的数据,设置标志位的方法相同,并在读取完之后判断是否已读取完所有的FLASH芯片;或者,读取所有的FLASH芯片的数据输出管脚SO的电压值,并计算所有电压值并 联得到的并联电压值,若得到的并联电压值小于0. 3V或大于3. 0V,则表示得到的并联电压 为低电压或高电压,说明所有的FLASH芯片均正常,若得到的并联电压值在0. 3V至3. OV之 间,则表示得到的并联电压既不是低电压也不是高电压,说明不是所有的FLASH芯片均正 常,其中存在有工作异常的FLASH芯片,然后分别读取每个FLASH芯片中的数据,设置相应 的标志位,其中分别读取每个FLASH芯片中的数据,并设置相应的标志位的方法与步骤113 至步骤116中所说的读取第一个FLASH芯片中的数据,设置标志位的方法相同,并在读取完 之后判断是否已读取完所有的FLASH芯片中的数据。在本实施例中,还可以预先设定FLASH芯片的最高出错次数,则步骤113至步骤 119还可以包括当读取得到某个FLASH芯片不正常时,则判断该FLASH芯片的不正常次数 是否已达到了预先设定的最高出错次数,若否,则将该FLASH芯片的不正常次数加1,并等 待再次读取该FLASH芯片中的数据,若是,则将该FLASH芯片设置为坏芯片,并不再读取该 FLASH芯片中的数据。在本实施例中,在步骤103和步骤104之间还可以包括如下步骤步骤103-1 向所有的FLASH芯片发送写使能指令,即WREN指令;在本实施例中,写使能指令具体为0x06+数据,用于设置FLASH芯片的状态寄存器 中的TOL(Write Enable Latch)位,WEL位用于表示“写使能”锁存器的状态,当TOL位为1 时,表示“写使能”锁存器被设置,当WEL位为0时,表示“写使能”锁存器已复位,由于在向 FLASH芯片写数据之前,“写使能”锁存器必须被设置,因此,本实施例步骤103-1发送的写 使能指令用于设置“写使能”锁存器,即,使WEL位为1。步骤103-2 微处理器查询第一个FLASH芯片的状态,即向该FLASH芯片发送读取 状态寄存器的指令,并接收该FLASH芯片返回的数据;在本实施例中,读取状态寄存器的指令具体为0x05+数据,用于查询第一个FLASH 芯片的状态。步骤103-3 将该FLASH芯片的片选线置为高电平,释放该FLASH芯片;步骤103-4 判断步骤103-2中接收到的数据是否出错,即判断数据中的WEL位是 否为1,并根据数据的出错与否相应地设置标志位;
在本实施例步骤103-4中,若判断得到接收到的数据中的WEL位不为1,则说明数据出错,将该FLASH芯片对应的标志位置为0,若判断得到接收到的数据中的TOL位为1,则 说明数据正确,将该FLASH芯片对应的标志位置为1。步骤103-5 微处理器判断是否已查询完所有的FLASH芯片的状态,若没有,则执 行步骤103-6,若是,则执行步骤103-7 ;步骤103-6 微处理器继续查询下一个FLASH芯片的状态,并在查询完成后返回到 步骤103-5 ;在本实施例中,微处理器上层应用查询下一个FLASH芯片的状态的方法与查询第 一个FLASH芯片的状态的方法相同,即与步骤103-2至步骤103-4所描述的内容相同,在此
不再重复。步骤103-7 根据标志位判断是否所有的FLASH芯片均正常,若否,则提示相应的 FLASH芯片不正常,否则执行步骤103-8 ;在本实施例步骤103-7中,根据标志位判断是否所有的FLASH芯片均正常的方法 和提示相应的FLASH芯片不正常的方法均与步骤112中所说的方法相同,在此不再重复。在本实施例中,步骤103-2至步骤103-7描述了依次查询所有的FLASH芯片的状 态,设置标志位的方法,其中微处理器按照管脚顺序依次查询各个FLASH芯片的状态,先查 询与序号为1的管脚相连的FLASH芯片,即第一个FLASH芯片,再依次查询第二个FLASH芯 片的状态、第三个FLASH芯片的状态......,直到查询完所有的FLASH芯片;步骤103-2至步骤103-7还可以为微处理器还可以随机对各个FLASH芯片的状 态进行查询,即先查询其中一个FLASH芯片的状态,设置标志位,再查询另一个FLASH芯片 的状态,并设置相应的标志位,直到查询完所有的FLASH芯片,其中查询各个FLASH芯片的 状态,并设置相应的标志位的方法与步骤103-2至步骤103-4中所说的查询第一个FLASH 芯片的状态,设置标志位的方法相同,并在查询完之后判断是否已查询完所有的FLASH芯 片的状态;或者,读取所有的FLASH芯片的数据输出管脚SO的电压值,并计算所有电压值并 联得到的并联电压值,若得到的并联电压值小于0. 3V或大于3. 0V,则表示得到的并联电压 为低电压或高电压,说明所有的FLASH芯片均正常,若得到的并联电压值在0. 3V至3. OV 之间,则表示得到的并联电压既不是低电压也不是高电压,说明不是所有的FLASH芯片均 正常,其中存在有工作异常的FLASH芯片,然后分别查询每个FLASH芯片的当前状态,设置 相应的标志位,其中分别查询每个FLASH芯片的状态,并设置相应的标志位的方法与步骤 103-2至步骤103-4中所说的查询第一个FLASH芯片的状态,设置标志位的方法相同,并在 查询完之后判断是否已查询完所有的FLASH芯片的状态。在本实施例中,还可以预先设定FLASH芯片的最高出错次数,则步骤103-2至步骤 103-7还可以包括当查询得到某个FLASH芯片不正常时,则判断该FLASH芯片的不正常次 数是否已达到了预先设定的最高出错次数,若否,则将该FLASH芯片的不正常次数加1,并 等待再次查询该FLASH芯片,若是,则将该FLASH芯片设置为坏芯片,并不再查询该FLASH芯片。步骤103-8 微处理器上层应用将所有的FLASH芯片的片选线置为低电平,选中所 有的FLASH芯片。
进一步地,在本实施例中,在微处理器与需要烧写的FLASH芯片建立连接之后,微 处理器烧写FLASH芯片之前,还可以包括检测FLASH芯片的步骤,具体如下步骤201 微处理器将该第一个FLASH芯片的片选线置为低电平,选择该FLASH芯 片;在本实施例中,微处理器对FLASH芯片进行检测是按照管脚的序号进行检测的,先检测与序号为1的管脚相连的FLASH芯片,即第一个FLASH芯片,再依次检测第二个 FLASH芯片、第三个FLASH芯片......,直到检测完所有的FLASH芯片。步骤202 向该FLASH芯片发送获取该FLASH芯片的ID的指令,并接收该FLASH芯片返回的数据;在本实施例步骤202中,获取该FLASH芯片的ID的指令的具体为0x9F,并且要获取的该FLASH芯片的ID具体为FLASH芯片的厂商ID,是FLASH芯片的生产商预先写入到 FLASH芯片中的。步骤203 将该FLASH芯片的片选线置为高电平,释放该FLASH芯片;步骤204 判断步骤202中接收到的数据是否出错,并根据数据的出错与否相应地设置标志位;在本实施例步骤204中,判断数据是否出错的方法具体为若接收到的数据为全0 或是全F,则此时数据出错,并且可以得出该FLASH芯片出现了故障,若接收到的数据不是 全0也不是全F,则将该数据与预先存储在该FLASH芯片中的型号表中的数据进行对比,若 在型号表中不能找到与该数据一致的数据,则此时数据出错,并且可以得出该FLASH芯片 型号不符合,若在型号表中能找到与该数据一致的数据,则此时数据正确,并且该数据即为 该FLASH芯片的ID ;其中,本实施例在内存中开辟了一小块空间作为各个FLASH芯片的标志位,具体 用于标志相应的FLASH芯片是否正常,在本实施例中,自定义当FLASH芯片不正常时,则将 该FLASH芯片对应的标志位置为0,当FLASH芯片正常时,则将该FLASH芯片对应的标志位 置为1,因此本实施例步骤204中,数据出错时,则将第一个FLASH芯片对应的标志位置为 0,数据正确时,则将第一个FLASH芯片对应的标志位置为1。步骤205 微处理器上层应用判断是否所有的FLASH芯片均已检测完毕,若没有, 则执行步骤206,若是,则执行步骤207 ;步骤206 微处理器上层应用继续检测下一个FLASH芯片,并在检测完成后返回到 步骤205 ;在本实施例步骤206中,微处理器上层应用检测下一个FLASH芯片的方法与本实 施例中检测第一个FLASH芯片的方法相同,即与步骤201至步骤204中所描述的内容相同, 在此不再进行重复。步骤207 根据标志位判断是否所有的FLASH芯片均正常,若否,则提示相应的 FLASH芯片不正常,否则执行以下烧写FLASH芯片的步骤;在本实施例中,根据标志位判断是否所有的FLASH芯片均正常的方法以及提示相 应的FLASH芯片不正常的方法与步骤112中所说的方法一致,在此不再重复。在本实施例中,步骤201至步骤207描述了依次检测所有的FLASH芯片,设置标志 位的方法,其中微处理器按照管脚顺序依次检测各个FLASH芯片,先检测与序号为1的管脚相连的FLASH芯片,即第一个FLASH芯片,再依次检测第二个FLASH芯片、第三个FLASH芯 片......,直到检测完所有的FLASH芯片; 步骤201至步骤207还可以为微处理器还可以随机对各个FLASH芯片进行检测, 即先检测其中一个FLASH芯片,设置标志位,再检测另一个FLASH芯片,并设置相应的标志 位,直到检测完所有的FLASH芯片,其中检测各个FLASH芯片,并设置相应的标志位的方法 与步骤201至步骤204中所说的检测第一个FLASH芯片,设置标志位的方法相同,并在检测 完之后判断是否已检测完所有的FLASH芯片;或者,读取所有的FLASH芯片的数据输出管脚SO的电压值,并计算所有电压值并 联得到的并联电压值,若得到的并联电压值小于0. 3V或大于3. 0V,则表示得到的并联电压 为低电压或高电压,说明所有的FLASH芯片均正常,若得到的并联电压值在0. 3V至3. OV之 间,则表示得到的并联电压既不是低电压也不是高电压,说明不是所有的FLASH芯片均正 常,其中存在有工作异常的FLASH芯片,然后分别检测每个FLASH芯片,设置相应的标志位, 其中分别查询每个FLASH芯片,并设置相应的标志位的方法与步骤201至步骤204中所说 的检测第一个FLASH芯片,设置标志位的方法相同,并在检测完之后判断是否已检测完所 有的FLASH芯片。在本实施例中,还可以预先设定FLASH芯片的最高出错次数,则步骤201至步骤 207还可以包括当检测得到某个FLASH芯片不正常时,则判断该FLASH芯片的不正常次数 是否已达到了预先设定的最高出错次数,若否,则将该FLASH芯片的不正常次数加1,并等 待再次检测该FLASH芯片,若是,则将该FLASH芯片设置为坏芯片,并不再检测该FLASH芯 片。以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此, 任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换, 都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围 为准。
权利要求
一种快速烧写两个以上SPI设备的方法,其特征在于,微处理器与所述两个以上SPI设备建立连接之后,所述方法包括选中所有的所述SPI设备,向所有的所述SPI设备发送写数据指令,再释放所有的所述SPI设备;查询所有的所述SPI设备的状态,设置标志位,并根据所述标志位判断是否所有的所述SPI设备均正常,若否,提示相应的所述SPI设备不正常;若是,继续进行数据通讯;其中,所述查询所有的所述SPI设备的状态,设置标志位的操作具体为选中其中一个所述SPI设备,向所述SPI设备发送查询当前状态的指令,并接收所述SPI设备返回的数据,再释放所述SPI设备,根据所述接收到的数据设置所述SPI设备对应的标志位,然后查询其他的所述SPI设备的当前状态,设置相应的标志位;或者,读取所有的所述SPI设备的数据输出管脚的电压值,并计算所有所述电压值并联得到的并联电压值,若得到的并联电压值为低电压或高电压时,则说明所有的所述SPI设备均正常,若得到的并联电压值既不是低电压也不是高电压时,则说明不是所有的所述SPI设备均正常,其中存在工作异常的SPI设备,然后分别查询每个SPI设备的当前状态,设置相应的标志位。
2.根据权利要求1所述的快速烧写两个以上SPI设备的方法,其特征在于,所述微处 理器与所述两个以上SPI设备建立连接之后,选中所有的所述SPI设备之前,所述方法还包 括所述微处理器检测所述两个以上SPI设备;
3.根据权利要求2所述的快速烧写两个以上SPI设备的方法,其特征在于,所述微处理 器检测所述两个以上SPI设备的方法具体为所述微处理器选择其中一个所述SPI设备;向所述SPI设备发送获取标识的指令,并接收所述SPI设备返回的数据; 释放所述SPI设备;判断所述接收到的数据是否出错,并设置标志位; 所述微处理器判断是否已检测完所有的所述SPI设备;若否,则继续检测其他所述SPI设备,并在检测之后再次判断是否已检测完所有的SPI 设备;若是,则根据所述标志位判断是否所有的所述SPI设备均正常; 若否,则提示相应的所述SPI设备不正常; 若是,则执行选中所有的所述SPI设备的步骤。
4.根据权利要求3所述的快速烧写两个以上SPI设备的方法,其特征在于,所述判断接 收到的数据是否出错,并设置标志位的操作具体为若判断得到所述接收到的数据出错,则将所述SPI设备对应的标志位置为出错标志; 若判断得到所述接收到的数据正确,则将所述SPI设备对应的标志位置为正确标志。
5.根据权利要求3所述的快速烧写两个以上SPI设备的方法,其特征在于,所述继续检 测其他所述SPI设备的方法与所述检测其中一个SPI设备的方法相同。
6.根据权利要求1所述的快速烧写两个以上SPI设备的方法,其特征在于,在选中所有 的所述SPI设备之后,向所有的所述SPI设备发送写数据指令之前,所述方法还包括向所有的所述SPI设备发送写使能指令; 查询所有的所述SPI设备的当前状态,设置相应的标志位。
7.根据权利要求6所述的快速烧写两个以上SPI设备的方法,其特征在于,所述查询所 有的所述SPI设备的当前状态,设置相应的标志位的操作具体为向其中一个所述SPI设备发送查询当前状态的指令,并接收所述SPI设备返回的数据;释放所述第一个SPI设备;根据所述接收到的数据设置所述SPI设备对应的标志位; 判断是否已查询完所有的所述SPI设备的当前状态; 若否,则继续查询其他所述SPI设备的当前状态,设置相应的标志位; 若是,则根据所述标志位判断是否所有的所述SPI设备均正常; 若否,则提示相应的所述SPI设备不正常; 若是,则选中所有的所述SPI设备;
8.根据权利要求6所述的快速烧写两个以上SPI设备的方法,其特征在于,所述查询所 有的所述SPI设备的当前状态的操作具体还为读取所有的所述SPI设备的数据输出管脚的电压值,并计算所有所述电压值并联得到 的并联电压值;若得到的并联电压值为低电压或高电压时,则说明所有的所述SPI设备均正常,然后 选中所有的所述SPI设备;若得到的并联电压值既不是低电压也不是高电压时,则说明不是所有的所述SPI设备 均正常,其中存在工作异常的SPI设备,然后分别查询每个SPI设备的当前状态,设置相应 的标志位。
9.根据权利要求7所述的快速烧写两个以上SPI设备的方法,其特征在于,所述根据接 收到的数据设置所述标志位的操作具体为判断所述接收到的数据中用于表示“写使能”锁存器的状态的数据位是否为1 ; 若否,则将所述第一个SPI设备对应的所述标志位置为出错标志; 若是,则并将所述第一个SPI设备对应的所述标志位置为正确标志。
10.根据权利要求1所述的快速烧写两个以上SPI设备的方法,其特征在于,所述根据 接收到的数据设置所述SPI设备对应的标志位的操作具体为判断所述接收到的数据中用于表示所述SPI设备是否处于“忙”状态的数据位是否为1 ;若否,则将所述第一个SPI设备对应的所述标志位置为出错标志; 若是,则将所述第一个SPI设备对应的所述标志位置为正确标志。
11.根据权利要求1所述的快速烧写两个以上SPI设备的方法,其特征在于,所述查询 其他的所述SPI设备的当前状态,设置相应的标志位之前,所述方法还包括判断是否已查询完所有的所述SPI设备的当前状态;若否,则查询其他的所述SPI设备的当前状态,设置相应的标志位;若是,则执行根据所述标志位判断是否所有的所述SPI设备均正常的步骤。
12.根据权利要求7或11所述的快速烧写两个以上SPI设备的方法,其特征在于,所述查询其他的所述SPI设备的当前状态,设置相应的标志位的方法与所述查询第一个SPI设 备的当前状态,设置相应的标志位的方法相同。
13.根据权利要求1或8所述的快速烧写两个以上SPI设备的方法,其特征在于,所述 分别查询每个SPI设备的当前状态的方法与所述查询第一个SPI设备的当前状态的方法相 同。
14.根据权利要求1所述的快速烧写两个以上SPI设备的方法,其特征在于,所述继续 进行数据通讯还包括选中其中一个所述SPI设备,向所述SPI设备发送读数据指令,并接收所述SPI设备返 回的数据,再释放所述SPI设备,根据所述接收到的数据设置所述SPI设备的标志位,然后 判断是否已读取完所有的所述SPI设备中的数据;若否,则读取其他的所述SPI设备中的数据,设置相应的标志位; 若是,则根据所述标志位判断是否所有的所述SPI设备均正常; 若否,则提示相应的所述SPI设备不正常; 若是,则继续进行数据通讯。或者,读取所有的所述SPI设备的数据输出管脚的电压值,并计算所有所述电压值并 联得到的并联电压值;若得到的并联电压值为低电压或高电压时,则说明所有的所述SPI设备均正常,然后 选中所有的所述SPI设备;若得到的并联电压值既不是低电压也不是高电压时,则说明不是所有的所述SPI设备 均正常,其中存在工作异常的SPI设备,然后分别读取每个SPI设备中的数据,设置相应的 标志位。
15.根据权利要求14所述的快速烧写两个以上SPI设备的方法,其特征在于,所述根据 所述接收到的数据设置所述SPI设备的标志位具体为判断所述接收到的数据与所述写数据指令写入所述第一个SPI设备中的数据是否相同;若否,则将所述第一个SPI设备对应的所述标志位置为出错标志; 若是,则将所述第一个SPI设备对应的所述标志位置为正确标志。
16.根据权利要求14所述的快速烧写两个以上SPI设备的方法,其特征在于,所述读取 其他的所述SPI设备中的数据,设置相应的标志位的方法与所述读取第一个SPI设备中的 数据,设置相应的标志位的方法相同。
17.根据权利要求14所述的快速烧写两个以上SPI设备的方法,其特征在于,所述分别 读取每个SPI设备中的数据,设置相应的标志位的方法与所述读取第一个SPI设备中的数 据的方法相同。
全文摘要
本发明公开了一种快速烧写两个以上SPI设备的方法,属于设备烧写领域。所述方法包括选中所有的所述SPI设备,向所有的所述SPI设备发送写数据指令,再释放所有的所述SPI设备,查询所有的所述SPI设备的状态,设置标志位,并根据所述标志位判断是否所有的所述SPI设备均正常,若否,提示相应的所述SPI设备不正常;若是,继续进行数据通讯。本发明提供的方法可以对多个同样的设备进行数据传输时可以同时向设备发送命令和数据,然后分别查询设备状态,可以提高SPI数据传输效率。
文档编号G06F13/20GK101807173SQ20101011522
公开日2010年8月18日 申请日期2010年2月26日 优先权日2010年2月26日
发明者于华章, 陆舟 申请人:北京飞天诚信科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1