完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
请问下各位: DMA的中断完成标志位问题?? 总体描述: DMA存储来自SPI的500个数据,我检测中断传输完成标志位,然后再到中断服务函数中,打印出这500个数据; 问题是:是DMA将500个完全缓存到内存中后,然后中断完成标志位置1,再进入中断服务函数,打印出500个数据?还是DMA接收1个数据后,就进入中断函数打印这个数据,然后循环进行直到取满500个数据呢? 程序例子如下: while (1) { GPIO_ResetBits(AD_CS_GPIO_PORT,AD_CS_PIN); //CS置0 Delay(5); SPI_Cmd(AD_SPI, ENABLE); //SPI开启 data=SPIx_ReadWriteByte(); //产生16个周期的读取数据 SPI_Cmd(AD_SPI, DISABLE); //SPI关闭 Delay(140); GPIO_SetBits(AD_CS_GPIO_PORT,AD_CS_PIN); //CS置1 Delay(5); } ///////////////////////////中断服务函数////////////////////////////////// void DMA1_Stream0_IRQHandler(void) { for (j=500;j>1;j--) { printf("%dn",ADC_ConvertedValue[j]); } DMA_ClearITPendingBit(DMA1_Stream0,DMA_IT_TCIF0); //清除完成中断标志位 } 程序调试过程中,使能SPI后,再执行 data=SPIx_ReadWriteByte(); 不管你缓存的数据再多,都马上进入DMA传输完成中断服务函数。所以我疑惑,到底是采集完整个数据后进入中断服务函数,还是采集一个数据就进入中断函数。所以仿真不出来效果。 |
|
相关推荐
7个回答
|
|
本帖最后由 黑皮男 于 2018-3-8 21:03 编辑
DMA传输是自动触发的,不需要再在代码中显示的提供时钟信号。楼主这个传输过程不对,应该是使能DMA,并使能SPI的DMA传输请求就可以了 |
|
|
|
建议楼主在中断中设立一个标志位就退出,然后在主函数中检测标志位为1时打印500个数据后清标志位。在中断中尽量不要调用子函数,特别是打印这种慢函数。如果你在中断函数中打印500个数据,估计会与下一次中断冲突。
|
|
|
|
ctwewer 发表于 2018-8-23 13:56 元老同学的编程习惯很好呀.... PS:楼主,为什么不用cubeMx呢?为什么不用cubeMx呢?为什么不用cubeMx呢? |
|
|
|
学习了
|
|
|
|
我已经下好了,cubeMx了,只不过还没有去学习呢;难道使用不同的编程方式,这个会不会有所改善呢; 确实呢,不管如何,也要去试试 |
|
|
|
dingyang598 发表于 2018-8-23 13:47 首先谢谢您的指点啊疑问代码: while (1) { GPIO_ResetBits(AD_CS_GPIO_PORT,AD_CS_PIN); //CS置0 Delay(5); SPI_Cmd(AD_SPI, ENABLE); //SPI开启 data=SPIx_ReadWriteByte(); //产生16个周期的读取数据 SPI_Cmd(AD_SPI, DISABLE); //SPI关闭 Delay(140); //延时时间稍长,为的是让CS=1前,关闭SPI,否则CS=1与sck有重合 GPIO_SetBits(AD_CS_GPIO_PORT,AD_CS_PIN); //CS置1 i--; Delay(5); } 先前也稍稍尝试过,不用data=SPIx_ReadWriteByte(); 但是狗血的是我这款AD7357它需要满足:cs=0,16个周期SCLK,cs=1这个循环的过程,才能有输出数据,不能够将CS拉低后AD一直出数据;所以采用这样的方式, 请问下@黑皮男 ,有没有更好的解决方法呢,谢谢你啦 |
|
|
|
本帖最后由 黑皮男 于 2018-3-9 11:26 编辑 这个需要用到定时器了,使用pwm来驱动cs,pwm溢出事件触发dma的数据传输,这个我没试过,理论上是可行的 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2234 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
2053 浏览 3 评论
4664 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2197 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2734 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 15:03 , Processed in 0.885817 second(s), Total 85, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号