2014年4月30日 星期三

如何更新Spider L3S韌體

Spider L3S使用來自德州儀器CC3000的WiFi模組,原廠一直有針對各個版本的BUG釋出修正的韌體。最近又釋出新的1.26版,原本模組上韌體是1.24版本的話可以考慮更新。



本更新韌體修改自Github上的程式設計師cmagana所撰寫的CC3000Patch,由FunMaker Leon修改並移植到Spider L3S的Library與硬體上,經測試使用上並無問題。


環境需求:
1. Arduino Mega2560 * 1
2. Spider L3S * 1
3. 連接線數條

首先,在更新之前要注意的是,因為更新韌體時若環境不穩定,則有可能會讓Spider L3S變成磚塊,所以在更新前請先檢查傳輸線與Arduino的電源。

接下來就開始更新吧!

1.先到Github下載更新檔案

2.解壓縮更新檔案到資料夾下,在這邊示範的是1.12版本的韌體

3.設定Arduino IDE的工作目錄到更新韌體的目錄下,設定完成後請重開IDE




4.開啟Patch_1_12.ino,並設定Arduino與Spider L3S的接腳

unsigned char WLAN_CS = 24;
unsigned char WLAN_EN = 25;
unsigned char WLAN_IRQ = 21;
unsigned char WLAN_IRQ_INTNUM = 2;

5.將Arduino接上PC,然後執行Verify & Upload


6.開啟Serial Monitor

7.輸入0+Enter確認Spider L3S是否連接正確,與目前Spider L3S上的韌體版本

8.輸入4Y+Enter將Spider L3S的出廠時預設的Mac Address與無線參數儲存到Arduino上的EEPROM內

9.輸入6Y+Enter更新Spider L3S內部檔案系統的檔案表

10.輸入7Y+Enter將EEPROM內儲存的Mac Address與無線參數存回Spider L3S上

11.輸入8Y+Enter將新的驅動韌體寫入Spider L3S內

12.輸入9Y+Enter將新的網路韌體寫入Spider L3S內

13.輸入0+Enter確認是否可以讀取Spider L3S與韌體版本是否正確無誤


以上為更新Spider L3S韌體的流程,需要注意的是若在更新某個流程時發生錯誤,不要驚慌,先等待一段時間,若都沒反應則試著關掉Serial Monitor在重新打開,並且重新執行錯誤的流程,只要又能順利執行該流程,更新就不會出問題。

8 則留言:

  1. Uno板 在韌體更新不適用對吧!?
    我目前正在測試妳們這塊
    但都還沒成功連線上

    回覆刪除
  2. 是的,目前只能用Arduino mega2560更新,因為TI的韌體塞不太進Arduino Uno的Flash上面。不過您可以先確認一下手上Spider L3S的韌體版本是否為1.26,如果是的話是目前最新的韌體版本。

    連線不成功的話,您可以先試看看用SimpleHttpGet.ino的example,並且修改SSID跟Password為您要連線的AP,然後修改Spider_Connect的第一個參數,針對WiFi AP的加密去做修改再連看看可否成功。

    Spider_Connect的第一個參數的設定為,0 = OPEN, 1 = WEP, 2 = WPA, 3 = WPA2,請依據您AP使用的加密方式選擇適合的參數 :)

    回覆刪除
  3. 針對妳的建議,目前可以正常連線到該網並且讀取相關資料
    謝謝^^
    但目前 smartconfig.ino 這個範例 燒錄近UNO版時
    手機的SSID設定 再進行Start 那個按鍵時
    她都會一直在像是在連線的狀態,但是並沒連到的感覺
    關於 "搜尋網域裡的IP Address,即可連上"
    是用arduino那邊輸入網址嗎?

    回覆刪除
  4. 這部份我們漏寫了一小段,就是Device Name那個欄位要填上"SpiderL3"這串字串才會成功(不含雙引號),近期我們會將文件修正更新到網站上。

    搜尋網域裡的IP Address這塊目前還沒放到smartconfig的example內,如果有使用的需求新增下列程式碼:

    void Find_Me(void){
    /* Timer register */
    static unsigned long tmr = 0;

    /* Simple mdnsAdvisor function */
    char mdns_msg[10];
    memset(mdns_msg, 0, sizeof(mdns_msg));

    if(millis() > tmr){
    strncpy_P(mdns_msg, PSTR("FB_Like"), sizeof(mdns_msg));
    mdnsAdvertiser(1, (char*)mdns_msg, strlen(mdns_msg));
    tmr = millis() + 1000;
    }
    }

    並且在loop()內增加FindMe()的函式名稱
    void loop() {
    Find_Me();
    ....
    }

    以上程式的功能是每一秒鐘對網路上所有裝置廣mDNS的封包,所以只要手機有安裝搜尋mDNS裝置的APP,就可以找到SpiderL3S的IP Address。安裝的APP可以參考TI的網站,上面有推薦在Android與iPhone上的APP。
    http://processors.wiki.ti.com/index.php/CC3000_mDNS

    回覆刪除
  5. 我現在要更新Spider L3S 韌體
    腳位是以下接法
    EN <> 25
    VIO <> IOREF
    CS <> 24
    IRQ <> 21
    SI <> 51
    SO <> 50
    CLK <> 52
    但都沒有動作,請問是哪裡有問題,我誤解甚麼了嗎?
    unsigned char WLAN_CS = 24;
    unsigned char WLAN_EN = 25;
    unsigned char WLAN_IRQ = 21;
    unsigned char WLAN_IRQ_INTNUM = 2;

    回覆刪除
  6. 看起來都正確,沒有動作是指打開Serial monitor沒有畫面出來,還是按下0+ENTER確認韌體版本時沒有正確訊息傳出?

    回覆刪除
  7. 按下0+ENTER
    確認韌體版本時沒有回應

    回覆刪除
  8. 可以試著將之前能成功動作的APP將腳位修改為
    unsigned char WLAN_CS = 24;
    unsigned char WLAN_EN = 25;
    unsigned char WLAN_IRQ = 21;
    unsigned char WLAN_IRQ_INTNUM = 2;
    並將板子改成Arduino Mega2560,看看這樣之前的APP可不可以正常動作,
    也請用電表確認一下腳位是否有正確連接。

    回覆刪除