我的開發場景:
(圖:MF071027001.JPG)
張欣的筆記本由於沒有串口,所以串口方面的內容並沒有寫,這裡我優先測試的了串口部分內容,我的筆記本本身也沒有串口,我是擴充了一個PCMCIA串口卡,這種方式的串口比USB轉串口要好一些,特別是連接需要RTS/CTS控制的設備。
Digi指導作業書上關於連接串口的步驟是這樣的:
1、 MFDeploy選擇菜單中選擇”Serial”這一項,我的當前串口是“COM
2、 用串口連接線連接PC和MF開發板
3、 確保MFDeploy程序唯一使用COM1口
4、 重啟開發版
5、 單擊Ping按鈕
6、 如看到“Error:No response from device”,則繼續單擊Ping按鈕
7、 出現“Pinging … TinyBooter”則表示通信成功
(圖:MF071027000.JPG)
很遺憾,我試了多次都是失敗。
我打開超級終端程序,參數配置如下:115200,無校驗,8個數據位
重啟開發板,串口在5~6秒鐘會收到如下信息:
(圖:MF071027004.JPG)
在出現“Program found at 0x
然後關閉該程序,重新打開MFDeploy程序,在此之前,先打開串口監控程序“PORTMON.EXE”,注意MFDeploy程序單擊ping按鈕的串口操作如下:
(圖:MF071027005.JPG)
這時候仍然是失敗,但是請注意串口參數是:115200,偶校驗,8個數據位
關上該程序,打開串口調試程序,參數設置為:115200,無校驗,8個數據位
MFDeploy程序串口會發送如下四種指令(每個指令會重復發出6遍)
4D 53 70 6B 74 56 31 00
4D 53 70 6B 74 56 31 00 28 03 FA
4D 53 70 6B 74 56 31 00 2E E0
4D 53 70 6B 74 56 31 00
在出現“Program found at 0x
如果把參數修改為:115200,偶校驗,8個數據位,則出現亂碼,digi開發板對命令也沒有什麼響應了。
到了這裡我只能得出如下結論:MFDeploy程序有問題(但看指導書上,圖例是用串口通信成功了的)或digi開發板的默認串口參數可修改。
由於MFDeploy串口參數無法設置,我用.Net反編譯程序反編譯MFDeploy程序,不過效果不是很好,大部分代碼可以正確反編譯出來,但工程無法正確編譯,所以也就無法通過源碼修改串口參數了。
有時間再深入研究,同時也希望這方面有研究的朋友,提出自己的看法。
下面該通過網口和digi開發版進行連接了,我的筆記本有wifi和普通網卡兩種,如張欣的文章所說,同時連接是有問題的,所以只好關閉wifi連接了。
(圖:MF071027002.JPG)
多次切換到tcp/ip選項,它會自動探測digi開發版的ip地址,我探測到的ip地址為169.254.128.66,這時候如果你單擊“ping”按鈕,是無法連接成功的,你必須修改你ip地址為同一個網段,才能連接成功。連接成功後直接單擊“plug-in”菜單中的參數配置選項,修改digi開發板的ip地址,如下圖:
(圖:MF071027003.JPG)
注意:DHCP 的Enable要取消掉,然後在單擊update按鈕,修改後,記得修改你PC的ip地址,好與新修改的ip為同一個網段。
開始調試程序,相關配置請參見張欣的文章,我這裡偷懶省略了J
默認的示例程序是三個燈連續亮的,我們修改為5個燈。相關代碼修改如下:
BlinkingLed led0 = new BlinkingLed((Cpu.Pin)0, true);
BlinkingLed led1 = new BlinkingLed((Cpu.Pin)1, true);
BlinkingLed led2 = new BlinkingLed((Cpu.Pin)2, true);
//------------
//新加代碼
BlinkingLed led3 = new BlinkingLed((Cpu.Pin)5, true);
BlinkingLed led4 = new BlinkingLed((Cpu.Pin)6, true);
while (true)
{
led0.On = false;
led0.Blink(200);
Thread.Sleep(200);
led0.StopBlink();
led1.On = false;
led1.Blink(200);
Thread.Sleep(200);
led1.StopBlink();
led2.On = false;
led2.Blink(200);
Thread.Sleep(200);
led2.StopBlink();
//------------
//新加代碼
led3.On = false;
led3.Blink(200);
Thread.Sleep(200);
led3.StopBlink();
led4.On = false;
led4.Blink(200);
Thread.Sleep(200);
led4.StopBlink();
}
注意,你直接編譯運行,你會發現,還是三個燈交替閃爍,這是因為下面還是原先的程序,必須要單擊菜單中的“部署”選項,先把程序部署下去,這時候在調試就是5個燈交替閃爍了。
好,今天先寫到這裡,後續的文章我會陸續詳細介紹串口、網口、IO入等等相關操作。