求助:TuyaOS V3.9.0版本的SDK 采集ADC数据不准

蓝牙 BLE设备、蓝牙 MESH设备、蓝牙 Beacon设备、Sub-G设备等


Post Reply
13757129816
Posts: 10

1、采集外部交流电电压,经过电阻分压后用bypass模式,原来是想开一个1ms的定时器,在定时器中断里做ADC采样,这样能保证交流波形的实时采样,实际上这样会死机,定时时间拉大就不会死机,说明1ms时间不够ADC转换处理。
2、如果ADC用连续工作模式,ADC回调函数进入几次后就不进入了
3、用户代码里1ms刷新一次LED显示,不开ADC的时候,LED不闪,开ADC就会闪,难道ADC转换时间需要很长?
3、求助:ADC转换开始到回调得到结果需要多少时间?


Tags:
13757129816
Posts: 10

Re: 求助:TuyaOS V3.9.0版本的SDK 采集ADC数据不准

PYH6222

13757129816
Posts: 10

Re: 求助:TuyaOS V3.9.0版本的SDK 采集ADC数据不准

PHY6222

13757129816
Posts: 10

Re: 求助:TuyaOS V3.9.0版本的SDK 采集ADC数据不准

OPERATE_RET timer_init(void)
{
//TUYA_TIMER_NUM_E timer_id = TUYA_TIMER_NUM_0;
uint32_t timer_args = 0x12345678;
TUYA_TIMER_BASE_CFG_T timer_cfg = {
.mode = TUYA_TIMER_MODE_PERIOD,
.cb = timer_cb,
.args = &timer_args,
};

extern OPERATE_RET tkl_hw_timer_use_event(UINT8_T enable);
tkl_hw_timer_use_event(1);
tkl_timer_init(timer_id, &timer_cfg);
tkl_timer_start(timer_id, TIMER_DELAY); // 1000us = 1ms

return OPRT_OK;
}

User avatar
Mumu_YU
Posts: 6

Re: 求助:TuyaOS V3.9.0版本的SDK 采集ADC数据不准

芯片内部会一次采集64个adc原始数据,在采集一半的时候会上报adc中断,看下当前的采样率为多少,便可以计算出来中断具体时间,demo中的中断处理函数中会有浮点运算,会耽误时间,看你们的需求,你们需要重新写处理函数的
需要知道你们现在的应用场景是啥样的,可以提供合适的方案。

13757129816
Posts: 10

Re: 求助:TuyaOS V3.9.0版本的SDK 采集ADC数据不准

我的需求是:
1、外部交流电信号通过电阻分压进入ADC采样,采样两个通道(电压、电流),每个通道每隔1ms采集一次AD值,采集100次,相当于采集5个波形,对采集到的AD值做均方根计算,再根据分压电阻乘上匹配增益,得到相应的电压值;
2、两个通道可以同时采集或分开采集。
3、一次采集完成后,间隔500ms再进行下一次采集,不断循环

User avatar
Mumu_YU
Posts: 6

Re: 求助:TuyaOS V3.9.0版本的SDK 采集ADC数据不准

我们最大的采样率一共有320k 160k 80k 默认是320K,大概是3.125us采集一次,一次采集后中断上来后也就是半满的情况下一共32个adc数据,一共64个数据,如果你需要1ms的采样估计得使用阻塞模式然后使用定时器定时读取adc数据,保存当前读去的数据起事件去做运算。可以查看POLLING_MODE这个代码怎么实现的,但是需要注意:不能使用adc_Poilling_evt这个里面的计算了,这个里面的操作有浮点运算,你们拿到原始adc数据后自己去处理

13757129816
Posts: 10

Re: 求助:TuyaOS V3.9.0版本的SDK 采集ADC数据不准

好的,我已经改成了polling模式,时间上还是来不及,估计就是您说说的浮点运算占用了,我改造下看看

Post Reply