你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F103RCT6 开启SPI1 DMA 一直无法读取 FALSH的数据

[复制链接]
dataozi 提问时间:2017-11-22 17:56 /
阅读主题, 点击返回1楼
收藏 1 评论19 发布时间:2017-11-22 17:56
19个回答
dataozi 回答时间:2017-11-23 11:28:48
安 发表于 2017-11-23 11:21
你的DMA里写的是SPI2,所以我就找的是SPI2的DMA说明。

哦哦 我看到了 谢谢您 我改一下 看看程序的 谢谢您
dataozi 回答时间:2017-11-23 11:30:56
安 发表于 2017-11-23 11:21
你的DMA里写的是SPI2,所以我就找的是SPI2的DMA说明。

改过来了 dma里的一个错误也改过来了 但是 还是卡在程序里


SPI_InitTypeDef         SPI_InitStructure;
       
        SPI_InitStructure.SPI_Direction=SPI_Direction_2Lines_FullDuplex;
        SPI_InitStructure.SPI_Mode=SPI_Mode_Master;
        SPI_InitStructure.SPI_DataSize=SPI_DataSize_8b;
        SPI_InitStructure.SPI_CPOL=SPI_CPOL_High;
        SPI_InitStructure.SPI_CPHA=SPI_CPHA_2Edge;
        SPI_InitStructure.SPI_NSS=SPI_NSS_Soft;
        SPI_InitStructure.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_16;
        SPI_InitStructure.SPI_FirstBit=SPI_FirstBit_MSB;
        SPI_InitStructure.SPI_CRCPolynomial = 7;

        SPI_Init(SPI1,&SPI_InitStructure);
  SPI_I2S_DMACmd(SPI1, SPI_I2S_DMAReq_Rx, ENABLE);
        SPI_Cmd(SPI1,ENABLE); //ʹÄÜSPI

        //½ûÖ¹FLASHƬѡ
        GPIO_SetBits(GPIOA,GPIO_Pin_2);
dataozi 回答时间:2017-11-23 11:44:15
本帖最后由 dataozi 于 2017-11-23 15:15 编辑
安 发表于 2017-11-23 11:21
你的DMA里写的是SPI2,所以我就找的是SPI2的DMA说明。


STM32 W25X16 DMA.zip

下载

2.71 MB, 下载次数: 9, 下载积分: ST金币 -1

回答时间:2017-11-23 14:00:17
我估计是串口的问题,你把串口的DMA去掉。我看你用的是串口1的DMA,但是配置的时候又用的串口3,不知道会不会是这引起的。我有没有资源帮忙测试。
dataozi 回答时间:2017-11-23 14:41:41
安 发表于 2017-11-23 14:00
我估计是串口的问题,你把串口的DMA去掉。我看你用的是串口1的DMA,但是配置的时候又用的串口3,不知道会不 ...

嗯 嗯 我用的是 串口1的 发送DMA 这个测试过了 是可以的 没有用到串口3的 但是我先把串口这一块 关闭了 试一下
聪神聪 回答时间:2017-11-24 11:17:55
dataozi 发表于 2017-11-23 11:27
??我写的SPI1的啊?

楼主你是写SPI1,可是我好像下不了你的代码
dataozi 回答时间:2017-11-24 11:28:50
聪神聪 发表于 2017-11-24 11:17
楼主你是写SPI1,可是我好像下不了你的代码

在第一页的 可以下载的啊?再试一次吧
无薪税绵 回答时间:2017-11-24 14:59:46
请问楼主你开中断没有?
在DMA1_Channel2_Configuration函数中,
DMA_ITConfig(DMA1_Channel2, DMA_IT_TC, ENABLE); //当DMA初始化完成后,开启传输完成中断

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

hejoin-409836 回答时间:2018-6-29 15:46:24
楼主 SPI+DMA 利用SPI_Direction_2Lines_RxOnly模式 读取flash 解决了么?
我下载了你的代码测试 id=SPI_Flash_ReadID(); SPI_Flash_Read(Rx_Buffer,1000,10);都执行正常正确,但是执行SPI_DMA_BufferRead(1000);的时候卡在 while(DMA_GetFlagStatus(DMA1_FLAG_TC2) == RESET);这里 。我的QQ,能否帮忙解决一下
dataozi 回答时间:2018-7-1 10:23:54
hejoin-409836 发表于 2018-6-29 15:46
楼主 SPI+DMA 利用SPI_Direction_2Lines_RxOnly模式 读取flash 解决了么?
我下载了你的代码测试 id=SPI_Fl ...

嗯 嗯 好友通过了
12
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版