论坛

MSP430 RS485复用通信

开始于 Burak_aB 在4年前 6回复 最新回复4年前204浏览
大家好,
我想与msp430进行rs485通信。此通信将有2个以上的连接。因此,我需要为此使用可寻址的代码。这个地址是在uart配置中还是仅与数据一起发送就足够了?以及我们该如何应用以不与数据冲突?您是否有与此主题相关的示例代码?
[-]
回覆者 蒂姆·韦斯科特2017年3月11日

首先,只要硬件和软件支持,您就可以使用该寻址方案进行任何操作。

其次,如果您的硬件支持,则在此类系统中使用9个数据位很方便,而MSB用作地址标志位。某些UART硬件支持此功能,方法是设置UART休眠的模式,除非它看到标志位,或者看到标志位具有正确的地址-但这因芯片而异,因此您必须去购买支持您想要的功能的微控制器。

对于不支持此功能的控制器,某些支持使用“固定奇偶校验”的功能,即可以将硬性校验位设置为硬或硬,并且存在各种级别的硬件支持以在出现“奇偶校验错误”时中断不匹配。同样,这是购买合适的硬件的问题。

您始终可以使用具有确定性数据包结构的8位协议,并将地址嵌入数据包的前导字节中。不利的一面是,为了保持同步,您必须处理每个数据包,即使您不关心消息,也要处理所有节点上的处理器。同样,某些UART硬件支持“中断检测”,其中很长一段时间全为1或全为零(很长一段时间,我不记得哪个),随后是活动,将使UART唤醒。同样,这取决于UART硬件,因此您需要购物。

自从我在使用该系统的系统上工作以来已经有很长时间了,因此我可能不会正确记住关键字,而是在“ fieldbus”上进行搜索-我认为这是在此方案成为使用之前使用该方案的通用工业协议的名称。普通使用以太网。

[-]
回覆者 蒂姆·韦斯科特2017年3月11日

我只是看了TI的《 MSP430x2xx系列用户指南》。看起来该系列的MSP430至少支持9位数据(它们称为“地址-位多处理器格式”)和中断检测(它们称为“空闲线多处理器格式”)。

请注意,仅仅因为一个MSP430系列支持这些功能,就不能保证其他系列都支持-您始终必须查看计划使用的特定芯片上的数据,并查看它是否具有应用所需的mojo。 。

还要注意的是,当您使用RS-485时,UART硬件可能支持也可能不支持发送使能线。在最佳情况下,UART将自动为整个消息启用发送器,并在完成消息后取消启用。在最坏的情况下,UART不会提供这种支持,但是它将具有内置的FIFO,在发送FIFO为空时没有中断,或更糟糕的是,软件根本无法知道何时为空。同样,建议仔细阅读数据表,甚至可能提早建立原型。

[-]
回覆者 Burak_aB 2017年3月12日

我使用msp430f5325和此支持  特征 “地址-位多处理器格式”

我的代码是否与Rs232 uart配置相同? 但是我会只将地址值发送到要发送的第一部分吗? I 找不到任何相关的示例代码。我的意思是我需要写一个 协议(如握手协议)和我的配置(如rs232配置)和ı只是在发送数据时发送adres和数据。 和 我想从计算机上查看数据,我们需要c#程序 我可以选择拥有地址的选项。互联网上没有这样的例子 。 只是, 有些程序显示uart输出。

[-]
回覆者 蒂姆·韦斯科特2017年3月13日

这不是Internet上示例代码丰富的事情。您必须从所需的行为开始,然后从那里开始。

大多数代码与使用RS-232时的代码相同。

尝试在“半双工串行协议”上进行网络搜索-希望会弹出有用的信息。

[-]
回覆者 蜘蛛肯尼2017年3月13日

您没有说与您通信的内容,但是如果您编写的代码可以在连接到RS485的所有设备上运行,那么您就可以控制。

将地址字节作为第一个字节发送是一个非常明智的想法。 BUT考虑以下情况:i)您多久发送一次数据? ii)如果其中一个“接收方”错过了第一个字节怎么办?您希望将来如何?

我做了很多RS485工作。我一直做的是发送一个标头字节,然后是一对地址字节,然后是有效负载,然后是终结符。例如,在我的系统上用于设置放大器输入通道的命令如下所示:$ 01SC01 \ n

接收者可以丢弃所有字节,直到接收到“ $”,从而确保它从传输的开始开始。然后,它可以读取接下来的两个字节,并且它们与地址匹配,然后读取其余的字节,直到终止符为止,如果不是简单地再次丢弃所有内容,直到下一个'$'。


请记住,使用RS485时,您需要一条GPIO线来使能发送器。避免将trsnamitter保持启用时间超过必要的时间,即在物理上发送完最后一个“位”后立即将其释放。

如果这是您首次尝试RS485,并且不需要任何更高级的地址,那么您可能不必开始使用9位模式了。

[-]
回覆者 前卢维安2017年3月14日

Modbus协议是1/2双工协议,可以在RS232或RS485上运行(或者现在也可以在TCP / IP上运行)。它确实很老,但是那里有很多文档,包括关于PIC和PSoC的实现(我知道,我自己写了一个),而MSP430上很可能有一个文档-谷歌搜索它。它可以为您提供足够的结构化信息,以使您继续进行。

Modbus协议规范位于公共领域,可以在以下位置找到

http://modbus.org/tech.php