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.

如何快速的读取GPIO并保存到数组中




Hi,
项目中外部传感器,会通过GPIO1,GPIO2,GPIO3,GPIO4,GPIO5,GPIO15,GPIO16,GPIO17这8个GPIO向DSP发送数据,速度是10MHZ,连续发1000次,GPIO6在有数据的时间是高电平,其他时候低电平,
我需要把发来的数据保存到一个uint32_t[1000]数组中,或者经过移位保存到uint16_t[1000]数组中,
我使用的是28027开发板,CPU时钟是60M,我必须每6个指令周期完成一次读取和保存,尝试过RPTB指令但是好像28027不支持,这样每次循环就耗费了4个周期,剩下两个周期不够用,请问是否有其他方法可以优化速度

汇编片段:

 MOVL      XAR6,#1000
 .align 2
READ_CHAR_LOOP:
 MOVL      ACC,@0x0      ;两个周期
 MOVL      *XAR4++,ACC    ;XAR4存放的是数组地址,两个周期
 BANZ      READ_PIX_LOOP,AR6--  

另外也可以通过GPIO6的值判断循环结束,不知各位高人可否指点一二~~~

  • 有个很重要的问题你先要考虑清楚     GPIO最大的转换速度是多少  

    能达到10M吗     10M的数据速率可能达不到

    如果有外扩总线就好办了   直接接入数据总线   通过判断CS等信号

    还可以解决判断条件的问题