在編寫程序之前,先來了解GPIO的BANK分布,在UG585文檔GPIO一章中可以看到GPIO是有4個BANK,注意與MIO的BANK區(qū)分。BANK0控制32個信號,BANK1控制22個信號,總共是MIO的54個引腳,BANK2和BANK3共能控制64個PL端引腳,每一組都有三個信號,輸入EMIOGPIOI,輸出EMIOGPIOO,輸出使能EMIOGPIOTN,共192個信號。
下圖為GPIO的控制,實驗中會用到輸出部分的寄存器,數(shù)據(jù)寄存器DATA,數(shù)據(jù)掩碼寄存器MASK_DATA_LSW,MASK_DATA_MSW,方向控制寄存器DIRM,輸出使能控制器OEN。
程序中利用以下函數(shù)設(shè)置方向和輸出使能:
int main() { XGpioPs_Config *GPIO_CONFIG ; int Status ; //通用手法,查找GPIO列表 GPIO_CONFIG= XGpioPs_LookupConfig(MIO_0_ID); //Exception的檢測 Status= XGpioPs_CfgInitialize(&GPIO_PTR, GPIO_CONFIG, GPIO_CONFIG->BaseAddr) ; if (Status != XST_SUCCESS) { return XST_FAILURE ; } //設(shè)置MIO的PIN引腳方向 XGpioPs_SetDirectionPin(&GPIO_PTR,0, GPIO_OUTPUT) ; XGpioPs_SetDirectionPin(&GPIO_PTR,13, GPIO_OUTPUT) ; //使能MIO的PIN引腳輸出 XGpioPs_SetOutputEnablePin(&GPIO_PTR,0, GPIO_OUTPUT) ; XGpioPs_SetOutputEnablePin(&GPIO_PTR,13, GPIO_OUTPUT) ; while(1) { XGpioPs_WritePin(&GPIO_PTR,0, 1) ; XGpioPs_WritePin(&GPIO_PTR,13, 0) ; usleep(100000); XGpioPs_WritePin(&GPIO_PTR,0, 0) ; XGpioPs_WritePin(&GPIO_PTR,13, 1) ; usleep(100000); } return 0; }
實現(xiàn)兩個LED的閃爍
編輯:hfy
-
寄存器
+關(guān)注
關(guān)注
31文章
5275瀏覽量
119678 -
GPIO
+關(guān)注
關(guān)注
16文章
1184瀏覽量
51754 -
MIO
+關(guān)注
關(guān)注
0文章
12瀏覽量
8146 -
Zynq
+關(guān)注
關(guān)注
9文章
607瀏覽量
47084 -
bank
+關(guān)注
關(guān)注
0文章
16瀏覽量
14820
發(fā)布評論請先 登錄
相關(guān)推薦
評論