众所周知,DA14580内置OTP,如需要OTA(空中升级)功能,则必须外挂FLASH或者EEPROM。
芯片ROM中存有bootcode,在上电后,boot code会去检测OTP中的前两个字节,如果是特定标志,则直接从OTP中将代码拷贝到SysRAM中并运行程序,整个启动OVER;如果OTP中前两个字节为zero,则会从以下顺序启动芯片:
SPI MASTER =》 UART =》 SPI SLAVE =》 I2C
其对应的IO口见下表:
检测OTP完毕后,会按照STEP1到6的顺序启动,一旦启动成功,则终止后续启动过程,如果失败,则进入到SETP7,然后是STEP8、9、10、11,如果都失败,则会重复STEP7-SETP11,重复5次失败,则只能通过JTAG启动。
关于启动的具体协议,可以查看官方对应的资料,内有详细说明,用户可以根据协议,选择合适的外部芯片,可以是市面上标准的FLASH、EEPROM,也可以是外部的MCU,只要遵循协议理论上都可以正常启动。
这边我们再来看看启动的功耗,启动时序见下图:
有上图可见,从上电到OTP启动到发出第一个广播,总耗时146ms,当然,如果从外部FLASH或者EEPROM启动,则情况会不一样。
我们再来看一下,不同启动方式在功耗、工作电压以及启动时间等方面的不同:
由上图可见,OTP在各方面表现都明显优于FLASH和EEPROM,但缺点也是很明显,不支持OTA;而FLASH的缺点就是电流最大,EEPROM的缺点就是启动时间慢。这些优缺点需要在设计硬件的时候提前考量。
从个人观点来看,FLASH在市面上的产品中应用是最多的,主要是针对需要OTA升级的产品,OTP其次,针对iBeacon等不需要升级的应用比较多,EEPROM再次之,还有一些通过外部CPU的boot方法也有使用。
总之,用哪种启动方法,取决于您对产品的定义,取决于成本限制以及功能需求。
最后要说明一点,虽然官方提供了不同的SPI、UART和I2C管脚供启动选择,但个人还是建议按照以下的参考设计去设计,这样会免去很多的麻烦,原因就不过多解释了。
众所周知,DA14580内置OTP,如需要OTA(空中升级)功能,则必须外挂FLASH或者EEPROM。
芯片ROM中存有bootcode,在上电后,boot code会去检测OTP中的前两个字节,如果是特定标志,则直接从OTP中将代码拷贝到SysRAM中并运行程序,整个启动OVER;如果OTP中前两个字节为zero,则会从以下顺序启动芯片:
SPI MASTER =》 UART =》 SPI SLAVE =》 I2C
其对应的IO口见下表:
检测OTP完毕后,会按照STEP1到6的顺序启动,一旦启动成功,则终止后续启动过程,如果失败,则进入到SETP7,然后是STEP8、9、10、11,如果都失败,则会重复STEP7-SETP11,重复5次失败,则只能通过JTAG启动。
关于启动的具体协议,可以查看官方对应的资料,内有详细说明,用户可以根据协议,选择合适的外部芯片,可以是市面上标准的FLASH、EEPROM,也可以是外部的MCU,只要遵循协议理论上都可以正常启动。
这边我们再来看看启动的功耗,启动时序见下图:
有上图可见,从上电到OTP启动到发出第一个广播,总耗时146ms,当然,如果从外部FLASH或者EEPROM启动,则情况会不一样。
我们再来看一下,不同启动方式在功耗、工作电压以及启动时间等方面的不同:
由上图可见,OTP在各方面表现都明显优于FLASH和EEPROM,但缺点也是很明显,不支持OTA;而FLASH的缺点就是电流最大,EEPROM的缺点就是启动时间慢。这些优缺点需要在设计硬件的时候提前考量。
从个人观点来看,FLASH在市面上的产品中应用是最多的,主要是针对需要OTA升级的产品,OTP其次,针对iBeacon等不需要升级的应用比较多,EEPROM再次之,还有一些通过外部CPU的boot方法也有使用。
总之,用哪种启动方法,取决于您对产品的定义,取决于成本限制以及功能需求。
最后要说明一点,虽然官方提供了不同的SPI、UART和I2C管脚供启动选择,但个人还是建议按照以下的参考设计去设计,这样会免去很多的麻烦,原因就不过多解释了。
举报