作者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/cn.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