STM32L0开发笔记13: 485总线的收发切换时间

使用STM32进行485程序设计时,采用中断进行发数,这就意味着在发数的同时还需考虑收发切换时间。先看下程序:

	while (1)
	{	
		Target.HAL.CommonUart.SetWorkingMode(2);
		Target.HAL.CommonUart.SendData(Target.HAL.CommonUart.Buffer, 1);
		Target.Delayms(4);
		Target.HAL.CommonUart.SetWorkingMode(1);
		Target.HAL.WorkingLed.Turn();	
		Target.Delayms(100);
	}

程序执行完SendData后,会立刻执行后续的语句,如果没有4ms的延时,此时程序就会把485的状态切换到接收状态,则刚才要发送的数据是发送不出去的。

为了能将数据正常发送出去,执行SendData后,需延时1定的时间才可以,到底需要延时多长时间呢?这就要计算执行完SendData后,数据多长时间发送完毕。

我现在设置的串口波特率是2400bps,发送1字节的时间=1/2400*8=3.3ms。这是延时的最短时间,再加上其它的时耗,进行4ms延时比较稳妥。

如果是多个数据,则需用4ms*数据长度,这样就能保证发送的可靠性了。

 

原创性文章,转载请注明出处CSDN:http://blog.csdn.net/qingwufeiyang12346

猜你喜欢

转载自blog.csdn.net/qingwufeiyang12346/article/details/81412840
今日推荐