【STM32开发】-RS485相关

一、RS485相关

        RS485属于物理层,为2线,半双工、多点通信的标准。用缆线两端的电压差值表示传递信号。

        特点:

1、RS485电气特性:逻辑“1”以两线间的电压差为+(2-6)V表示,逻辑“0”以两线间的电压差为-(2~6)V 表示。与TTL电平兼容。

2、传输速率高。10 米时,RS485 的数据最高传输速率可达 35Mbps,在 1200m 时,传输速度可达 100Kbps。

3、抗干扰能力强。RS485 接口是采用平衡驱动器和差分接收器的组合,抗共模干扰能力增强。

4、传输距离远,支持节点多。RS485 总线最长可以传输 1200m 以上(速率≤100Kbps)一般最大支持 32 个节点,如果使用特制的 485 芯片,可以达到 128 个或者 256 个节点,最大的可以支持到 400 个节点。

例如:某款STM32103的RS485传输采用SP3485芯片作为收发器。支持3.3V供电,

关键函数:

//发送len个字节
void RS485_Send_Data(u8 *buf,u8 len)
{
    RS485_TX_EN=1;//设置为发送模式
    HAL_UART_Transmit(&USART2_RS485Handler,buf,len,1000);//串口 2 发送数据
    RS485_RX_CNT=0;
    RS485_TX_EN=0;//设置为接收模式
}
//RS485查询接收到的数据
void RS485_Receive_Data(u8 *buf,u8 *len)
{
    u8 rxlen=RS485_RX_CNT;
    u8 i=0;
    *len=0;//默认为 0
    delay_ms(10);//等待 10ms,连续超过 10ms 没有接收到一个数据,则认为接收结束
    if(rxlen==RS485_RX_CNT&&rxlen)//接收到了数据,且接收完成了
    {
        for(i=0;i<rxlen;i++)
        {
            buf[i]=RS485_RX_BUF[i];
        }
        *len=RS485_RX_CNT; //记录本次数据长度
        RS485_RX_CNT=0;//清零
    }
}

使用两个开发板,下载程序编译后就可以进行数据收发了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值