SDRAM连接在EMIF口的CE0空间,异步存储器连接在CE1空间,用DAT_copy或者是memcy函数在SDRAM中读写数据,却将异步存储器中的值单元值改变。用DAT_cpy时出现的几率比memcpy更大,而用地址单元直接赋值的方式则运行了很长时间也没有看到影响,是怎么回事?应该从哪里入手解决问题?
PCB信号质量不好
使用DAT_COPY时,DSP使用了EDMA/QDMA进行数据传输,总线上的数据速率很高,导致发生串扰现象;
用地址单元读写时,是DSP在读写存储单元,总线上的数据速率很低。
测试DSP的SDRAM信号质量的一个方法,就是用EDMA在SDRAM里面反复拷贝数据,看拷贝的数据是否正常来判断;
一般的DSP地址单元读写则不会测出信号质量问题
问题解决
最终的原因是PCB布线时,将串口芯片的复位信号与数据总线长距离平行走线,导致当数据线上不停的跳变时,对串口芯片的复位信号造成干扰,使其不完全复位,造成串口芯片寄存器的值改变,在串口芯片复位信号输入引脚与电源或地之间连接一个小电容,问题消除。
没有评论:
发表评论