OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4571|回复: 3

RS485通訊問題,在片內要如何用軟體檢查是否有資料正在傳輸?

[复制链接]

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
发表于 2014-3-3 09:23:55 | 显示全部楼层 |阅读模式
因為原本UART是全雙工的,可以想發送就發送,轉成RS485後變成半雙工,在硬體上限制同時只能接收或發送,
變成我在有資料需要發送時,必須先確定目前沒有資料接收中才可以發送...


請問有RS485通訊經驗的大大,這部分都是怎麼做的??

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2014-3-3 09:46:07 | 显示全部楼层
平常 只接收不发, 
想发送的时候 ,等待总线空闲超过时间t再向外发

一般使用485总线, 只允许一个主机,多个从机, 这样主机以访问的形式 轮询从机,就可以避免总线冲突
缺点是 效率低。
回复 支持 反对

使用道具 举报

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
 楼主| 发表于 2014-3-3 09:55:20 | 显示全部楼层
回复【2楼】aleda303:
---------------------------------
感謝大大的回復 
這個方法我有想過...只是還要用掉一組timer...
用一個timer來計時接收閒置的時間,超過才可以發送...
請問大家都是這樣做的嗎?
回复 支持 反对

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2014-3-3 10:08:53 | 显示全部楼层
回复【3楼】civic7366:
---------------------------------
对  用定时器 

不过定时器可以兼用做其他功能。 不一定专用在这里、。



eg。


void TIM3_IRQHandler(void)
{
if (TIM3->GetFlag(TIMType::F_Update)) 
{
  TIM3->ClearFlag(TIMType::F_Update);

ModbusS.Chk_TimeOut(5); //Modbus(RS485)超时检测
msg_Ctl.Chk_TimeOut(5); //USART1通信超时检测
                。。。
}
}

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-14 07:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表