2014-10-21 22:36:28 [显示全部楼层]
9861浏览
查看: 9861|回复: 7

[选型&资源] bluno nano通过bootloader下载程序之bug

[复制链接]
前言:
为了bluno nano能够正常通过bootloader下载程序,花了一天时间,大致明白了串口是如何实现烧写的
大致原理是,软串口打开时,串口或者模拟串口芯片的某个和reset通过1uf的电容相连的管脚被拉低,单片机开始复位,bootloader检测串口管脚是否有数据,如果符合刷机条件,则开始刷程序,这个有一定的时序配合。
FL232RL,ATMEGA8U2,CP2102通过bootloader无需按reset按键刷程序都是一个道理,bluno nano没有串口芯片,但是CC2540做为蓝牙芯片本身就可以实现模拟串口,也就省去了,看原理图是通过P0.5来拉低复位的。


测试对象:
主机:BLE-link V1.1,从机:bluno nano V1.2

目前存在两个bug:

BUG1:+5V端,Vin端接入电源时,利用usb口和蓝牙的更新程序都无法成功,但COM始终存在并可以通讯
原因分析:在外接电源时,CC2540的P0.5管脚时序可能存在问题
这个问题有两种解释:
1、类似FT232R中的DTR信号没有和bootload检测端口的时间配合好,即P0.5对reset拉低时,已经过了bootload对串口端口的检测
2、P0.5没有发出低电平(软件问题或者硬件上地线有所问题)
解决办法:
在RST和GND管脚之间接入100~500K的电阻,这个有可能行,但是两个管家之间接入采集卡,下载就肯定没问题了,这个有待DFRobot分析。


BUG2:硬件上连接usb口到nano,5V电源连接到+5V端,然后软件串口打开,此时拔掉usb线和5V的电源,接着先后打开5V电源和插入usb线,然后软件串口关闭,再软件串口打开时,必须要先插拔usb线,才能软件串口打开
1、这个问题的尤其在蓝牙(对于bluno nano,蓝牙和硬件usb连接其实就是一回事,在CC2540的内部处理机制是一样的)下特别严重,有些时候对单片串口连接了之后,通常会忘了关闭软串口,而此时单片机断电了,接下来主机端的蓝牙就断了(类似单片机的usb线拔了一样),然后再断开软串口,再连接时,必须要插拔主机端的蓝牙了。
2、bug分析:个人猜测,主要问题再于CC2540内部程序对P0.5端口的处理,目前是第一次串口连接,reset会被拉低,之后都不会,这个有个好处就是除了第一次蓝牙或者usb线连接,单片机必须重启,其他不需要重启;但坏处在于,软串口打开时,单片机断电了,这个时候主从之间就矛盾了。
3、解决办法:在目前硬件的基础上个人还想不到,如果每次连接时,都将P0.5端口拉低,万一蓝牙断了,然后又连上,系统会不断重启,不知道DFRobot会怎么处理?


两个问题,产品看来还不是很稳定,请尽快解决呀。

zjdxfx  见习技师
 楼主|

发表于 2014-10-21 22:41:25

一方面需要通过usb口刷程序
一方面又需要通过这个usb连接串口并做一般通讯,期间又不想单片机重启
一方面还需要打开和关闭软串口正常
这有没有好的解决方案,高手出来提点下
回复

使用道具 举报

齐天大妖孽  中级技师

发表于 2014-10-22 11:37:02

多谢反馈:
BUG1: 待硬件确认
BUG2:  usb虚拟串口都是这个样子的,必须先点击关闭软串口,再插拔(复位),再点击打开。否则windows下任何usb转串口芯片都有这个问题。(linux下是否有问题没有试过)
第二个帖子:
为arduino下载程序的第一步就是将arduino复位,让其进入bootloader。所以下载过程中不重启单片机不现实啊。另外都要下新程序了,肯定要覆盖以前的,下载过程中老程序必须停止掉。
所以
1. 为arduino下程序必须通过2540为arduino复位。
2. 关闭打开主机usb串口,在主从连接情况下,会导致从机复位。(这个是为了完成无线下载机制设计的)
回复

使用道具 举报

zjdxfx  见习技师
 楼主|

发表于 2014-10-22 13:47:50

本帖最后由 zjdxfx 于 2014-10-22 14:01 编辑

第二个帖子:
对于bluno nano,建议多一组AT命令,可以关闭程序下载功能(出厂默认时打开),毕竟应用过程中无需再刷新程序

至于BUG2:
“usb虚拟串口都是这个样子的,必须先点击关闭软串口,再插拔(复位),再点击打开。否则windows下任何usb转串口芯片都有这个问题。”
特别是“再插拔(复位)”,你这句很对呀,在这个基础上蓝牙断线后不会自动复位就出现问题了;对于nano(没有蓝牙的那种),在打开软串口时会发送DTR然后实现自动复位,而bluno nano在第2次以后打开软串口时无法使单片机复位,这个就是问题所在。
回复

使用道具 举报

mickey  NPC

发表于 2014-10-22 17:42:21

bluno nano的USB转串口是完全模拟的普通Arduino的USB转串口,在每次软件打开串口的时候,是会复位的。
回复

使用道具 举报

Ricky  NPC

发表于 2014-10-22 21:12:31

纯技术贴,很有意义的讨论。
回复

使用道具 举报

mickey  NPC

发表于 2014-10-23 14:09:16

本帖最后由 mickey 于 2014-10-23 14:18 编辑

目前在测试楼主提到的无线下载的bug,由于手上没有V1.2版本,就使用Bluno Nnao V1.3做无线下载的测试,V1.2和V1.3的区别是天线部分不用其他完全一样,V1.2使用的陶瓷天线,无线距离较近,V1.3使用PCB天线,距离大大增加。
实验器材:主机:BLE-link V1.1,从机:bluno nano V1.3,可调实验电源
使用USB单独连接bluno nano可正常无线下载程序;使用USB连接bluno nano,同时电源接到5V或者VIN端,可正常无线下载程序;使用实验电源单独给VIN供电可正常下载程序;使用实验电源给5V端口供电有出现过无法下载的情况,认为可能是板子上5V电源的滤波电容比较少容易受到干扰。
等拿到V1.2版本再测试他们具体有什么不同。
回复

使用道具 举报

mickey  NPC

发表于 2014-10-27 11:33:09

今天拿到Bluno nano V1.2版本,测试了几个板子,有个别板子重现了楼主所说的问题,原因是P0.5管脚上的下拉电阻值太小,解决办法是去掉这个电阻即可正常使用。电阻位置如下图红圈所示:
bluno nano通过bootloader下载程序之bug图1
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail