发表于: 2016-12-27 14:55:35 | 显示全部楼层

我在几个项目中一直使用恩智浦FRDM-K64F板:价格合理,有USB,以太网,微型SD卡插座、用于蓝牙经典的接口和Nordic半导体nRF24L01 + 2.4 GHz收发器

nxp-frdm-k64f-board.png

但是我有好几次遇到了这样一个问题,在调试过程中,同时连接并且由主机供电时,该板工作正常,但如果是电池供电或者没有连接调试器,该板没有启动。我发现微控制器上的EzPort会导致启动问题。

EzPort是存在于一些NXP / Freescale Kinetis(例如K64F)、ColdFire +和ColdFire V2器件上的特殊串行接口。通过该端口,我可以用SPI兼容接口对器件编程:一种用法是使用该接口而不是正常的调试接口来编程微控制器,比如从另一个微控制器(见这个链接)。我没有为我的项目使用EzPort,但我发现,如果不正确处理,此功能可能会导致问题。

问题是,如果EzPort芯片选择(EZP_CS)在微控制器复位期间为低电平,它会进入特殊EzPort模式。问题是,EZP_CS线上的上拉可能由于线上的电容不能被足够快地拉起:

pins-during-power-on.png

黄色信号是复位线,紫色信号是EZP_CS:它不能足够快地上升,因此微控制器在上电期间将进入EzPort特殊模式。

禁用EzPort

和其他功能一样:如果没有使用它,那么禁用它! 所以解决方案是禁用EzPort功能。 该设置是FOPT(闪存选项寄存器)的一部分。

flash-option-register.png

在Processor Expert项目中,CPU组件属性中有一项该功能的设置(EzPort operation at boot)):

disabled-ezport-with-processor-expert.png

该操作将配置NV_FOPT寄存器:

  1. #define CPU_FLASH_CONFIG_FIELD \
  2. /* NV_BACKKEY3: KEY=0xFF */ \
  3. 0xFFU, \
  4. /* NV_BACKKEY2: KEY=0xFF */ \
  5. 0xFFU, \
  6. /* NV_BACKKEY1: KEY=0xFF */ \
  7. 0xFFU, \
  8. /* NV_BACKKEY0: KEY=0xFF */ \
  9. 0xFFU, \
  10. /* NV_BACKKEY7: KEY=0xFF */ \
  11. 0xFFU, \
  12. /* NV_BACKKEY6: KEY=0xFF */ \
  13. 0xFFU, \
  14. /* NV_BACKKEY5: KEY=0xFF */ \
  15. 0xFFU, \
  16. /* NV_BACKKEY4: KEY=0xFF */ \
  17. 0xFFU, \
  18. /* NV_FPROT3: PROT=0xFF */ \
  19. 0xFFU, \
  20. /* NV_FPROT2: PROT=0xFF */ \
  21. 0xFFU, \
  22. /* NV_FPROT1: PROT=0xFF */ \
  23. 0xFFU, \
  24. /* NV_FPROT0: PROT=0xFF */ \
  25. 0xFFU, \
  26. /* NV_FSEC: KEYEN=1,MEEN=3,FSLACC=3,SEC=2 */ \
  27. 0x7EU, \
  28. /* NV_FOPT: ??=1,??=1,??=1,??=1,??=1,??=1,EZPORT_DIS=0,LPBOOT=1 */ \
  29. 0xFDU, \
  30. /* NV_FEPROT: EPROT=0xFF */ \
  31. 0xFFU, \
  32. /* NV_FDPROT: DPROT=0xFF */ \
  33. 0xFFU

  34. __attribute__ ((section (".cfmconfig"))) const uint8_t _cfm[0x10] = {CPU_FLASH_CONFIG_FIELD};
复制代码

如果使用的是Kinetis SDK,请查找类似以下的内容(通常在startup* .S中):

  1. /* Flash Configuration */
  2. .section .FlashConfig, "a"
  3. .long 0xFFFFFFFF
  4. .long 0xFFFFFFFF
  5. .long 0xFFFFFFFF
  6. .long 0xFFFFFD7E
复制代码

总结

通常的项目已启用EzPort。 这可能会导致微控制器的上电顺序问题:如果复位期间EzPort芯片选择引脚为低电平,则微处理器将进入EzPort模式,这可能不是预期的。 解决方法是禁止将闪存配置寄存器中的EZPORT_DIS位置1。


参考连接:

■    基于KwikStik的EzPort编程器:http://cache.freescale.com/files ... e/AN4406.pdf?fpsp=1

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 47 | 回复: 68



手机版|

GMT+8, 2024-12-22 19:37 , Processed in 0.044781 second(s), 9 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表