使用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);
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