NRF51822模块无法识别问题解决办法
我知道没图是没人看的,所以随便瞎截图了几张。
对于很多新手朋友们,或许可能还不是很了解jtag相关的一些调试所需的必须电路,就像很多人不喜欢用stm32的硬件i2c,而是喜欢软件io模拟,就算是使用了硬件i2c,也是阻塞式等待,和软件模拟并无二,也许会说硬件i2c那么多bug,为什么还要用它?那么i2c从机模式可能就没法好好用了~也许有人还会反驳说用io中断也依然可以模拟出i2c从模式,嗯,那就当我啥也没说。
其实我想说的是,就像i2c一样,很多情况下,芯片会选择将总线上拉电阻外置,所以就像stm32的i2c,即使选择了复用推挽输出,依然还是需要上拉电阻的。不扯远了,上面的只是一个伏笔,接下来是正题。
最近想研究一下蓝牙,我关注nordic 公司已经有一段时间了,出了nrf51之后接着是nrf52,蓝牙5.0,低功耗,很不错,今年又上市了iot的芯片nrf9160,公司也有过要做iot的想法,不过就是太贵了,前两天做了一块nrf51822的pcb,准备试试水,焊完一片之后,怀着激动心情连接上jlinkv8,但是很遗憾,一盆冷水就泼过来了,芯片无法被识别,然后就开始研究为什么swd模式不能被识别,去nordic 官网下载了nrf go studio,最新的1.6,也是无法识别,旧版本1.21也是无法识别,mdk5中也是根本不识别,还以为是没焊接好,所以拆下来再焊接了两边,依然不行,怀疑是不是芯片被焊坏了,,,无奈之下又焊了一片,但是依然还是无法识别,然后开始检查电路设计是不是有错误,反复检查之后确认无误,百思不得姐~~
无奈之下打开示波器,开始观察示波器捕获到的总线波形,发现swclk始终处于低电平(0.1v以下)swdio在未连接jlink时是3.3v,连接jlink后是1.6v左右,不管jlink如何扫描,总线上没有任何波形,严重怀疑jlink是不是有问题,所以又下单购买了一个stlink,到货之前在网上搜索时有人就说stlink无法烧写nrf51822,又后悔一秒钟。
但是再难也不能放弃,既然swdio电压下降,就用一个3.3k的电阻上拉到3v左右,swclk也是用3.3k电阻上拉到1.6v左右,这时jlink的红灯亮起表示芯片复位了,再扫描jlink时,总线终于有信号了,但是信号并不正常,swdio上的信号幅度从3.3v到2.4v左右,这和没信号没区别,swclk上的信号幅度是从1.2v到0.1v,或许这信号对某些芯片是可以识别的,但是,依然无法识别,所以这么做并不能解决问题。
随后找来10k的电阻,分别上拉,下拉,均无效,一直不见起色,几乎没有破解的办法,再上网搜索一波,偶然间发现有人提到jlink的1脚并不是输出,而是输入参考,给内部jtag io的电平提供参考,将信将疑的将1脚短接到2脚上,再加上swdio上加上拉10k,果不其然,毫无悬念的识别了。
上面说了一大堆,重点其实是:
标准jtag的管脚部分可参考如下,下图是标准stlink的管脚定义:

参考如下,正常情况下,一般clk应为是主机发出的信号,单片机作为从机,clk线是无权控制的,而jlink等编程器,对clk线有所有权,所以不需要上拉电阻,可以适当添加旁路电阻。其他信号线,尤其是io信号线,因为控制权可变,所以就像i2c的情况一样,需要外部上拉,否则可能无信号。

在具备了上拉条件时无法识别情况,除了检查线序是否错误以外,尤其关注一点是jtag20pin接口上的1脚,他是jtag输出信号的参考电压输入,并不是输出脚,所以需要将其接到目标板上的与芯片一同供电的vcc上,一般是3.3v,如果采用jlink2脚往外供电,也可将1和2脚直接短接!

