打印
[以太网/USB/其他总线]

dsPIC33休眠后串口接收无法唤醒?!!

[复制链接]
868|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
beijk|  楼主 | 2022-11-8 17:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
目标:    采用dsPIC33EV64GM004的串口实现休眠下的半双工通信。

问题:
1.在串口发送数据时,无法单独禁止串口接收。只能通过失能串口接收中断实现,而再次允许接收中断后,又需要UARTEN复位模块。

2.休眠下,通过串口接收中断唤醒,时灵时不灵。
    按照手册,休眠前需置位U1MODEbits.WAKE,从而实现休眠后的串口接收唤醒。但实际:①初始化时,未置位U1MODEbits.WAKE,将无法唤醒;②初始化时置位U1MODEbits.WAKE,休眠前未置位,有时可唤醒,有时不行;③初始化时,置位U1MODEbits.WAKE,休眠前置位U1MODEbits.WAKE,无法唤醒。

   该单片机的串口接收中断,时灵时不灵,感觉好不稳定(真不靠谱),求解?

使用特权

评论回复
沙发
ynwa| | 2022-11-9 13:23 | 只看该作者

不知道你这个半双工系统是怎么连接工作的。
1, 为什么接收中断要再次允许?如果你用中断方式进行接收,UART接收中断允许位xRXIE 位置 1一次就可以了(中断允许位又不会自动清零,除非你在程序中间自己将中断允许位清零)。另外,UARTEN也是使能一次就可以了,“又需要UARTEN复位模块”又是为什么?

2,执行Sleep命令前,将WAKE位置1。当RX引脚上检测到启动位时,就会唤醒芯片。



使用特权

评论回复
板凳
beijk|  楼主 | 2022-11-9 14:16 | 只看该作者
ynwa 发表于 2022-11-9 13:23
不知道你这个半双工系统是怎么连接工作的。
1, 为什么接收中断要再次允许?如果你用中断方式进行接收,UAR ...

1.电路上,我的收发环回的,发送的数据会返回到RX上。故需要发送时,禁止接收。由于没有单独的关闭接收功能,所以只能每次发送时禁止接收中断,发送完成后,再允许接收中断(此时,直接允许不管用,需要复位UARTEN)。

2.系统需要多次反复的唤醒-复位。串口模块初始化时,置位WAKE为1后,每次Sleep前置位WAKE,反而无法唤醒。
感谢回复!

使用特权

评论回复
地板
CCCq33| | 2022-12-6 10:24 | 只看该作者
beijk 发表于 2022-11-9 14:16
1.电路上,我的收发环回的,发送的数据会返回到RX上。故需要发送时,禁止接收。由于没有单独的关闭接收功 ...

不知是否可以查看一下你这部分的代码,因为我目前也遇到了这种问题,当MCU进入休眠模式后,我将WAKE置1后,我依然无法唤醒它。感谢

使用特权

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

本版积分规则

7

主题

18

帖子

1

粉丝