Xilinx FPGA嵌入式开发(四)— XPS General Purpose IO模块
 
- UID
- 1023229
- 来自
- 中国
|

Xilinx FPGA嵌入式开发(四)— XPS General Purpose IO模块
端口说明: 外部 IO信号连接到 GPIO_IO上即可,其余端口无需连接。
参数说明:C_BASEADDR和C_HIGHADDR必须覆盖模块所需要的地址空间,最小空间为0XFF,如果使用中断,即C_INTERRUPT_PRESENT被设置,则地址空间最小为0x1FF。C_IS_DUAL被设置,则使能通道2。C_DOUT_DEFAULT为系统复位后C_TRI_DEFAULT为系统复位后GPIO_TRI寄存器初始值。
控制方式:如果不使用中断,那么对相应通道的GPIO_DATA、GPIO_TRI、GPIO2_DATA、GPIO2_TRI四个寄存器操作即可,这四个寄存器的基地址分别为C_BASEADDR + 0x00/0x04/0x08/0x0C。其中GPIO_DATA寄存器通过一个三态驱动器或寄存器连接到外部IO,参见手册框图; GPIO的每个管脚均可通过GPIO_TRI进行单独设置为输入或输出,GPIO_TRI相应位为0则管脚配置成输出,为1则配置成输入,因此说GPIO_TRI是个输入输出配置寄存器更妥当。对每个IO位,如果配置成输入,则对此位写操作没有效果,同样配置成输出时对此位读没有效果。
因此无中断时GPIO操作流程为:通过写入GPIO_TRI寄存器相应的位来配置对应IO端口的输入/输出属性;读取/写入GPIO_DATA寄存器相应位来完成对相应IO端口的读写操作。
如果某端口被配置成中断输入管脚,则操作流程:通过写入GPIO_TRI寄存器相应位为1来配置端口为输入;通过设置GPIO的IP Interrupt Enable Register的30/31位使能通道1或通道2中断;通过设置GPIO的Global Interrupt Register的bit0为1来使能全局中断;当中断被接收到,即输入管脚信号出现变化,则读取GPIO_DATA寄存器相应位, 通过Toggle-On-Write方式来清除GPIO的IP Interrupt Status Register相应位,TOW方式即对要操作的某些位写入1,则对应位进行翻转,能够用单个写命令清除多个中断位。
注:通道如果多个端口配置成输入,则任一输入端口出现变化会触发中断;三个中断寄存器地址参见手册。中断输出端口和PLB的中断控制器核相连。
文章出自seadoncas的专栏:http://blog.csdn.net/seadoncas |
|
|
|
|
|