至于之后的烧录s110等,网上一大把,就不再说了,主要是先解决识别问题,另外进过验证还发现一件事:
使用nrf go studio时,使用stlink连接nrf51822时,nrf go studio软件是不能识别到芯片的,主要原因是软件并没有stlink的驱动,如果烧录协议栈,选择用nrf go studio烧录时务必使用jlink烧录,而用mdk5等烧录程序等时,可以使用stlink,选择sw模式即可识别并烧录芯片。撸主已经验证!
NRF51822模块无法识别问题解决办法的更多相关文章
- python各个模块循环引用问题解决办法
当项目中的模块过多,或功能划分不够清晰时会出现循环引用的问题,如下 有两个模块moduleA 和 moduleB: #moduleA from moduleB import b def a(): pr ...
- python 调用pymysql模块遇到\转义问题解决办法
1.问题情况 本来存入mysql的是字典,有汉字,由于python版本是2.7,所以在json的时候把我的值变成了unicode,那么在调用pymysql的时候,mysql给我转义取消了. 存之前: ...
- Open Sans字体兼容问题解决办法[font-face]
参考:http://www.tantengvip.com/2014/11/open-sans/ 1.font-face使用方法 font-face是CSS3中的一个模块,主要是把自定义的Web字体嵌入 ...
- Windows XP系统下添加任务计划常出现问题解决办法
Windows XP系统下添加任务计划常出现问题解决办法 计划任务就是让电脑在指定的时间内执行指定的动作(计划动作),这些动作可以是一个程序,也可以是一个批处理,但是至少是可以运行的(通俗一些就是双击 ...
- ASP+Access UTF-8 网页乱码问题解决办法
用ACCESS数据库和ASP做网站时用UTF-8编码有时会出现乱码,再者网页出错或者刷新页面后就是乱码,如果数据库取值乱码在开头加上<%@LANGUAGE="VBSCRIPT" ...
- 易通电脑锁2007V6.3.3.3无法卸载问题解决办法
易通电脑锁2007V6.3.3.3无法卸载问题解决办法把原版文件拷贝回去.bat@echo offcolor 2Fecho 该批处理会把易通电脑锁2007版原文件拷贝回去,解决易通电脑锁卸载时出现的运 ...
- Sublime Text 3 若干问题解决办法
1.在高分屏下中文文件夹名显示异常问题解决办法 新买了个2K的屏,有些中文文件夹名全部变成了“口口”. 在“preferences” - "设置-用户" 添加 "dpi_ ...
- C盘不能新建文件的问题解决办法
C盘不能新建文件的问题解决办法 主要症状: 1.C 盘文件不能修改2.C 盘不能新建文件3.总之就是只能读取不能,写入和修改这样对于平时操作造成了极其的不方便~~~复制文件到C 盘会提示:错误0×80 ...
- iOS常见异常Exec_Bad_Access问题解决办法
iOS常见异常Exec_Bad_Access问题解决办法 在iOS开发中,经常遇到Exec_Bad_Access异常,导致程序奔溃问题,一般这个问题都是因为过早的release对象,然后又对该 ...
随机推荐
- 什么是Annotation
Annotation 被称为注解,在Java开发中是相当常见的,通过注解,我们可以简化代码提高开发效率.例如Override Annotation,这个应该算是在开发过程中使用最多的注解了.注解(An ...
- Git的相关知识
什么是git Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理.Git 是 Linus Torvalds 为了帮助管理 Lin ...
- MapReduce-CombineTextInputFormat 切片机制
MapReduce 框架默认的 TextInputFormat 切片机制是对任务按文件规划切片,如果有大量小文件,就会产生大量的 MapTask,处理小文件效率非常低. CombineTextInpu ...
- 制作OpenStack使用的windows镜像
1 安装vmware14 2 创建ubuntu-desktop-16.04虚拟机 选择自定义安装 选择ubuntu-16.04-desktop.iso 内存要大于2G,推荐4G. 磁盘要大于50G 关 ...
- docker学习------记录centos7.5下docker安装更换国内源的处理过程
一.centos7.5下更换阿里源 1.装好centos7.5镜像,将yum源更换为阿里源 第一步:刚出的centos7.5是解析不到阿里的东西的,所以找了台centos7.4,下载一些包 (1) 下 ...
- 统一配置管理 windows linux ide maven gradle docker 【渐进式备份更新~~】
Tips 系统盘放轻量配置(%HOMEPATH%),仓库盘放大容量文件(自己维护一份 语义化目录结构.txt). Tips 系统盘放 不经常写操作的文件(除轻量配置) ...
- python序列化与反序列化(json与pickle)
在python中,序列化可以理解为将python中对象的编码格式转换为json(pickle)格式的字符串,而反序列化可以 理解为将json(pickle)格式的字符串转换为python中对象的编码格 ...
- Navicat连接阿里云服务器Linux下的Mysql
用Navicat连接阿里云ECS服务器上的MySQL数据库 今天用navtive连接阿里云服务器(Linux)的数据库时,老是连接不上,并且报10060错误,要通过以下两个步骤解决: 1.先进入l ...
- 添加一个非模态对话框在revit中
RequestHandler handler = new RequestHandler(); ExternalEvent exEvent = ExternalEvent.Create(handler) ...
- ubuntu server 16.04 安装过程中提示无法安装busybox-initramfs
这个问题在安装desktop版本时是不会出现的,只有server才有这个问题. 出现这个问题与硬件平台无关,不管是虚拟机还是物理机都会出现,解决的办法是在安装开始界面选择English,后面Langu ...