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模式即可識別並燒錄芯片。擼主已經驗證!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM