This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:Code Composer Studio
大家好、我想使用 F28335 ADC 模块和 FPU/DSP/rfft 函数对采样数据进行实时频率分析。 但实际上、按照 ti\controlSUITE\libs\DSP\FPU\v1_40_00_00\ ccsv5\2833x_rfft_adc_RT 示例、对512数据进行采样需要太多的时间、并且不符合 时间标准要求 .Meanwhile、我不想降低 FFT 点以确保频率分辨率。 因此、我想删除 AdcBuf 中最早的128点数据 、并使用最新的128点采样数据填充 AdcBuf、以便每个 FFT 之间的间隔是对128点进行采样所需的时间。 但我不知道如何修改 ADC ISR、这可以使阵列更新高效运行。 我刚刚使用了1通道采样。
以下是原始 ADC ISR:
中断空 ADC_ISR (空)
{
静态 uint16_t * AdcBufPtr = AdcBuf;//指向 ADC 数据缓冲区的指针
静态易失性 uint16_t GPIO34_count = 0;//引脚切换计数器
PieCtrlRegs.PIEACX.ALL = PIEACK_Group1;//必须确认 PIE 组
//--管理 ADC 寄存器
AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1;//将 SEQ1复位为 CONV00状态
AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;//清除 ADC SEQ1中断标志
//---读取 ADC 结果
* AdcBufPtR++= AdcMirror.ADCRESULT0;//读取结果
//--蛮力强制循环缓冲器
if (AdcBufPtr ==(AdcBuf + ADC_BUF_LEN))
{
AdcBufPtr = AdcBuf;//将指针回卷到开头
FFTStartFlag = 1;//一个帧数据就绪
}
//--示例:切换 GPIO18、以便我们可以使用 ADC 读取它
if (debug_toggle = 1)
{
GpioDataRegs.GPATOGGLE.bit.GPIO18 = 1;//切换引脚
}
//--示例:以0.5秒的速率切换 GPIO34 (连接到 controlCARD 上的 LED)。
//(1/48000秒/采样)*(1个采样/内部)*(x 个中断/切换)=(0.5秒/切换)
//=> x = 24000
if (GPIO34_count++> 24000)//缓慢切换以查看 LED 闪烁
{
GpioDataRegs.GPBTOGGLE.bit.GPIO34 = 1;//切换引脚
GPIO34_count = 0;//重置计数器
}
返回;
}//end of main()
我希望在完成128个数据采样后、AdcBuf (索引0-127)中最早的128个元素将被删除、而元素(索引128-511)将移至索引0-383、最新的128个数据将占据位置(384-511)
数据更新草图图:
AdcBuf 0-511
原始 索引 0-127 128-511.
|最早的数据|保留的数据|新的128个数据|
欲望指数 已删除 0-383 384-511
那么、您能给我一些 处理这个问题的建议吗? 谢谢你