关于UART的地址位多机通讯

楼主
关于UART的地址位多机通讯
在学习MSP430F149的时候,关于多机通讯有两种模式,一种是空闲位多机模式,另一种是地址位多处理机模式
在地址位多处理机模式下,有一个位表示该字节是地址还是数据如下:起始位、数据位0---7,地址位,校验位,停止位。当地址位为1时,表示为地址,为0时表示该字节是数据。
请问,采用一台PC机,与多台单片机进行多机通讯时(PC机发指令,单片机上传数据),上位机如何实现这种地址位方式的通讯?即如何让单片机知道发的是地址还是数据?
初学单片机串行通讯,很是郁闷,希望好心的朋友指点一二,谢了!
1楼
上位机串口好似没有这个位,这个要懂得上位编程的哥们确认一下才知道。
如果对于MCU,有这个位可以方便地用于MCU与MCU之间的通讯便利。
2楼
"有一个位表示该字节是地址还是数据如下:起始位、数据位0---7,地址位,校验位,停止位。"
爱好者,上面是你做重点吧!从而表现出你连 位(Bit) 和 字节(Byte)可能都没有分清楚。

在SPI接口的通信中只有8个位的数据和时钟,而在UART(RS232,RS485)的通信中,传送一个字节需要:
1位起始位+8位数据(1个字节)+奇偶校验位+停止位 组成的。
只要你使用MCU的UART模块,除1个字节的数据为外的位都是由硬件完成的,你只需要配置好UART的相关设置就可以了。

然后就是包的定义了,当然包的最有单不是位啦,是字节:
开始标标+地址+数据+检验+结束
如下
0x02 0x13 ...... 0x?? 0x03
开始 地址 数据   检验 结束

包和包的之间区别在于判断收到字节与字节的间隔时间.

 
3楼
非常感谢两位朋友的回复!
您说的“硬件实现”的那些内容我也明白,我现在的意思是:如何利用串口调试精灵来与实验板的UART通讯,实验板采用“addredd-bit”方式设置成多机通讯方式。上位机发送一帧数据(其中含有地址,数据),实验板接收上位机发送的内容,当地址与自己相符时做出反应,地址不符时不预理睬。
我的问题是:串口调试精灵能完成类似这样的“address-bit”发送功能吗?如何实现?
4楼
串口调试精灵的校验方式,选择 Mark方式就可以了.
5楼
感谢tianxy的回复!因为我下载的串口调试精灵校验方式只有ODD,EVEN,NONE,所以过去根本无法进行多机通讯下address-bit方式的实验,看了你的回复,我又下了一个串口调试精灵,具有MARK校验方式。
按照用户手册中的原理介绍,感觉您说的那种方法可以用PC机向430板发送地址信息。等有空试一试。
多谢您了,朋友!

电脑版 Page created in 0.0625 seconds width 2 queries.