[问题] 关于UART通讯的两个小问题

楼主: icetofux   2016-08-10 08:36:35
最近开始尝试使用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把我送的东西当成给它的资料而产生奇
怪的行为?
以上两个问题希望能有先进分享经验,谢谢。
作者: chuegou (chuegou)   2016-08-10 08:45:00
第一个protocol 看你应用 自己要用自己定也行只是要考虑未来有人跟你要protocol来连线第二个 这叫virtual com port 是usb的装置类型 要改可能连PC driver都要改?问题2-2 因为USB有product id(pid) 很难撞到我是觉的modbus之类的工控协定满常见的 但是要架也很搞刚如果是一般要用 你提到的就ok了 再加个checksum之类也行
作者: a9d9   2016-08-17 20:50:00
你可以去了解半导体通讯协定,对你有帮助

Links booklink

Contact Us: admin [ a t ] ucptt.com