现在开发SAADC多通道,未建立蓝牙通信时,通道数据位置OK。在建立蓝牙后,通道数据位置错位了。尝试过清缓存,卸载adc,重新初始化,没有效果。😭。请问有没有一种有效的方式呢。
connect 你说的错位指的是什么? adc想关的可以参考这个帖子
双通道采集数据,按channel通道间隔排放在缓存中。在蓝牙没有connect的时候,数据在缓存中存放分别按0,2,4和1,3,5间隔。但是在蓝牙connect后,数据存放顺序就翻转了。这个参考帖子看到了,在回调函数收到ADC数据后,清buffer,还是有问题。
connect 你这个应该是大小端的问题吧
不是大小端,是缓存中数据位置错了。未connect时,低channel的数据在前,connect后,buffer中的第一个数据成了高channel通道数据了。我再看看。
connect OK,这个你看一下是不是程序引起的;
再现这个问题很简单,直接开启1,2,3通道,使用SAADC+PPI+TIMER,但是设置采样率为20k:nrf_drv_timer_us_to_ticks(&m_timer, 50);开启蓝牙后,不到3秒,通道所采样的AD值就就混乱得一塌糊涂(指各个通道值不在BUFFER对应位置上,并不是ADC采样错误),我试过了不是PPI的问题,用timer中断触发10k采样,在蓝牙下也一样会有通道混乱的情况。目前无解
connect
connect https://devzone.nordicsemi.com/f/nordic-q-a/20291/offset-in-saadc-samples-with-easy-dma-and-ble https://github.com/crownstone/bluenet/blob/6ad42e77e06d675ff63fdff8f8fab2484d656ea1/docs/ADC.md