我现在在调一个通信方式mdb/icp~ MDB协议的串行位格式为:1个起始位,8个数据位,1个方式位(地址字节的方式位被置1,数据字节的方式位被置0,)与1个停止位,共11位。
而在传输过程中:
主机发送数据的格式是:地址+N个数据~也就是说第一个字节的方式位置1 ,而N个数据的每一个方式位为0.
从机回复的时候,N个数据+地址字节(实际上就是最后一个字节)N个数据的每一个方式位为0,最后一个字节的方式位置1 。
我做的是主机,在这种情况下~我应该对stm32单片机怎么操作,才能实现这种方式的发送和接收数据?
按照以上的通信说法我有一下几个疑问:
1、初始化串口:(波特率什么的省略,主要是对校验的设置)
//校验设置
UART1->CR1|=(1<<12); //E 8 1
UART1->CR1|=(1<<11); //wake = 1 被地址标记唤醒
UART1->CR1|=(1<<1); // RWU:接收唤醒 1:接收器处于静默模式。
这三条命令:我感觉第一条应该没有问题,第二和第三知道设置的对不对?没有闹清楚到底是怎么设置的?
2、发送的时候怎么是msb(方式位)置1,怎么清零msb(方式位)
3、接收方式的时候,怎么正确接收数据后,还能判断msb(方式位)是0 还是1
我通过看手册 感觉以上的mdb通信方式和
差不多~不知道这样理解,对不对~
香主指点一下小弟~~~谢谢了~ |