Page 1 of 1

求一个T1模组os开发adc使用dma的demo

Posted: 2025年 Sep 13日 17:56
by tts

求一个T1模组os开发adc使用dma的demo


Re: 求一个T1模组os开发adc使用dma的demo

Posted: 2025年 Sep 15日 13:56
by JSHANG

当前T1不支持adc DMA方式;
是当前的采样速度/采样率不能满足要求吗?一次采样的数据是多少, T1可以支持一次采样250个,分配buffer传下来就可以获取?在什么场景下使用,请详细描述一下需求,谢谢!


Re: 求一个T1模组os开发adc使用dma的demo

Posted: 2025年 Sep 15日 14:14
by tts

每间隔25us读取一次io,做一个解码


Re: 求一个T1模组os开发adc使用dma的demo

Posted: 2025年 Sep 15日 20:58
by JSHANG

是希望adc中断(间隔25us)通知你的应用,读取IO是读那个IO和IO的什么?读取ADC的值?解码是做什么?能否简单的画个流程图说明一下功能。


Re: 求一个T1模组os开发adc使用dma的demo

Posted: 2025年 Sep 16日 09:17
by tts

就一个433解码,但是间隔比较短(脉宽25us),我看上面说adc采样最高可以1.8m,我是想用dma采样,采一段时间再去处理,这样子应该也可以解码


Re: 求一个T1模组os开发adc使用dma的demo

Posted: 2025年 Sep 16日 09:42
by JSHANG
  1. 更新附件的tkl_adc.c, 替换你工程的\vendor\T1\tuyaos\tuyaos_adapter\src\driver\tkl_adc.c, 这个一次可以采样250个样本,具体你可以参考该c文件中的tkl_adc_unit_test的实列;如果还想提高采样率,可以修改该c文件的参数为:
    adc_desc.pre_div = 0;
    adc_desc.samp_rate = 0;

  2. 你可以用ringbuffer的方式来实现类似dma的方式,在任务x_thread_cb采样adc, 然后放到ringbuffer, 你的应用再从ringbuffer里读数据,ringbuffer有封好的API, 在tuya_ringbuf.c里面


Re: 求一个T1模组os开发adc使用dma的demo

Posted: 2025年 Sep 16日 09:48
by tts

就是不想要这种用死循环在读取的,我现在都用定时器搞了,但是感觉比较好资源而且怕受到写flash和联网的影响,所有才想用某个外设的dma模式来实现


Re: 求一个T1模组os开发adc使用dma的demo

Posted: 2025年 Sep 16日 10:47
by tts

浪费资源