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.

F28M35 共享RAM访问时序的疑问,请指教。



您好:最近在用F28M35做开发。系统通过M3的SSI挂载了2个SPI接口的陀螺仪,M3在主线程空闲时便采集陀螺数据(包含6个Bytes,共48位),然后通过uDMA放到某个shared RAM Sx。我准备在shared RAM Sx中开一个30个Bytes的Buffer,这样可以存5帧陀螺数据,每当写满5帧,M3再重头开始写,如此循环,保证Buffer中始终是最新的5帧数据。C28也在空闲时(不定时)从Sx中读取数据,用来做滤波处理。

我的问题是:1、按照5.1.1.4关于仲裁机制的理解,若M3写了一半,如2帧数据时,C28同时来访问,是不是等M3写完剩下的3帧,C28才开始读走所有的5帧?若C28正在读取数据时,比如也读了一半,是不是等C28读取完成,然后M3才能开始向里写入呢?

2、由于SPI接口比较快,M3循环高速的重写定义在Sx里的30个Bytes的Buffer,C28随机读此Buffer。我这样设计可行吗?总感觉30个字节甚至更大的缓冲时,如果发生了问题1的冲突情况,处在pending状态的那个操作要等很久。

3、比如M3的SPI通过DMA至shared RAM Sx,如果此时是C28在读,M3要是等待的话,是不是SPI接口也就停止工作了?还是SPI在工作,只是数据没有写到sx中,如果是这样情况,那数据又暂存在哪儿了呢?

刚开始弄时间不长,请大虾多多指点。这里先谢过了!