博客首页 | 排行榜 |

davidwang1969的博客

个人档案
博文分类
有关STM32 UART的多机通讯  2010-06-12 17:43

如果想实现多机通讯,必须要实现:发送或者接收某一个固定地址或者广播地址。大家都知道51单片机采用附加的第九位TB8或者RB8实现上述功能。

本来以为STM32也具有上述功能,但仔细看了不尽然:

1:它本身有一个address寄存器,当接收到的数据(当然第九位应该为1)它首先要和这个address寄存器中的值进行比较,然后才能进入继续接收状态。

看下图:

为了实现和原有的51进行通讯,应该可以采用如下办法:

Address::1字节加mark

device ID:1字节,其实是slave address

length:1字节数据包的长度(只length后面的数据的长度,包括crc部分)

data 0~ datan:数据,最多255-2=253个字节

crc high byte:

crc low byte:

crc可以使用crc16;

第一个字节只起到把芯片的uart唤醒的作用,接收的设备在中断服务程序中再对接收到的device ID进行比较,如果是自己的地址或者广播地址,则继续接收后续的数据;否则退出中断,继续等待下一个address中断的到来。

由于没有STM32开发板,没办法测试,只能过一段时间有板子后再测试一下。

 

 

类别:默认 |
上一篇:如何获取系统的串口信息 | 下一篇:基于RTX的STM32F103系统开发
以下网友评论只代表其个人观点,不代表本网站的观点或立场