uniapp做网页,uniapp做小程序怎么实现下拉刷新

  

  引言   

  

  随着嵌入式系统小型化的趋势,减少用于设备间通信的I/O引脚数量的市场需求正在增加。微芯片技术公司开发的Uni/O总线正好满足了这一需求。这种低成本且易于实现的解决方案只需要一个I/O引脚来实现主从设备之间的通信。   

  

  1 UNIO 总线介绍   

  

  11 UNIO 总线的特点   

  

  Uni/o总线具有以下特点:   

  

   Uni/O总线采用曼彻斯特编码,只用一根信号线SCIO就可以实现数据的串行传输和同步控制。   

  

   Uni/O总线是单主总线。主设备负责肩部运动和控制公交车上的所有操作,并决定公交车的工作速度。主器件通常由单片机、ASIC等服务。   

  

   Uni/O总线具有双向通信能力。有两种工作模式:主机发送,从机接收和从机发送,主机接收。   

  

   Uni/O总线速度10 ~ 10~100kbps。   

  

   Uni/O从设备必须具有空闲模式和待机模式,或保持模式。   

  

  12 UNIO 总线的帧格式   

  

  121 位值定义   

  

  由于采用曼彻斯特码,其比特值由周期中间的信号跳变方向决定。Uni/o总线规定由高到低的跳变为0,由低到高的跳变为1。   

  

  122 帧结构   

  

  在Uni/O总线上通信时,指令、数据和地址的传输是以字节为单位的。传输字节时,高位在前,低位在后,紧接着前一位传输下一位,位与位之间没有延迟。之后,该字节必须发送一个主从响应序列。图1显示了常用的基本字节帧结构。   

  

  (1)主应答位   

  

  由主设备发送,值为1或0。1被称为MAK,MAK通知从设备指令执行将继续;0称为NoMAK,用于结束当前指令,然后从设备可以在必要时启动相应的内部处理。   

  

  (2)从应答位   

  

  由被选作通信对象的从属设备发送。当该位为1时,称为SAK,SAK表示前面的操作已经成功完成;当它不为1时,称为NoSAK。在选择从设备之前,因为没有设备可以应答,所以从设备应答位应该是NoSAK。选择从设备后,NoSAK用于指示通信中发生了错误。   

  

  此外,Uni/O总线还考虑了对主设备中断功能的支持。当主器件以保持模式与从器件通信时,如果主器件在下一个MAK位周期持续拉低SCIO,则从器件进入保持模式。为了保持在保持模式,SCIO应该保持在低电平。当从机处于保持模式时,主机可以中断其它I/O设备。中断处理后,它可以通过发送MAK来终止保持过程,并继续之前的通信。图2显示了包含保持过程的字节帧结构。   

  

  13 UNIO 总线的命令序列   

  

  Uni/O总线的命令序列是指为完成一个命令的执行,需要在总线上传输的各种信号和字节帧的有序组合。在Uni/O总线系统中,一条指令的执行过程必须包括总线准备、主从同步、从设备选择、指令传输和指令执行。   

  

  131 总线定义的信号   

  

  (1)待机脉冲   

  

  待机脉冲是主设备将SCIO驱动到高电平状态并保持该状态超过600 s所形成的脉冲信号,待机脉冲通常用于通知总线上的所有从设备进入待机模式,也可以用于提前终止一条指令的执行。当执行一条指令时,如果它是第一条指令,或者如果要选择的从设备不同于前一条指令,或者如果前一条指令的执行有错误,则该指令的执行必须从产生待机脉冲开始。   

  

  (2)TSS信号   

  

  TSS信号是主器件将SCIO驱动到高电平状态并保持该状态10 s以上而形成的脉冲信号,一条指令执行成功后,如果要执行下一条指令来操作同一个从器件,后一条指令执行过程的第一步只需要产生一个TSS信号,不需要产生待机脉冲。这样沟通效率会更高。   

  

  132 特殊功能字节帧   

  

  (1)起始头   

  

  机头用于使从设备进入正常工作模式,并同步从设备中的时钟。报头由一个持续5s以上的低电平脉冲组成,后跟一个8位代码“01010 101”。的所有从机都可以从起始报头中得知位周期的长度,并据此调整内部时钟,以实现主从同步。启动后的主机响应位应为MAK,从机响应位通常应为NoSAK。   

  

  (2)地址帧   

  

  该地址用于选择总线上的特定从设备进行通信。从机地址有两种:8位和12位,由4位串行码和4位或8位从机码组成。8位地址的传输只需要一个地址帧。通常,它的反应序列由MAK和SAK组成。12   

位地址的传输需要两个字节帧:高地址字节帧和紧跟其后的低地址字节帧。正常情况,低地址字节帧中的应答序列应该由 MAK 和 SAK 组成,高地址字节帧中的应答序列则由 MAK 和 NoSAK 组成。

  

(3)指令帧

  

指令帧用于传送指令,由指令编码和应答序列组成。指令及其编码往各种 UNI/O 从器件中定义。指令帧中的主应答位应根据指令是否要求传输其他数据字节确定。当指令要求传输其他数据字节时,该位为 MAK,否则为 NoMAK。从应答位正常情况下为 SAK。

  

1.3.3 UNI/O 总线的命令序列

  

