在拿到Ingchips的第一块demo板,或者自己layout并焊接了第一批调试板,想要下载程序进行调试时,常常遇到如下问题:
按照操作手册进行下载,下载器(Ingchips Image Downloader)却没有反应。
成功将固件下载入线路板,却发现搜索不到BLE信号。
事实上,造成这些问题的原因可能有很多种,可以按照下面提供的思路进行排查。
如果是自己焊接的板子,硬件可能存在虚焊、短接等问题,如果是demo板则基本不存在此类问题,可以调过此步骤。
如果发现芯片使用官方提供的Downloader无法烧写,此时,先做第一项检查:
将线路板的TX、RX、RST、INT(对应916为IO0)、VCC、GND连接到Ingchips提供的功能板上,然后按下Load,看串口是否有打印。
注:按下Load,相当于在拉高INT的情况下复位RST引脚,如果没有功能板,可以通过同样的时序操作实现Load操作。
如果按下Load后,出现上图所示打印信息(这是916系列的打印信息,918系列打印信息为UartBurnStart
),则硬件主体运行正常,可能存在部分IO口虚焊,但是电源、晶振部分电路已经运行,可以跳过硬件检查,进行第二部分的软件操作。
如果没有Ingchips官方的功能板,也可以使用普通的串口板连接芯片的TX、RX、VCC、GND四个引脚,之后通过一定方式在INT引脚拉高的情况下RESET引脚复位(拉低并释放),与上面所述使用功能板并按下Load的效果是一样的,应该能看到打印。
执行上面的操作后如果串口没有任何打印信息,可以交换TX与RX,如果依然没有,则可以确定硬件存在问题。
可以通过两个步骤排查。
首先,测量电源电压,在3.3V供电的情况下。
对于918系列芯片,测量Vdcdc,未烧写程序时Vdcdc大约在0.95V左右,则属于正常。
对于916系列芯片,可测量下面几个电压:VDCDC约为1.8V,Vcore约为1.2V,Vf约为1.5V,Vaon约为1.15V。
如果电压正常,则测量高频晶振。
916的晶振可以测到24M波形(用万用表可以测到约0.7V的直流偏置),则晶振工作正常。
916的晶振可以测到48M波形(用万用表可以测到约0.37V的直流偏置),则晶振工作正常。
通常来说,如果上面两项检测中电压和晶振都正常,芯片的焊接就问题不大,如果在按下Load
后还是看不到串口信息,则最大可能是串口(芯片的TX)虚焊。
如果电压不正常,则基本上可以断定芯片焊接存在问题(在排除原理设计有问题的前提下)。
如果电压正常,晶振不正常,则比较大的可能是晶振焊接问题,或者晶振引脚虚焊,或者晶振本身问题(损坏,或者频率不对等)。
通过第1步的判断,基本可以排除芯片的焊接问题。
在按下“load”后,串口可以看到打印,也就可以正常进行烧写。
但是烧写后,可能发现使用手机无法搜索到设备的广播,此时,首先要检查代码是否正常运行。
建议使用最常用的Peripheral Throughput
例程进行排查。
烧写完成后,不要急于查看是否能搜到广播,先检查串口打印,如果复位芯片(拉低RESET引脚并释放)后,串口有如下打印,则说明程序可以在芯片中运行。
如果看不到类似打印,则基本可以断定下载的程序在芯片中无法正常运行,可以做如下几项检查。
首先打开Peripheral Throughput
例程,并进行编译,确保编译的结果正常,没有报错。
未经编译的工程可能烧写文件不对。
目前Ingchips的芯片有918x和916x两个系列。
两个系列的代码无法兼容,查看自己的demo板或者芯片属于哪个系列的,然后核对工程应用的芯片系列,将鼠标放到工程上,右下角会显示工程当前所属的系列。
如果不是一个系列,可以通过右键菜单的Change Series
更换芯片的系列,更换后进行右键菜单的Check & Fix
,再进行编译,然后再进行下载。
这里要注意,918x系列还有9187和9188两个型号,适用于9187的代码可以再9188上运行,适用于9188的代码却无法再9187上运行。
因此建议在验证时统一将代码切到9187上。
大部分运行BLE的工程烧写时都需要烧写协议栈(platform)和APP两个文件,只烧写一个文件会导致无法运行,烧写的协议栈和APP版本不一致也会导致无法运行。
因此对于一个自己刚拿到的工程,可以首先Check & Fix
两次,然后编译。之后使用右键菜单进行下载,且注意下载时把协议栈和APP都勾选上。
保证了上面三步检查正确,基本可以保证代码与芯片适配。
如果通过第2步检查,通过观察芯片串口正常的打印信息,判断芯片已经正常运行,但是依然搜索不到BLE芯片,则进行这一步的检查。
匹配网络焊接不良,或者器件焊接错误,或者与天线的接触不良,可能会导致芯片发射的BLE信号很弱。
射频匹配网络有如下器件,L3,L1,C14如果焊接不良或者焊错器件,会对信号强度影响比较大。
如果是因为这些器件的焊接问题,BLE信号会比较弱,但是通常还是会有,将手机靠近线路板还是可以搜到微弱(RSSI很低)的信号。
如果手机靠近后可以搜到微弱信号,基本就可以判断问题出在射频匹配网络的焊接上(当然也有可能是天线设计问题)。
如果程序可以正常运行,但是信号一点也搜不到,则比较大的可能是射频频偏较大。
可以用频谱仪、综测仪测试信号的频偏进行测试。
频偏可以通过高频竞争的电容进行调整,对于916系列,还可以通过PLATFORM_CFG_24M_OSC_TUNE
进行内部电容的调整。
platform_config(PLATFORM_CFG_24M_OSC_TUNE,0x08);
配置参数的范围在0x00-0x3F之间。