音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

操作GPIO的方法(在Windows CE下環(huán)境下)

出處:互聯(lián)網(wǎng)    發(fā)布于:2011-09-04 14:40:10

  General Purpose Input Output (通用輸入/輸出)簡稱為GPIO,總線擴展器利用工業(yè)標準I2C、SMBus?或SPI?接口簡化了I/O口的擴展。當微控制器或芯片組沒有足夠的I/O端口,或當系統(tǒng)需要采用遠端串行通信或控制時,GPIO產(chǎn)品能夠提供額外的控制和監(jiān)視功能。GPIO是ARM芯片基本的輸入輸出通道,在ADS下操作就是一個單片機工作,直接讀寫其寄存器。在ARM9平臺上,Windows CE系統(tǒng)將GPIO的實地址(例如2410的GPIO的基地址為0x56000000)映射到虛擬地址空間(GPIO對應(yīng)為0xB1600000),這樣,通過對這段虛擬地址空間的操作,就能夠完成對GPIO或者其他片內(nèi)資源的控制、輸入輸出工作。

  GPIO分類:硬件/嵌入開發(fā) 驅(qū)動開發(fā)/開發(fā)

  每個GPIO端口可通過軟件分別配置成輸入或輸出。Maxim的GPIO產(chǎn)品線包括8端口至28端口的GPIO,提供推挽式輸出或漏極開路輸出。提供微型3mm x 3mm QFN封裝。
  要操作一個平臺的GPIO,在其對應(yīng)BSP中按照基地址,找到虛擬地址,并且找到方便操作這個地址的數(shù)據(jù)結(jié)構(gòu)就可以了,關(guān)鍵函數(shù)就是 VirtualAlloc和VirtualCopy。并且CE的方便之處就是用戶態(tài)的應(yīng)用程序仍然可以使用這兩個函數(shù)來訪問所有這些虛擬空間,對于不太復(fù) 雜的程序,甚至可以省略寫驅(qū)動直接在應(yīng)用程序中操作,其實在CE6之前,這些驅(qū)動也是工作在用戶態(tài)的。

  GPIO的優(yōu)點(端口擴展器)

  低功耗:GPIO具有更低的功率損耗(大約1μA,μC的工作電流則為100μA)。
  集成IIC從機接口:GPIO內(nèi)置IIC從機接口,即使在待機模式下也能夠全速工作。
  小封裝:GPIO器件提供的封裝尺寸 ― 3mm x 3mm QFN!
  低成本:您不用為沒有使用的功能買單!
  快速上市:不需要編寫額外的代碼、文檔,不需要任何維護工作!
  靈活的燈光控制:內(nèi)置多路高分辨率的PWM輸出。
  可預(yù)先確定響應(yīng)時間:縮短或確定外部事件與中斷之間的響應(yīng)時間。
  更好的燈光效果:匹配的電流輸出確保均勻的顯示亮度。
  布線簡單:僅需使用2條就可以組成IIC總線或3條組成SPI總線。
  于ARM 的幾組GPIO引腳,功能相似,GPxCON 控制引腳功能,GPxDAT用于讀寫引腳數(shù)據(jù)。另外,GPxUP用于確定是否使用上拉電阻。 x為A,B,,H/J, 沒有上拉電阻。

  操作Samsung S3C2410的GPIO為例,講述這個步驟:

  1.首先在BSP中的s2410.h文件,找到虛擬地址映射以及操作GPIO的寄存器結(jié)構(gòu)體(這個在自己制作一些特殊設(shè)備的BSP時,會依據(jù)需要而發(fā)生更改)
  //
  // Registers : I/O port
  //#define IOP_BASE      0xB1600000 // 0x56000000
  typedef struct  {
  unsigned int  rGPACON;  // 00
  unsigned int  rGPADAT;
  unsigned int  rPAD1[2];
  unsigned int  rGPBCON;  // 10
  unsigned int  rGPBDAT;
  unsigned int  rGPBUP;
  unsigned int  rPAD2;
  unsigned int  rGPCCON;  // 20
  unsigned int  rGPCDAT;
  unsigned int  rGPCUP;
  unsigned int  rPAD3;
  unsigned int  rGPDCON;  // 30
  unsigned int  rGPDDAT;
  unsigned int  rGPDUP;
  unsigned int  rPAD4;
  unsigned int  rGPECON;  // 40
  unsigned int  rGPEDAT;
  unsigned int  rGPEUP;
  unsigned int  rPAD5;
  unsigned int  rGPFCON;  // 50
  unsigned int  rGPFDAT;
  unsigned int  rGPFUP;
  unsigned int  rPAD6;
  unsigned int  rGPGCON;  // 60
  unsigned int  rGPGDAT;
  unsigned int  rGPGUP;
  unsigned int  rPAD7;
  unsigned int  rGPHCON;  // 70
  unsigned int  rGPHDAT;
  unsigned int  rGPHUP;
  unsigned int  rPAD8;
  unsigned int  rMISCCR;  // 80
  unsigned int  rDCKCON;
  unsigned int  rEXTINT0;
  unsigned int  rEXTINT1;
  unsigned int  rEXTINT2;  // 90
  unsigned int  rEINTFLT0;
  unsigned int  rEINTFLT1;
  unsigned int  rEINTFLT2;
  unsigned int  rEINTFLT3;  // A0
  unsigned int  rEINTMASK;
  unsigned int  rEINTPEND;
  unsigned int  rGSTATUS0;  // AC
  unsigned int  rGSTATUS1;  // B0
  unsigned int  rGSTATUS2;  // B4
  unsigned int  rGSTATUS3;  // B8
  unsigned int  rGSTATUS4;  // BC
  }IOPreg;
  將這些復(fù)制備用。
  2.在EVC中建立一個應(yīng)用程序工程,由于VirtualCopy函數(shù)沒有在頭文件中定義,但是在coredll.lib里面提供了符號連接,所以我們這里直接添加一個函數(shù)定義就OK了。
  #ifdef __cplusplus
  extern "C"
  {
  #endif
  BOOL VirtualCopy( LPVOID, LPVOID, DWORD, DWORD );
  #ifdef __cplusplus
  }
  #endif
  同時將步驟1里面的定義復(fù)制到這里。
  3.按照驅(qū)動程序里面操作的方法在應(yīng)用程序中寫GPIO操作函數(shù)
  (1)定義一個寄存器結(jié)構(gòu)體變量
  volatile IOPreg *v_pIOPRegs;
 ?。?)給這個變量分配空間并且映射到寄存器的空間上
  v_pIOPRegs = (volatile IOPreg*)VirtualAlloc(0, sizeof(IOPreg), MEM_RESERVE, PAGE_NOACCESS);
  if (v_pIOPRegs == NULL)
  {
  DEBUGMSG (1,(TEXT("v_pIOPRegs is not allocated ")));
  return TRUE;
  }
  if (!VirtualCopy((PVOID)v_pIOPRegs, (PVOID)IOP_BASE, sizeof(IOPreg), PAGE_READWRITE|PAGE_NOCACHE)) {
  DEBUGMSG (1,(TEXT("v_pIOPRegs is not mapped ")));
  return TRUE;
  }
  DEBUGMSG (1,(TEXT("v_pIOPRegs is mapped to %x "), v_pIOPRegs));
  這3個步驟之后,對v_pIOPRegs的操作將直接和GPIO的寄存器關(guān)聯(lián)
  例如:設(shè)置GPB的控制寄存器為全部Output
  v_pIOPRegs->rGPBCON=0x155555;
  設(shè)置GPB的數(shù)據(jù)寄存器輸出高電平
  v_pIOPRegs->rGPBDAT=0x3FF;
 

  
關(guān)鍵詞:GPIO

版權(quán)與免責(zé)聲明

凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負版權(quán)等法律責(zé)任。

如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機號碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買家服務(wù):
賣家服務(wù):
技術(shù)客服:

0571-85317607

網(wǎng)站技術(shù)支持

13606545031

客服在線時間周一至周五
9:00-17:30

關(guān)注官方微信號,
第一時間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫提出的寶貴意見,您的參與是維庫提升服務(wù)的動力!意見一經(jīng)采納,將有感恩紅包奉上哦!