【文件属性】:
文件名称:dm642_PCI_INTA
文件大小:11.79MB
文件格式:RAR
更新时间:2020-10-03 09:12:07
DM642
DM642中断 DM642 PCI 中断
DM642 PCI中断管脚G4管脚PINTA,板子上连在PCI的J1 A3管脚INTA#上
首先需要看一下DM642的HSR寄存器
其中INTAM位代表是否使能PINTA管脚,写入1标识不是能,写入0标识使能,该位为只写位,读返回0,另外需要注意该寄存器只能从PCI Host侧写操作,即只能通过驱动从PC机操作。
INTVAL表示中断是否产生,即中断标识位,可以用来判断是否是DM642的中断
接下来是中断产生控制寄存器RSTSRC
其中INTREQ位为PINTA中断触发位,向该位写1即触发一次PCI中断
INTRST位为中断清除位,产生中断后使用该位来清中断
配置流程:
1. 首先在API的OpenDevice()函数中增加PCI中断配置,即配置HSR寄存器
然后需要创建一个win32事件,并把这个事件的句柄传递到驱动层,其中函数lPciIntEventSet()函数即向驱动层传递句柄。
2. 驱动sys工程需要配置的地方,
在DeviceControl例程中增加句柄接收IO项
当然首先要声明以下:
然后是中断例程ISR,进入后首先判断HSR寄存器的INTVAL位是否为1,即判断是否这次的中断为DM642产生的,不是的话返回FALSE,如果是,则清除中断,然后调用中断回调例程DpcFor_Irq,在该回调例程中设置API传递过来的事件句柄,触发事件
3. 在应用程序中,可以使用WaitForSingleObject()函数来等待该事件,当然需要把API的OpenDevice函数中创建的事件句柄传递过来