作者icetofux ()
看板ASM
標題[問題] 關於UART通訊的兩個小問題
時間Wed Aug 10 08:36:35 2016
最近開始嘗試使用USB to UART或是藍芽 to UART傳輸資料給MCU, 目前已經可以正確的
讓PC跟MCU傳輸/接收資料了,不過要完成應用還有一些部份沒什麼經驗要怎麼做,想跟
大家請教一下。
問題一:
我研究了一下arduino的serial bootloader,發現它是用接收到的第一個字元來決定接
下來做什麼事情,比方說:
第一個字元接收到'A'就依下一個接收到的字元回送不同的version資訊。
第一個字元接收到'U'就把下兩個接收到的byte當成address。
依此類推,並且回送都會以0x14開頭、以0x10結尾。
如果我要做自己的應用,像是上述這些定義我隨自己喜好定義就好嗎?還是有一定的規
範呢?比方說回送資料以0x14開頭、以0x10結尾可以依自己喜好改成其他數值之類的?
問題二:
UART device在PC上會被顯示成COM 1、COM 2...COM N,編號似乎沒有一定規則,我要
怎麼知道我的device是哪個COM port呢?目前想到兩種方案:
1. 在PC UI上讓使用者自己選COM port。
arduino IDE就是採用這種方式,不過這有點不人性化,事實上我就常常忘記選或是選
錯。對一般電腦知識較淺的使用者而言要開裝置管理員找到正確的COM port也不是這麼
容易。
2. 在device裡設計一個回送自己ID的命令,然後PC端軟體執行時對所有COM port的
device送出詢問命令,只要回答的ID正確就表示它是我要通訊的device。
這方法克服方法1的缺點,可是針對所有COM port送東西這點好像有點怪怪的,如果保
護做的不夠周全,感覺有可能會有某個device把我送的東西當成給它的資料而產生奇
怪的行為?
以上兩個問題希望能有先進分享經驗,謝謝。
--
使用MCU快10年了才第一次用上UART...XD
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.72.212.239
※ 文章網址: https://webptt.com/m.aspx?n=bbs/ASM/M.1470789397.A.8F3.html
※ 編輯: icetofux (211.72.212.239), 08/10/2016 08:38:27
1F:推 chuegou: 第一個protocol 看你應用 自己要用自己定也行 08/10 08:45
那有一般常用的protocol可以參考嗎?比方說protocol名稱之類的,我想找資料來看。
2F:→ chuegou: 只是要考慮未來有人跟你要protocol來連線 08/10 08:46
3F:→ chuegou: 第二個 這叫virtual com port 是usb的裝置類型 要改可能 08/10 08:48
4F:→ chuegou: 連PC driver都要改? 08/10 08:48
5F:推 chuegou: 問題2-2 因為USB有product id(pid) 很難撞到 08/10 08:51
※ 編輯: icetofux (211.72.212.238), 08/10/2016 10:59:36
6F:推 chuegou: 我是覺的modbus之類的工控協定滿常見的 但是要架也很搞 08/10 12:17
7F:→ chuegou: 剛 08/10 12:17
8F:推 chuegou: 如果是一般要用 你提到的就ok了 再加個checksum之類也行 08/10 12:39
9F:推 a9d9: 你可以去了解半導體通訊協定,對你有幫助 08/17 20:50