历史上的今天
今天是:2024年09月05日(星期四)
2019年09月05日 | stm32中断无电平触发的解决办法
2019-09-05 来源:eefocus
这几天在用stm32读取FPGA中FIFO里的数据,遇到了不少的问题。这里就其中的一个问题写写,比较简单,就当做是打发一下时间。
问题就是,stm32的中断没有电平触发方式。stm32读取FIFO中的数据,当FIFO数据非空时给stm32中断信号——将对应的中断线拉高/低,这时stm32取FIFO中数据直至读完,FIFO将中断线电平拉低/高。然后当FIFO中又有数据时,在次发出中断信号,如此循环。
结合图说。这里简单看看FIFO的结构,如图一所示。当FIFO数据非空,给stm32信号,比如将wr_full这个引脚拉高/低。然后就让这个信号触发stm32进入中断函数中去读数据,直到stm32将数据读出后拉低/高。读取时序如图二。这样就需要将中断设置成电平触发,只要低就一直重复进中断函数里读数据。但就像前面说到的stm32不能将中断设置成电平触发的方式。
rd_clock:时钟信号 wr_full:半满信号 rd_en: 使能信号 tx_data: 数据信号
图一

图二
怎么解决呢?我的做法是这样的。如图三所示: 在箭头1处,用while循环,里面的判断条件是读取的中断输入引脚(我设置为GPIOE_Pin4)的值,如果这个引脚的值是1的话,就继续读数据。如果值为0的话就退出while循环,清中断(箭头2处),再退出中断函数。

图三
好了,这样就解决了我的问题。下面可以开始验证了。如图四所示,是为验证编写的主函数,很简单,就不说了。按照预期,应该出现的现象是:程序下载后,stm32的LED闪烁,代表程序程序运行正常。然后让FPGA给里面的FIFO写数据,半满后给出中断信号。串口调试助手可以看到,当半满信号给出被拉高后,串口调试助手中显示出事先写入FIFO中的数据,此时LED停止闪烁。半满信号拉低后,无数据显示,LED灯开始闪烁。下面,我就把程序下进去观察一下。

图四
从图五里可以可以看到,读出了数据,而且就是事先写入FIFO里的数据。另外,LED灯在串口调试助手printf出数据时,停止闪烁。数据printf完后,有开始闪。和预期一样

图五
好了。内容就这些了。第一次写,写的不怎么样,内容也比较简单。其实,实验室学长才是这次任务的主角,主要的工作是他做的,我只是打下手
史海拾趣
|
2007年国内通信行业整体并未处于高速上升的周期中,但板块内龙头企业的业绩稳固提升,依靠着海外收入规模的不断扩大,享受到了全球通信行业的景气上升。 2008年将是TD商用元年,规模建设也将拉 开序幕,行业中诸多不确定因素也将找到答案 ...… 查看全部问答> |
|
请教怎样用usb packet sensing 来判断USB 是不是USB CABLE插入的。 usb 传输是开始传的数据包是怎样的,在USB driver 在哪里去找啊,谢谢~~!!! usb 2.0… 查看全部问答> |
|
本文讨论SD卡作为存储器,I2S播放音频的解决方案SD卡数据的读取虽然很快,即使在最理想的状态下,播放一秒钟的数据,需要大约%4的时间消耗8(bit)x2(ch)x2(byte)x48000(hz)/36(MHz)=0.042s使用单流程模式,这部分损耗是无法忽略的,只能考 ...… 查看全部问答> |
|
中文名:C语言实例解析精粹 作者:曹衍龙 / 林瑞仲 / 徐慧 图书分类:软件 资源格式:PDF 版本:扫描版 出版社:人民邮电出版社 书号:I S B N:9787115163073 发行时间:2007年8月1日 地区:大陆 语言:简体中文简介: 内容简介 本书主要讲解C ...… 查看全部问答> |




