永发信息网

使用DMA方式读取spiflash问题求助

答案:2  悬赏:10  手机版
解决时间 2021-12-20 03:47
  • 提问者网友:容嬷嬷拿针来
  • 2021-12-19 07:28
使用DMA方式读取spiflash问题求助
最佳答案
  • 五星知识达人网友:行路难
  • 2022-01-05 20:37
没有用过芯片的DMA功能,不够个人觉得用DMA没什么帮助,你要找出写的慢的原因。你现在写的慢肯定不是CPU送不出去数,而是Flash本事慢或者时序不合适造成的,比如SPI速率调的慢,或者时序上有错位等。
全部回答
  • 1楼网友:蕴藏春秋
  • 2022-01-05 21:21
stm32的spi使用dma传输的方法,根据自己的硬件特性需要更改一些设置。 void dma_spi2_transfer(void) { dma_cmd( dma1_channel5, disable); dma_init( dma1_channel5, &dma_initstructure); dma_clearflag(dma1_flag_tc5 | dma1_flag_ht5); dma_cmd( dma1_channel5, enable); } void dma_spi2_init(byte *data, uint32_t size) { rcc_ahbperiphclockcmd( rcc_ahbperiph_dma1, enable); dma_deinit( dma1_channel5); dma_initstructure.dma_peripheralbaseaddr = (uint32_t)&(spi2->dr); dma_initstructure.dma_memorybaseaddr = (uint32_t) data; dma_initstructure.dma_dir = dma_dir_peripheraldst; dma_initstructure.dma_buffersize = size ; dma_initstructure.dma_peripheralinc = dma_peripheralinc_disable; dma_initstructure.dma_memoryinc = dma_memoryinc_enable; dma_initstructure.dma_peripheraldatasize=dma_peripheraldatasize_halfword; dma_initstructure.dma_memorydatasize = dma_memorydatasize_halfword; dma_initstructure.dma_mode = dma_mode_normal; dma_initstructure.dma_priority = dma_priority_veryhigh; dma_initstructure.dma_m2m = dma_m2m_disable; dma_init( dma1_channel5, &dma_initstructure); spi_i2s_dmacmd(spi2, spi_i2s_dmareq_tx, enable); }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