搜索
bottom↓
回复: 2

请教STM32串口多机通讯的地址标记唤醒问题,请大神解答

[复制链接]

出0入0汤圆

发表于 2013-4-29 15:03:29 | 显示全部楼层 |阅读模式
    STM32从机配置如下
        USART_InitStructure.USART_BaudRate = 9600;
        USART_InitStructure.USART_WordLength = USART_WordLength_9b;
        USART_InitStructure.USART_StopBits = USART_StopBits_1;
        USART_InitStructure.USART_Parity = USART_Parity_No ;
        USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
        USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
        USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
        USART_ITConfig(USART1,USART_IT_TC,ENABLE);
        USART_Init(USART1, &USART_InitStructure);
    USART_Cmd(USART1, ENABLE);
        USART_WakeUpConfig(USART1,USART_WakeUp_AddressMark);//静默模式设置 1、USART_WakeUp_IdleLine 空闲总线唤醒//2、USART_WakeUp_AddressMark  地址标记唤醒
        USART_SetAddress(USART1, 0x1);           //设置地址  从机1
        USART_ReceiverWakeUpCmd(USART1,ENABLE);          //使能接收唤醒

。。。。。。同样配置
USART_SetAddress(USART1, 0x3);           //设置地址  从机2

每次分别发送u16 send_data[8]={0x101,0x02,0x03,0x04,0x05,0x06,0x07,0x08};
                  u16 send_data4[8]={0x103,0x04,0x05,0x06,0x07,0x08,0x09,0x10};
可以找到从机且接收准确,现在有这种现象:第一次从机接收到0x101(或0x103)唤醒后接收数据正常,然后过5s我直接发送u16 send_data3[8]={0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x10};从机不能接收数据,但发送u16 send_data4[8]={0x103,0x04,0x05,0x06,0x07,0x08,0x09,0x10};从机可以正常接收数据
问题如下:
1、第一次发送数据,串口地址正确唤醒后,是不是一直是唤醒状态,根据现象貌似不是
2、如果每次都需要唤醒,请问唤醒保持时间
请大神指点,谢谢

出0入0汤圆

发表于 2013-11-5 12:32:16 | 显示全部楼层
    你解决了我的问题。
    现在我来解决你的问题。一点上
    1、从第一次接收到最高位为1,且地址与自身设置的地址开始,UART被唤醒,从静默模式回到正常模式,并接收这个数据;
    2、只要后续的数据的最高位不为1,UART就保持正常接收状态;但是,一旦接收到空闲帧,UART又回来静默模式。这样,又回到了第一点上。

    简单地说,UART进入静默模式有2个条件:
    1> 接收到空闲帧;
    2> 接收到最高位为1,但地址与自身不相同的数据;

    退出静默模式的条件,只有一个:接收到最高位为1,但地址与自身不相同的数据。
    说实话,ST的参考手册中,有关这一点,真的有点语焉不详,没说清楚。

    另外,ST的参考手册,写的不怎么样,很多都要靠自己去分析、实验,才能明白。原本就很简单的事情,被他这么一说,就更糊涂了。越说越糊涂。

    比如:有很多外设的时钟,很简单的,不是某个时钟的分频,就是某个时钟的倍频。可是,在参考中,你就很难分析出到底是什么关系,绕来绕去,就是不从根本上说明问题。
    你看一下IIC的时钟设置,就明白ST公司写手册的人,是不是在梦游。

出0入4汤圆

发表于 2023-6-25 11:36:29 | 显示全部楼层
wuzhujian 发表于 2013-11-5 12:32
你解决了我的问题。
    现在我来解决你的问题。一点上
    1、从第一次接收到最高位为1,且地址与自身 ...
(引用自2楼)

串口的地址标记唤醒,第一个字节是地址,后面紧跟着数据,数据传送是不是只能传送小于128的?(因为数据Bit7置位后,无法收到数据)
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 10:38

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表