NavSpark是之前在indiegogo上集資成功的專案, 成品是Arduino+GPS, 32bit mcu, 並且體積相當小(大概就Arduino Nano的大小)
之後出了一片NavSpark mini, 是NavSpark的相容版, 硬體規格一樣, PCB更小, 當然pin out也比較少, 但是一些小專案應該夠用了, 而且還是內建GPS receiver (但是天線要外接)
現在原廠在推廣NavSpark mini, 索取一片只需要運費9usd, 非常划算.
我週五下單, 隔周三就到貨, 收的是國際運費, 但是用的是本地快遞(新竹寄到新竹), 就當作用運費贊助這間公司了(有附發票XD).
收到貨後有兩片PCB, 分別是NavSpark mini主板以及USB-UART轉板, 這片轉板是走Android手機常用的micro USB而非mini USB, 電平3.3V, 接上吃3.3V的NavSpark mini的剛剛好.
若是用自己的USB-UART轉板, 就要特別注意電壓的部分, 免得把NavSpark mini燒了
接著就是準備開發環境, 首選當然是Arduino IDE, 但是Arduino IDE原生是不支援NavSpark mini的, 你有兩種選擇:
- 從NavSpark官網下載支援的Arduino IDE 1.5.6 載點
- 從Boards Manager下載NavSpark的支援 NavSpark原廠說明
按照原廠接線圖接好, 就可以用Arduino IDE燒錄了.
剛玩了一下就出問題, 怎麼樣都燒不進去
如果燒錄時選擇不要GNSS library, 就不會有boot-loader(所以boot-loader是放在GNSS library裡面的....), 那下一次就無法讓Arduino IDE直接透過USB做燒錄的動作.
(我不懂這樣的邏輯是甚麼, 誰說不要GNSS就用不到boot-loader? )
The Non-GNSS library does not have boot-loader code within, thus program compiled with Non-GNSS library needs to run from recovery ROM mode to load code
NavSpark的boot方式有ROM Mode以及Flash Mode, 對應mcu韌體的載入來源.
如果沒有燒boot-loader到Flash, 就只能改用ROM Mode還原boot-loader,
為了改用ROM Mode, NavSpark mini的BOOT_SEL就身負這樣的重責大任
如果沒有燒boot-loader到Flash, 就只能改用ROM Mode還原boot-loader,
為了改用ROM Mode, NavSpark mini的BOOT_SEL就身負這樣的重責大任
BOOT_SEL: Default unconnected, internally pulled-high, Venus822A runs program from internal Flash memory. Whenconnected to GND, Venus822A runs program from internal ROM memory. When improperly written user code hangsthe system, it would be necessary connect BOOT_SEL to GND and recover from ROM mode to load corrected code.
所以short BOOT_SEL到GND, 就可以讓NavSpark mini從ROM memory拉回原本預先燒好的code, 當然boot-loader也包含在內, 只要遵循以下的步驟:
1. Connect BOOT_SEL pin to GND to run program off internal ROM memory.
2. Check state of GPIO4 and GPIO5, these two pins determine baud rate used for UART1 (USB) communication when
booting from internal ROM memory. See next section on how to set command and code upload baud rate to use
for Arduino IDE in case GPIO[5:4] connected to differ from default 2’b11.
GPIO[5:4] = 2’b00 for 9600
GPIO[5:4] = 2’b01 for 4800
GPIO[5:4] = 2’b10 for 38400
GPIO[5:4] = 2’b11 for 115200 (default)
3. Press the reset button and release it to restart the LEON3 processor.
4. Use Arduino IDE to do the code upload procedure with the correct binary code.
5. Once code upload completes, disconnect BOOT_SEL from GND to run from Flash memory, press the reset button
and release it to restart.
到此應該可以正常燒錄了?!
其中標示紅色的第二步驟最為重要, 由於GPIO4/5決定ROM Mode的baud-rate, 在不設定的狀況是被認定為接地的, 所以預設的baud-rate會是9600, 用Arduino IDE因為baud-rate設定不同事無法燒錄的.
因此需要在未上電的狀況下, 將GIPO4/5接在3.3V再上電, 確保GPIO[5:4]是在高電位讓baud-rate設定在115200bps.
若已經上電再去接GPIO4/5後reset是沒有效果的.
如果用不到GNSS library, 這樣每次燒錄就是要不斷的short BOOT_SEL, reset... 燒錄....
如果不差GNSS library佔掉的記憶體的話, 我看燒錄還是直接放GNNS library進去吧...
[附註] NavSpark Error code對應的意義(參考這裡):
1 - Can't open firmware binary file.
2 - Parameter error, unsupported baud rate.
3 - Can't open COM port.
4 - Sent download command but receive no ACK response
6 - Loader program sent binary file size command but receive no ACK response
7 - Sent firmware in 8KByte block but receive no ACK response
8 - No END command received, denoting Flash checksum error
[資源]
10 則留言:
謝謝分享使用心得!
BOOT_SEL 空接會從 Flash 模式跑起來, 不會認 GPIO4 與 GPIO5 的 baud rate 控制. 若 BOOT_SEL 接地, 開電或按 reset 鍵則會從 ROM 模式跑起來, 會認 GPIO4 與 GPIO5 的 baud rate 控制.
只要程式沒寫好當機都得把 BOOT_SEL 接地從 ROM 模式下載程式; 若程式沒當機, 就能 BOOT_SEL 空接直接從 Flash 模式下載程式.
比較 NavSpark-mini 與 NavSpark 線路, GPIO4 與 GPIO5 在 NavSpark-mini 板上少了 pull-up 電阻, 導致 BOOT_SEL 接地從 ROM 模式跑起來時 baud rate 變 9600. 若沒兩顆幾 K 歐姆的電阻能外掛 pull-high, 把 GPIO4 與 GPIO5 直接接到 VCC33, 從 ROM 模式跑起來 baud rate 就一樣是 115200 了.
LEON3 without GNSS Library 為了讓寫程式空間盡可能大, 只有 Arduino 的基本功能沒 loader. 要下載程式需要將 BOOT_SEL 接地從 ROM 模式做.
感謝NavSpark團隊的熱心回應, 幫助我適應NavSpark ^^
我想請教前輩關於購買上的問題
關於下訂單是直接向Navspark store 的商店內
直接創建帳戶
之後下單就能夠取得嗎?
並且還會附有發票?
因為小弟我專題製作想使用此電路板
但不知道如何購賣
並且希望器材能夠開出發票
好讓教授核銷
拜託前輩幫忙解說
或是提供其他管道
感謝你!!
yes , 不過核銷可能會要求三聯, 這點就要您跟對方確認是否可開三聯發票了
蝦這個我就不太清楚了@@
向他們訂購
他們不是國外廠商嗎?
完蛋了我是菜英文阿
最多只會右鍵"中文翻譯"...
他們是台灣廠商啊 要不然怎麼會有統一發票~~ XD
先問問核銷需不需要一定要三聯吧, 如果只要二聯就沒這麼多問題了.
如果要三聯再打電話請問一下廠商, 統一發票那張圖上面有電話.
真的嗎
好港動阿QAQ
我打了電話是直接轉到留言信箱電話
老師說那個都不會回應的
看來是無望~
到商場發個留言就可以了,中文也可以。
http://navspark.mybigcommerce.com/contact-us/
因為boot-loader會占用一組UART來接收與發送command,GNSS模式本身就會占用一組來輸出NMEA,而non-GNSS模式就都開放給user使用所以就沒有支援boot loader了。畢竟NavSpark-mini只有唯一的一組UART,non-GNSS時還被占用可能會不太方便。
張貼留言