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.
求助求助求助~!
最近用了一个AD9226读取模拟信号,然后用12根线连接到DSP做并行数据传输,
直接用GPIO读取,然后现在发现读取的速度特别慢。理论上,28335应该有25M的IO翻转速度,
但是实测只有2.5M左右。这是为什么呢?在线等。
// 测试数据,不做处理,直接看速度
float Read_9226_v(void)
{
return GpioDataRegs.GPADAT.all; // 读出所有数据然后再一步步计算 保留后面的
}
就这一个语句,就拖到了2.5M.........求分析到底是为什么。。。。。。难道读取了很多IO会变慢吗?
紧急求助。。。。。。。。。。。。。
本意是用这些数据采样之后做FFT,但是实际上非常慢。。。。。与数据手册上25M的翻转速度完全不符合。
IO时钟肯定是已经打开的,然后数字滤波也是关掉的,也就是说GPIO的时钟应该就是150M,而这个150M我
是拿示波器看过没有问题的。但是就是上面那一个语句,就耗费很多时间。不知道到底是为什么。
用这个语句采样了512点,耗费的时钟周期是 28092--28183个时钟周期,也就是其中一个点,就这样读取一次,
竟然耗费了50--60个时钟周期。。。。。。。。。为什么会这样呢?只是一个读取语句而已啊。。。。。
求大神们指点。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。不胜感激
理论速度的可信的, 只是你主频, 还有使用的指令的影响.
float Read_9226_v(void) {
return GpioDataRegs.GPADAT.all; // 读出所有数据然后再一步步计算 保留后面的
}
这里又是函数调用, 又是整数到 FLOAT 的变换, 怎么能快得起来.
可以从调试的汇编代码看看浪费了多少指令, 再看怎么优化吧