硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2937|回复: 1
收起左侧

MODBUS模板,RS485收发控制端问题请教

[复制链接]

17

主题

32

回帖

83

积分

初级会员

积分
83
发表于 2017-4-8 11:30:50 | 显示全部楼层 |阅读模式
再使用MODBUS模板时,在发送完所有字节后

/* 数据bit位全部发送完毕的中断 */
    else if (USART_GetITStatus(_pUart->uart, USART_IT_TC) != RESET)
    {
        //if (_pUart->usTxRead == _pUart->usTxWrite)
        if (_pUart->usTxCount == 0)
        {
            /* 如果发送FIFO的数据全部发送完毕,禁止数据发送完毕中断 */
            USART_ITConfig(_pUart->uart, USART_IT_TC, DISABLE);

            /* 回调函数, 一般用来处理RS485通信,将RS485芯片设置为接收模式,避免抢占总线 */
            if (_pUart->SendOver)
            {
                _pUart->SendOver();
            }
        }
使用回调函数_pUart->SendOver();来将控制端置为接收模式。
请问这个控制前需要加入一定时间的延时吗?以保证在硬件上,所有字节已经完整发送完毕。对于不同的485芯片需要进行相应的时间调整吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106754
QQ
发表于 2017-4-8 11:33:48 | 显示全部楼层
不需要,加延迟的是是因为很多用户的程序没有将发生空中断和发送完成中断都加上。检测到发送完成中断后,做切换是没问题的,无需做延迟。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-4 11:37 , Processed in 0.183130 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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