图 3 所示的是用于执行 8 位地址从器件指令的命令序列。其中字节帧的数量在总线规范中未进行限制,只要前一个字节帧中的主应答位为 MAK 就表示期望传输下一个字节帧。不过,字节帧的实际数量必须符合从器件指令的使用规范。在此前提下,可以由用户程序根据其功能决定。用于执行 12 位地址从器件指令的命令序列如图 4 所示。

  

2 UNI/O 从器件与单片机的接口设计

  

11XXX 系列 EEPROM 是 Microchip 技术公司最新推出的、支持 UNI/O 总线协议的存储器产品。下面就以该存储器的使用为例,详细介绍 UNI/O 总线系统的应用设计方法。

  

2.1 硬件设计

  

图 5 给出了 11XXX 系列 EEPROM 与单片机的接口原理图。图中,SCIO 引脚上接一个 20 kΩ的上拉电阻是为了确保总线在上电/掉电序列期间以及未被驱动时处于空闲状态。VCC 和 VSS 之间接入一个 0.1μF 的去耦电容是为了滤除 VCC 上的噪声。

  

2.2 软件设计

  

2.2.1 UNI/O 存储器 11XXX 的操作指令

  

11XXX 系列存储器共有 9 条操作指令,其指令编码和功能描述如表 1 所列。

  

2.2.2 UNI/O 存储器 11XXX 的高级特性

  

11XXX 器件除了具有 EEPROM 存储器的基本特性、支持 UNI/O 总线协议外,还有以下高级特性。这些高级特性也是编写接口程序的基本依据。

  

(1)内置了一个状态寄存器

  

状态寄存器可以用来提供状态信息和片内数据的保护控制。其各位的功能定义如下:

  

①Bit0。为写进行位 WIP,用于表明 11XXX 是否忙于写操作。当它为 1 时,表明正在进行写操作;为 0 时,表明没有进行写操作。此位只读。要编写高效率的写存储阵列程序,可采用 WIP 查询来及时检测写周期的结束。

  

②Bit1。为写使能锁存器位 WEL,用于表明写使能锁存器的状态。当它为 1 时,锁存器允许存储阵列无保护块和状态寄存器的写入操作;当置为 0 时,禁止写入操作。只能使用 WREN 指令来将此位置 1,但会在上电或成功执行了以下指令之一时复位。这些指令包括:WRDI、WRSR、WRITE、SETAL 和 ERAL。

  

③Bit2~Bit3。是块保护位 BP0 和 BP1,用于表明当前哪些块被写保护。这些位可以由用户通过 WRSR 指令进行设置。这些位是非易失性的。表 2 给出了利用 BP0 和 BP1 对存储器进行分块保护的方案。

  

④Bit4~Bit7。为无关位,读出时为 0。

  

(2)包含一个读操作地址指针

  

在进行存储阵列读操作时,渎操作地址指针会在每个字节发送后自动指向原地址加 1 的存储单元。当到达最高地址时,如果主器件仍然发出 MAK 选择继续读取,则地址指针的值会翻转回到 0x00 地址处。在上电后,读地址指针会保持上一次访问的存储单元的地址。

  

(3)支持页写功能

  

用 WRITE 指令可以向指定地址的存储单元或者指定地址开始的存储器区域写入内容任意的数据。不过,在写多个存储单元时,必须限制在单个物理页面内写。物理页边界从页大小(16 字节)整数倍的地址开始,结束于页大小的整数倍减 1 的地址。如果 WRITE 指令试图跨越物理页边界进行,其结果是将超出页边界的数据写回到当前页的开始,即覆盖先前存储的数据,而不会如期望的那样写到下一贞。

  

2.2.3 UNI/O 存储器 11XXX 的读写程序

  

上电之后,由于 11XXX 处在关断模式,而且总线处于高电平空闲状态,所以主器件必须先在 SCIO 上产生一个高到低再到高的脉冲,使 11XXX 从关断模式退出进入空闲模式,这样 11XXX 才能按照命令序列所规定的流程响应总线上的其他信号,接收主器件发来的指令,并按指令要求完成规定的操作。

  

(1)写程序流程

  

图 6 是写存储阵列中未保护区块的程序流程。图中发送指令的操作可通过调用发送指令子程序来完成。图 7 给出了发送指令程序流程。要写存储阵列中受保护的区块,只需在执行 WREN 指令之前,用 WRSR 指令对 BP0、BP1 进行相应的设置,以暂时解除待写区块的保护,并在程序的最后再用 WRSR 指令对它们进行恢复即可。要全地址空间置 1 或擦除,必须先解除对整个存储阵列的保护并使能写操作,再发送 SETAL 或 ERAL 指令,指令发送之后用 NoMAK 来启动内部写操作,内部操作完成之后恢复对存储阵列的保护即可。

  

(2)读程序流程

  

随机读存储阵列的程序流程是:先发送 READ 指令,再发送待读单元地址。先高地址字节,后低地址字节。然后,从器件就会将该地址中的数据送到总线上,主器件收到第一个数据字节后,若还要读取更多的数据,可以发送应答信号 MAK。之后,从器件用 SAK 应答,并送出下一个数据字节。若要结束读操作,主器件只要发送 NoMAK 即可。

  

要从存储阵列的当前位置读取数据可用 CRRD 指令来进行操作,其程序流程除了不需要传送存储器单元地址外,其余操作步骤与 READ 相同。

  

结语

  

UNI/O 总线只有一根信号线,对 I/O 端口的占用最少,可有效地减小嵌入式系统的体积并降低产品成本,具有广阔的应用前景。

相关文章