ch582m的SPI的DMA缓冲地址寄存器是15位,demo的地址问题

ch582的手册里说SPI0的DMA缓冲寄存器R16_SPI0_DMA_BEG 是15位的, 而demo程序里进行SPI dma收发的时候,spiBuff是个全局的数组地址,是位于sram的按地址映射体系 ram里地址都是0x20000000以上的, 这个地址直接赋值到R16_SPI0_DMA_BEG,必然会被截断到15位。         而15位地址都在user code的flash里的。   这样的话,难道ch582m只能DMA读写小于15位地址的缓冲区,换句话说,收发只能从flash前32k读,然后写到小于32k地址的(很多是TEXT段或者RODATA)flash的某处缓冲里?  这个要求有点过头,并且flash里读写的话速度不是更慢.  


所以我的问题是,我理解是否正确,demo程序这里spi buff被截断为15位的地址是否还能正常DMA收发? 有什么模式能让DMA的写入地址变得更合理(比如大于32k地址,从RAM或者其他地方进行读写)

这个地方传入的地址可以理解为是RAM的相对地址,和code区是没有关系的。RAM共32k,也就是15位。


TECH_Hy, 多谢!我再试试,感谢除夕之夜加班解惑,祝您新年快乐!


只有登录才能回复,可以选择微信账号登录