请教stm32多机通信MARK校验和space校验

发布: 2010-1-26 13:18 | 作者: proco | 来源: StmFans思蜕盟 OPELC 自由电子联盟

因为小弟现在要用STM32串口2向一块点阵式LED屏幕发送数据,屏幕控制板有自己的地址,在通信的时候使用MARK校验和space校验,哪位大虾能讲讲stm32用于多机通信时,串口怎么发送MARK位校验啊?stm32的中文参考手册讲的不清楚,没看明白怎么将mark位发出去,谢谢大家!
binglin (2010-1-27 23:31:39)
一般来说:mark校验就是校验位始终=1,与之相反space校验就是校验位始终=0。
这两种校验方式可用于和多台从机通讯时,PC机发地址时用mark校验,发数据时就用space校验;从机接收时根据校验位判断是地址还是数据。

对于STM32来说,要实现这种方式也是很简单的,就是用9位数据、无校验位、1个开始位、一个停止位的模式来实现,第9位数据就是用来发mark校验及space校验,也就是说在发地址时第9位填写1,发数据时第9位填写0即可,如果STM32作从机,也是收到mark校验后就当收到的数据是地址数据,收到space校验就是数据了。
proco (2010-1-28 11:20:06)
我用这个方法来写第九位为1,但是好像从机没反应,USART1->DR = (1<<8) | Data;  // Data 包含8位数据
trinove (2010-1-28 12:04:45)
先确定一下,从机的程序是不是有问题