找回密码
 立即注册
查看: 462|回复: 6

请问一个串口接收和模拟WS2812信号共存的问题

[复制链接]

该用户从未签到

1

主题

1

回帖

11

积分

新手上路

积分
11
发表于 2023-5-8 10:43:03 | 显示全部楼层 |阅读模式
我用的是STC8G2K32S4

使用了串口1、2
除了串口以外,我还有另一个引脚专门输出模拟的WS2812信号(简称模拟信号)
初始化并使能串口1、2时,模拟信号会不稳定(最直观的是WS2812的LED乱闪)
这时我在模拟信号准备发送前,关总中断(EA = 0)
并且在发送完毕时开启总中断(EA = 1)
但这会导致串口1接收不正常(串口1只用于收)(串口2倒是收、发正常)
我再把EA = 0,EA = 1这两行拿掉,导致了LED乱闪,但是串口1接收变正常了
这问题应该如何解决呢?谢谢

回复 送花

使用道具 举报

  • TA的每日心情
    奋斗
    2024-3-19 10:40
  • 签到天数: 41 天

    [LV.5]常住居民I

    10

    主题

    327

    回帖

    1439

    积分

    版主

    积分
    1439
    QQ
    发表于 2023-5-8 11:42:26 | 显示全部楼层
    以下来自工程师:
    WS2812需要严格的时序信号控制,中间不能受中断干扰。串口随时接收数据的话需要通过中断,如果关闭总中断时有数据传输的话就会导致数据丢失。两者矛盾是不可调和的。可以考虑重发机制,WS2812控制期间关闭中断,如果这段时间串口接收数据丢失的话,让对方重复发送,直到MCU收到完整串口数据并进行应答后才停止重发。
    www.STCAI.com
    回复 支持 1 反对 0 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    1

    回帖

    11

    积分

    新手上路

    积分
    11
     楼主| 发表于 2023-5-8 16:44:53 | 显示全部楼层
    STC8H8K64U 发表于 2023-5-8 11:42
    以下来自工程师:
    WS2812需要严格的时序信号控制,中间不能受中断干扰。串口随时接收数据的话需要通过中断 ...

    谢谢回复,我能否先问一个问题,如果在总中断关闭的期间,刚好串口有数据进入,此时RI会被硬件置1,是吧?在后续总中断开启的时候,就会进入中断函数了,我这样理解对吗?
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    10 小时前
  • 签到天数: 145 天

    [LV.7]常住居民III

    27

    主题

    1362

    回帖

    4233

    积分

    论坛元老

    积分
    4233
    发表于 2023-5-8 17:26:21 | 显示全部楼层
    seraph15 发表于 2023-5-8 16:44
    谢谢回复,我能否先问一个问题,如果在总中断关闭的期间,刚好串口有数据进入,此时RI会被硬件置1,是吧 ...

    理解没错,中断虽然关闭,但是只要满足中断条件,标志位就会被置位,只是不会产生中断行为。中断开启时标志位已经置位的话,就会进入中断函数。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    7 小时前
  • 签到天数: 102 天

    [LV.6]常住居民II

    41

    主题

    1018

    回帖

    7001

    积分

    荣誉版主

    冲哥视频教程和各种开源资料QQ交流群884047237,可群

    积分
    7001
    QQ
    发表于 2023-5-9 17:57:09 | 显示全部楼层
    换MCU吧,找个带DMA的能很大程度的解决问题
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    551

    主题

    9564

    回帖

    1万

    积分

    管理员

    积分
    14051
    发表于 2023-5-9 18:34:17 | 显示全部楼层
    STC8H8K64U-45MHz-LQFP48/32,  DMA 支持:【4组串口,SPI,  ADC,  TFT】
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    551

    主题

    9564

    回帖

    1万

    积分

    管理员

    积分
    14051
    发表于 2024-1-9 08:49:16 | 显示全部楼层
    SPI方案:
    只用到MOSI驱动WS2812,但由于SPI的3个信号是捆绑在一起的,MISO、SCLK不能做它用。
    ===将 MISO 不做其他用途;
    ===将 MISO管脚 先设置为对外输出0;
    ===MOSI 发送完成后,对外停止时输出的是 MISO 读到的状态, 0 ,这 STC-R&D 留了这么个绝活支持 WS2812B !!!

    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-21 19:09 , Processed in 0.064744 second(s), 53 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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