打印
[产品应用]

串口的多机通讯问题

[复制链接]
34|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
UART 支持多机通信方式。在该模式下,UART 总线上有一个主机和多台从机,每个从机有唯一的从机地址,通
信时主机会先发送地址帧对从机寻址,只有地址匹配的从机才被激活,接收随后主机发送的数据帧。
主机发送
多机通信模式下,主机需设置UARTx_CR1.PARITY 为1,配置为自定义校验,帧数据长度自动设置为9 位。
UARTx_TDR 寄存器的最高位决定主机发送地址帧还是数据帧,UARTx_TDR[8] 为1 表示主机发送的是地址帧,
UARTx_TDR[8] 为0 表示主机发送的是数据帧。
从机接收
多机通信模式下,从机需设置UARTx_CR1.PARITY 为1,配置为自定义校验,并设置UARTx_CR2.ADDREN 为1,
使能从机地址识别,从机硬件自动检测主机发送的地址与本机地址是否匹配。
如果地址匹配,从机会将接收到的地址帧保存到UARTx_RDR 寄存器中,UARTx_ISR.RC 标志位被硬件置位,同
时UARTx_ISR.MATCH 标志位被硬件置位,从机接收随后主机发送的数据帧。通信过程中,从机需
1. 应用程序在接收完成中断RC 里查询UARTx_RDR[8],以判断接收到的是地址帧还是数据帧。
2. 从机在发送数据帧时,需要将UARTx_TDR[8] 设置为0,以避免被其它从机当作地址帧。
如果地址不匹配,从机不会接收主机发送的数据帧,也不产生接收完成中断,已置位的UARTx_ISR.MATCH 标志
位将被清零。
从机地址与地址掩码
从机地址由UARTx_ADDR 寄存器配置, 从机地址应配置为唯一。UARTx_MASK 寄存器是地址掩码,
UARTx_MASK[7:0]中为‘1’的位对应的从机地址位参与从机地址匹配运算,为‘0’的位对应的从机地址位
则不参与从机地址匹配运算。
●● 当 UARTx_MASK[7:0]中全部位设置为‘1’时,即向 UARTx_MASK 寄存器写入 0xFF,则从机地址的 8 位
地址位全部参与从机地址匹配,主机能唯一识别到从机。
●● 当 UARTx_MASK[7:0]中部分位设置为‘0’时,对应的从机地址位不参与从机地址匹配,用以实现多个从
机响应主机发出的同一地址帧,即主机对多个从机同时寻址。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

231

主题

1754

帖子

4

粉丝