2012-04-02 63 views
1

當兩臺計算機連接到USB瀏覽器(我發送數據並收到它)時,我已經成功地使用了Xbee API模式。但是,當我嘗試對連接到pic33微控制器的無線電進行同樣的操作時,我收到了奇怪的結果。這裏是我的設置:Xbee API模式問題C

一的XBee無線,路由器,連接與PC 而一的XBee無線電,統籌,附有pic33單片機

微控制器發送廣播數據。下面是API命令:

7E 00 13 10 01 00 00 00 00 00 00 00 00 FF FE 00 00 48 65 6C 6C 6F FD 

7E:分隔
00 13:長度
10 01:API幀類型和幀ID
00×8:協調器的64位地址
FF FE: 16位網絡地址
00 00:選項和braodcast半徑
48 65 6C 6F 6C:數據(你好)
FD:校驗

同樣的命令可以很好地處理與PC連接的兩個無線電,並且產生XCTU窗口。

我已經調試了整個傳輸代碼,並且它應該發送命令。我使用PICKIT3在在線調試中檢查了TXREG寄存器。但是XCTU窗口沒有收到任何內容。

我玩過不同的延遲,試過連續的單傳輸和我能想到的所有東西,但我在XCTU窗口中完全沒有任何東西。我想知道的是,我必須做些什麼才能使其發揮作用?

+0

您確定,您在PIC中正確配置了RS232端口嗎? Xbee模塊是否響應其他請求?像獲取狀態...等等。 – werewindle 2012-04-02 16:41:19

回答

1

很可能這是一個電子程序,而不是一個編碼問題。如果XBee能夠與PIC通信,它將表現正確。您有以下問題空間:

1)您的代碼沒有正確傳輸數據包(您已經調試過)或者, 2)PIC和PC之間的電子通信路徑存在一些問題的XBee

這裏有一些事情要問自己,並驗證連接到XBees當微控制器:

1)如何連接您的XBee你的PIC? XBee串行I/O是3.3v。確保PIC的邏輯電平也爲3.3v

2)您將PIC設置爲什麼波特率?你的PIC的時鐘源是什麼?它是內部振盪器,RC還是晶振?確保振盪器的定時值與數據表匹配以獲得預期的波特率。

3)你可以從XBee讀取嗎?如果您從連接到PC的模塊發送數據包到連接到PIC的模塊,什麼會到達您的微型?你能接收整個數據包嗎?有沒有丟失字節?你是否收到垃圾(再次,這可能表明波特率不匹配)?

4)您是否啓用了硬件流量控制(XBee參數D6和D7)?如果是這樣,你怎麼連接這些引腳?確保它們的邏輯電平設置正確,以便XBee不會永久處於流量控制狀態,因此阻止它從PIC接收字節。您可能想要禁用流量控制,直到您獲得基本的通信工作。

您可能希望通過從等式中完全消除XBee來分割和征服硬件問題空間,並專注於確保您能夠按照預期順序進行傳輸。如果你有一個電平轉換器,你可以將它連接到PIC上,然後將PIC連接到PC上。您可以驗證您是否可以閱讀您正嘗試從PC終端程序發送的消息。如果您足夠幸運擁有邏輯分析儀,則無需連接邏輯分析儀即可執行相同的測試。

祝你好運!

+1

我還會提到,將微處理器連接到XBee時,意外更換Tx/Rx引腳很容易。確保PIC的發送到XBee的DIN引腳。 – tomlogic 2012-04-03 19:05:58

+0

謝謝,我會嘗試你提到的和更新的東西! – OnlinePanCakes 2012-04-04 22:30:52

+0

我擺弄了一些檢查,它的工作。 :) – OnlinePanCakes 2012-04-12 16:28:54

0

Digi已經發布了,這是一個ANSI C代碼的開放源碼(MPL 2.0)庫,用於在API模式下與XBee模塊進行通信。它支持POSIX(Linux,BSD,Mac OS X,Cygwin),Windows(MinGW/MSYS),DOS(OpenWatcom)和一些嵌入式平臺。雖然它還不支持PIC平臺,但您可能想要嘗試編寫必要的粘合代碼(主要是串行例程)以在您的硬件上使用它。

這對編寫桌面應用程序通過XStick或XBee USB適配器與嵌入式設備通信也很有用。