如题,比如EDMA之前配置的存储1024个字节,存到512个的时候发现数据不对,想覆盖前面的512个字节从头开始存储,这个有什么办法吗?之前的帖子有说 先EDMA3DisableTransfer();再EDMA3DisableTransfer();重新配置param.这个方法好像不行.
Shine:
要等1024个字节传输完了才disable。
fei jie:
回复 Shine:
我在1024字节传输完成中断里面,EDMA3DisableTransfer(),并且关闭了spi0,处理完数据再开启的时候,原先存储位置的数据就乱了,程序停在_CODE_ACESS void free();这个大概是什么原因,我一次传输完成以后,要怎么暂停?怎么再启动呢?
fei jie:
回复 Shine:
看了一下手动传输方式,只需要向事件设置寄存器ESR相应的位写1就能触发一次SPI的EDMA传输?例如我配置paramset,一共配置了1024字节,我手动置位SER相应位,EDMA是不是等到SPI有接收数据,并且接收到1024字节后就传输完成中断?下次我需要继续接收数据就再次手动触发?
Shine:
回复 fei jie:
手动触发方式一般调试时使用的,实际是用SPI收发事件去触发EDMA。
fei jie:
回复 Shine:
那想SPI接收到1024字节,暂停存储,过段时间再开始接收,这样的操作有什么方式吗?只能关SPI?
fei jie:
回复 Shine:
关闭SPI后再次进行paramset + 使能SPI,程序会跑飞到_CODE_ACESS void free();??