问答

汇集网友智慧,解决技术难题

21ic问答首页 - 怎么用403A 采集类似WS2811芯片的数据?

ws2811 芯片 解码 电平 红外遥控 遥控器

怎么用403A 采集类似WS2811芯片的数据?

joyall2021-05-09
数据频率是800K, 高电平最短400ns, 最长800ns, 归零码,类似红外遥控器的信号,主要是速度比较高,请大家推荐一个比较好的方法。我想过几种方式:
1   输入捕捉,测试了一下连续不间断的切换高低电平触发输入捕捉,只能收到几个数据,后面全乱了,也可能代码没写好。
2   中断触发,类似解码红外遥控器信号
3   在主程序中死循环判断IO电平变化解码

程序功能说起来是比较简单,把接收到数据解码,再用串口把解码的数据发出去。

请高手门指点一下,谢谢!
回答 +关注 15
5565人浏览 7人回答问题 分享 举报
7 个回答
  • lyjian 发表于 2021-5-14 19:21
    假设归零码数据0高电平400ns,低电平800ns,数据1高电平800ns,低电平400ns;RESET码低电平时间280uS;一 ...

    厉害,我不会嵌入汇编到C语言里面,思维有局限,学习了,多谢!
  • lyjian 发表于 2021-5-14 19:21
    假设归零码数据0高电平400ns,低电平800ns,数据1高电平800ns,低电平400ns;RESET码低电平时间280uS;一 ...

    同样配置,另外一种算法,汇编软件接收解码一位数据需要5条指令。用HC89S003\N76E003执行时间分别是10T\13T,用16MHz频率时就可完成。
  • 本帖最后由 lyjian 于 2021-5-17 15:24 编辑
    joyall 发表于 2021-5-12 09:06
    你确定? 8位的003一个指令周期的时间是多少?

    假设归零码数据0高电平400ns,低电平800ns,数据1高电平800ns,低电平400ns;RESET码低电平时间280uS;一帧只发送24bit数据。
    那相邻两位数据最短的下降沿时间是800nS(出现在10数据时)。
    用1T 8051芯片(例如HC89SC003\N76E003\SC93F003等)来做数据接收。
    1、T0设为8自动重载定时器,工作于门控方式。溢出周期设置在约600nS。
    2、采用只判断高电平时间长短来做01判断。
    3、采用软件查询方式来做(中断响应时间太长,800nS内不够时间做处理)。
    4、采用汇编软件优化速度,接收解码一位数据需要6条指令。
    HC89S003的话,时间是13T,CPU频率需要在16.3MHz以上。
    N76E003的话,时间是20T,CPU频率需要在25MHz以上(超出这个芯片的最大工作频率没法实现,需考虑其他算法)。
    SC93F5003(或STC的STC8G之类芯片),时间是8T,CPU频率需要在10MHz以上。
    5、24位数据时间28.8uS,空闲时间280uS,CPU利用率不到1%。
  • lyjian 发表于 2021-5-9 20:18
    这点速率,用捕抓功能,003之类的8位MCU都能解得轻轻松松的。

    你确定? 8位的003一个指令周期的时间是多少?
  • joyall 发表于 2021-5-9 16:41
    我采用以下这种方式解出来了,AT32 MCU跑的是240M, 如果是跑72M的STM32,应该是解不出来。

    3   在主程序中 ...

    这点速率,用捕抓功能,003之类的8位MCU都能解得轻轻松松的。
    wangshujun 2021-6-14 16:24 回复TA
    大多数的003都没有捕获功能的,有捕获功能的32位003压力就不大了,如果还有dma的话,就更简单了 
  • 我采用以下这种方式解出来了,AT32 MCU跑的是240M, 如果是跑72M的STM32,应该是解不出来。

    3   在主程序中死循环判断IO电平变化解码
  • 跑上百M速度的CPU,捕抓这点速率的数据不费什么CPU吧?

您需要登录后才可以回复 登录 | 注册