在編寫程序之前,先來了解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ù)設置方向和輸出使能:
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 ; } //設置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
-
寄存器
+關注
關注
31文章
5358瀏覽量
120775 -
GPIO
+關注
關注
16文章
1213瀏覽量
52210 -
MIO
+關注
關注
0文章
12瀏覽量
8181 -
Zynq
+關注
關注
10文章
610瀏覽量
47221 -
bank
+關注
關注
0文章
16瀏覽量
14861
發(fā)布評論請先 登錄
相關推薦
評論